[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 283

 
Shniperson:

Olá! Você pode me dizer como "loopar" a verificação da barra para cima/para baixo? Ou seja, como posso descrever esta condição "mais curta"?

Fechar[0]>Abrir[0]&& Fechar[1]>Abrir[1]&& Fechar[2]>Abrir[2]&& Fechar[3]>Abrir[3]&&& Fechar[4]>Abrir[4]&& Fechar[5]>Abrir[5]&& Fechar[6]>Abrir[6]&& Fechar[7]>Abrir[7]

bool Res=true;
for(int i=0;i<8;i++) Res = Res && Close[i]>Open[i];

Obrigado de antemão.


Você poderia fazer isso, mas não é provável que seja mais rápido. As condições precisam ser um pouco ampliadas
 

Não sei como transformar isto em uma vida, é possível fazer isso?

Minha estratégia é idealmente aberta manualmente às 8h00 no terminal, se houver lucro, então até o dia seguinte. Se o lucro não vai na minha direção, então com prejuízo reverto posição + - não importa o que aconteça, não abro mais posições este dia e espero até as 8 horas da manhã. Ou seja, deve haver no máximo dois pedidos e não mais. Se não obtivemos lucro, mas a rede de arrasto se mudou para o Breakeven, nós também capotamos. É claro que podemos tratar de tudo, mas nosso trabalho não nos permite monitorar as posições. Seria melhor colocar uma ordem e deixar a EA seguir a posição. Anexei o LER apenas para testá-lo no Testador de Estratégia.

Isto é tudo o que eu precisava.

extern int Hour_To_Open = 08; //час открытия (-1 - не задано), терминальное время
extern int Minute_To_Open = 00; //минута открытия (-1 - не задано), терминальное время
extern double TakeProfit = 50;
extern double StopLoss = 30;
extern double Lot = 0.1;
extern int MagicNumber = 655433;


//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if((Hour()==Hour_To_Open) && (Minute()==Minute_To_Open)) 
{ //если настало время открытия сделок
int total = OrdersTotal();
for (int i = 0; i < total; i++) 
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
return(0);
}
} 
int ticket=1;
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>iRSI(NULL,0,14,PR ICE_CLOSE,1))
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid - StopLoss * Point,Bid + TakeProfit * Point,"My order #",MagicNumber,0,Blue);
if(ticket<0)
{
Sleep(30000);
}
}
else
{
ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Ask + StopLoss * Point,Ask - TakeProfit * Point,"My order #",MagicNumber,0,Red);
if(ticket<0)
{
Sleep(30000);
}
}
} //end if((Hour()==Hour_To_Open) && (Minute()==Minute_To_Open))
//----
return(0);
}
//+------------------------------------------------------------------+

Tenho esta parada, tirei-a de outro EA mas não funciona para mim.

extern bool UseTrailing = true; //включение/выключение T-SL
extern int TrailingStop = 50; // Фиксированный размер трала
extern int TrailingStep = 1; // Шаг трала

//+-------------------------------------------------------------------------------------------------------------------+
//| трейлинг стоп лосс |
void T_SL() {
int i=0;
for(i=0; i<OrdersTotal(); i++) {
if(!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
if(OrderSymbol() != Symbol()) continue; 

if(OrderType()==OP_BUY) {
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TrailingS top*Point,Digits)) {
if(NormalizeDouble(OrderStopLoss(),Digits)<Normali zeDouble(Bid-(TrailingStop+TrailingStep-1)*Point,Digits))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid-TrailingStop*Point,Digits), OrderTakeProfit(), 0, CLR_NONE);
} //end if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TrailingS top*Point,Digits))
} //end if(OrderType()==OP_BUY)

if(OrderType()==OP_SELL) {
if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TrailingStop*Point,Dig its)) {
if(NormalizeDouble(OrderStopLoss(),Digits)>Normali zeDouble(Ask+(TrailingStop+TrailingStep-1)*Point,Digits))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask+TrailingStop*Point,Digits), OrderTakeProfit(), 0, CLR_NONE);
} //end if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TrailingStop*Point,Dig its))
} //end if(OrderType()==OP_SELL)
} //end for(i=0; i<OrdersTotal(); i++)
} //end void T_SL()
//| трейлинг стоп лосс |
//+-------------------------------------------------------------------------------------------------------------------+

Como eu o prendo? E reversão, deve funcionar apenas uma vez após a abertura do cargo

 

O inverso deve estar procurando em algum lugar por aqui, eu levo ou não?

bool OrderCloseBy(int ticket, int oposto, cor=CLR_NONE)
Fechando uma posição aberta com outra posição aberta no mesmo instrumento, mas na direção oposta. Retorna VERDADEIRO após a conclusão bem sucedida da função. Retorna FALSO quando a função falha. Para obter informações sobre o erro, ligue para a função GetLastError().
Parâmetros:
bilhete - Número de série único do pedido a ser fechado.
em frente - O número seqüencial único da ordem oposta.
Cor - Cor da seta de fechamento na tabela. Se o parâmetro estiver faltando ou seu valor for CLR_NONE, a seta não é mostrada no gráfico.
Exemplo:
 if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75) { OrderCloseBy(order_id,opposite_id); return(0); }

 
Sr. Profissional, o senhor poderia me dizer se é possível executar um roteiro a partir da barra de ferramentas? No momento, o roteiro escrito tem que ser executado pelo navegador, ou com uma combinação predefinida de teclas (que por alguma razão funciona apenas de vez em quando). Pergunta - é possível, por exemplo, atribuir ao ícone do painel "ferramentas gráficas" uma nova função e executar o script a partir da barra de ferramentas? Talvez haja outras opções?
 

Boa tarde.

Você pode me dizer onde posso ver o código original para a função OrderSend()?

Obrigado de antemão.

 
kon12:
Sr. Perito, aconselha, é possível executar o roteiro a partir da barra de ferramentas? No momento, o roteiro tem que ser executado ou a partir do navegador, ou usando uma combinação predefinida de teclas (que de alguma forma funciona apenas uma vez). Pergunta - é possível, por exemplo, atribuir uma nova função ao ícone no painel "ferramentas gráficas" e executar o script a partir da barra de ferramentas? Existem outras opções?

Não, mas você pode usar o arrastar e soltar do objeto Label como exemplo ...

Download , extrair no terminal com substituição, permitir a importação da dll na configuração do terminal, anexar o Expert Advisor to Experts, digitar o nome do script a ser lançado, reiniciar o terminal ou compilar.

O Expert Advisor implementa - carrega o roteiro no gráfico especificado por seu nome ao arrastar o objeto sobre o gráfico.

      ServiceLoadScript(WindowHandle(Symbol(), Period()), "ZZ_All_Quotings 4.10425", /*<---- Имя загружаемого скрипта.*/  false);
Arquivos anexados:
trade_1.mq4  2 kb
 

Boa tarde!!!

Por favor, informe. Estou escrevendo um EA que trabalha na quebra do canal, colocando dois pendentes atrás do canal. Quando um deles aciona, outro deve ser removido. Como implementá-lo no código?

 
Parn25:

Boa tarde!!!

Por favor, informe. Estou escrevendo um EA que trabalha na quebra do canal, colocando dois pendentes atrás do canal. Quando um deles aciona, o outro deve ser apagado. Como implementá-lo no código?


Talvez seja uma boa idéia - eu mesmo não fiz isso - se sua EA permitir apenas uma ordem de mercado (de 2 pendentes que foram colocadas anteriormente), então monitore (acompanhe) a disponibilidade de sua ordem (por mágico) no mercado e, assim que ela aparecer, apague a pendente. Isso é tudo. Se você quiser apagar um pedido pendente, procure no Google algo como "delete order site:mql4.com".
 

Olá!

Executando o EA no testador. O servidor é de quatro dígitos. Ao colocar ordem de compra ou venda no tronco diz

2011.10.23 15:27:26 2010.12.16 06:16 test_sovetnik GBPUSD,H1: abrir #1 comprar 0.10 GBPUSD a 1.5551 sl: 1.4551 tp: 1.5586 ok

Mas abre em 1.55512 ! Com os cinco dígitos. Em seguida, os pedidos pendentes são colocados a quatro dígitos e acionados também a quatro dígitos. Mas OP_SELL e OP_BUY abrem apenas por cinco dígitos!

Eu faço NormalizarDuplo(Perguntar,Dígitos);

Nada funciona! Por favor, aconselhe como resolver este problema...

Você pode, é claro, ignorar o último dígito. O erro não ocorre, mas em nome da pureza do experimento, preciso que todas as minhas ofícios sejam feitas em quatro dígitos.

 
ZZZEROXXX:
Aconselhe como fixar uma EA, por exemplo, médias móveis padrão, para transformá-la em um roteiro a fim de executá-la em um período de tempo não padrão.


UP. eu gostaria que você me dissesse como transformar um EA em um roteiro em poucas palavras

Razão: