Como codificar? - página 341

 

Alguém pode ter a gentileza de me ajudar a resolver isto:

Há um problema com o código que anexei abaixo desta mensagem..., ele sempre dá o sinal no início da formação de uma vela!

isto me levou a entrar no comércio mais tarde, especialmente em prazos mais altos. Você pode gentilmente nos ajudar para que o iny só dê o alerta quando o preço atual da ponte MA subir para comprar e descer para vender, em vez de esperar pelo início de outra vela

Obrigado Arquivos anexos

Arquivos anexados:
smacd.mq4  4 kb
 

Olá Mladen, você sabe o que posso usar para acionar meus critérios de abertura comercial?

O que eu quero saber é como posso acionar uma troca se a vela fecha acima ou abaixo da linha média móvel em 10pips.

O sistema acionará a troca com base no fato de fechar acima ou abaixo da linha média móvel.

Estou pensando em usar o iClose, mas não tenho idéia de como implementá-lo. Agradeço a sua ajuda.

Obrigado.

Ryan

 
tkuan77:
Olá Mladen, você sabe o que posso usar para acionar meus critérios de abertura comercial?

O que eu quero saber é como posso acionar uma troca se a vela fecha acima ou abaixo da linha média móvel em 10pips.

O sistema irá acionar a troca com base no fato de fechar acima ou abaixo da linha de média móvel.

Estou pensando em usar o iClose, mas não tenho idéia de como implementá-lo. Agradeço a sua ajuda.

Obrigado.

Ryan

Olá, Mladen,

Fiz o código, parece estar funcionando, no entanto, o comércio às vezes não é acionado quando os critérios são cumpridos e não tenho idéia de como fazer a partir daqui.

//+------------------------------------------------------------------+

//---- parâmetros de entrada

duplo TakeProfit externo = 250,0;

duplo externo Lots = 0,1;

StopLoss duplo externo = 200,0;

//+------------------------------------------------------------------+

//| função de iniciação de especialista |

//+------------------------------------------------------------------+

int init()

{

//----

//----

retorno(0);

}

//+------------------------------------------------------------------+

//| função de desinicialização especializada |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

retorno(0);

}

//+------------------------------------------------------------------+

//| função de início especializado |

//+------------------------------------------------------------------+

duplo pBid, pAsk;

datatime newbar;

int start()

{

//+------------------------------------------------------------------+

if(newbar==Time[0])return(0);

else newbar=Time[0];

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

double Up_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_HIGH,0);

duplo Dwn_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_LOW,0);

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//... Troca de gatilhos

//+------------------------------------------------------------------+

int ticket, total;

duplo CD_Close = iClose(NULL,0,1);

total = OrdensTotal(); // verificar o número total de negócios atualmente abertos

if(total < 2)

{

if (CD_Fechar >=Acima_MA+50*Ponto)//Hora()==Entrada_Hora_1º && Minuto()==Entrada_Minuto_1º)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,

"My EA",Entry_magicNo_1st,0,Green);

retornar(0);

}

if (CD_Close <= Dwn_MA-50*Point)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,

"My EA",Entry_magicNo_1st,0,Red);

retorno(0);

}

retorno(0);

}

retorno(0);

}

//+------------------------------------------------------------------+

 
tkuan77:
Olá, Mladen,

Fiz o código, parece estar funcionando, no entanto, o comércio às vezes não é acionado quando os critérios são cumpridos e não tenho idéia de como fazer a partir daqui.

//+------------------------------------------------------------------+

//---- parâmetros de entrada

duplo TakeProfit externo = 250,0;

duplo externo Lots = 0,1;

StopLoss duplo externo = 200,0;

//+------------------------------------------------------------------+

//| função de iniciação de especialista |

//+------------------------------------------------------------------+

int init()

{

//----

//----

retorno(0);

}

//+------------------------------------------------------------------+

//| função de desinicialização especializada |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

retorno(0);

}

//+------------------------------------------------------------------+

//| função de início especializado |

//+------------------------------------------------------------------+

duplo pBid, pAsk;

datatime newbar;

int start()

{

//+------------------------------------------------------------------+

if(newbar==Time[0])return(0);

else newbar=Time[0];

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

double Up_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_HIGH,0);

duplo Dwn_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_LOW,0);

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//... Troca de gatilhos

//+------------------------------------------------------------------+

int ticket, total;

duplo CD_Close = iClose(NULL,0,1);

total = OrdensTotal(); // verificar o número total de negócios atualmente abertos

if(total < 2)

{

if (CD_Fechar >=Acima_MA+50*Ponto)//Hora()==Entrada_Hora_1º && Minuto()==Entrada_Minuto_1º)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,

"My EA",Entry_magicNo_1st,0,Green);

retornar(0);

}

if (CD_Close <= Dwn_MA-50*Point)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,

"My EA",Entry_magicNo_1st,0,Red);

retorno(0);

}

retorno(0);

}

retorno(0);

}

//+------------------------------------------------------------------+

Você pode mostrar alguns casos em que deveria ter desencadeado uma troca e não o fez?

 

Olá, Mladen,

Veja em anexo a captura de tela.

Cumprimentos

Ryan

Arquivos anexados:
untitled.jpg  42 kb
 

Olá Mladen, poderia ser alguma forma de erro em algumas linhas que está causando este erro?

Atenciosamente

 
tkuan77:
Olá Mladen, poderia ser alguma forma de erro em algumas linhas que está causando este erro? Atenciosamente

tkuan77

Como primeiro passo, verifique o diário e a guia de especialistas do terminal se alguma mensagem de erro está escrita lá fora

 
mladen:
tkuan77 Como primeiro passo, verifique o diário e a guia de especialistas do terminal se alguma mensagem de erro está escrita lá fora

Oi mladen, obrigado, a questão já foi resolvida.

No entanto, minha próxima pergunta é como ordenar os negócios de acordo?

Por exemplo, como ordenar os ofícios:

Quantidade total de negócios em qualquer momento = 2

1 comércio para cada conjunto de critérios. Como faço para garantir que o sistema não acione mais de 1 comércio para cada conjunto particular se os critérios forem atendidos mais de uma vez?

Abaixo estão meus códigos de referência:

total = OrdensTotal(); // verificar o número total de negociações atualmente abertas

if(total < 2)

{

se (Hora()==Entrada_Hora_1º || Hora()==Entrada_Hora_2º)

{

// Se não houver comércio atualmente aberto sob este critério, verifique se as condições são cumpridas, se sim, acione uma negociação, se não, não acione uma negociação.

}

se (Hora()==Entrada_Hora_3ª || Hora()==Entrada_Hora_4ª)

{

// Se não houver comércio atualmente aberto sob este critério, verifique se as condições são cumpridas, se sim, acione uma negociação, se não, não acione uma negociação.

}

}

Agradeça seu conselho. Obrigado.

Cumprimentos

 

Como exatamente as ordens de corretagem ECN devem ser tratadas?

 
apprentice coder:
Como exatamente as ordens de corretagem ECN devem ser tratadas?

codificador aprendiz

A única diferença é que em um corretor ECN você primeiro abre um pedido com campos 0 sl e tp, e depois modifica o pedido (se necessário) para definir sl e tp, enquanto em um corretor "regular" você pode colocar sl e tp junto com a abertura do pedido. Todo o resto é exatamente o mesmo