Ema Cross! - página 20

 

EMA testador transversal

Olá Codersguru!

Primeiramente quero começar agradecendo os fantásticos cursos de aprendizagem de MT. Sem eles, não sei como eu teria aprendido mql tão rápido. Você é o HOMEM!!

Recentemente, tenho programado os ea's para poder negociar de várias maneiras diferentes para que eu possa testar os ea's em uma conta ao vivo enquanto tenho vários ajustes rodando no mesmo par e no mesmo TF. Adoro a idéia da EMA e codifiquei uma EA que usa seus critérios. Esta versão será capaz de negociar uma instância quase ilimitada do EA com configurações diferentes no mesmo TF/PAIR ou qualquer combinação. O programa estabelece uma GlobalVariable na MT e a utiliza para criar uma identificação única que é então inserida no comentário de negociações abertas. O EA então processa as ordens com base nesta identificação única.

Além disso, adicionei uma função para escrever um arquivo csv que se assemelha a uma declaração de negociação que inclui as configurações que estavam em vigor no momento do teste (pasta expert/files). Após a negociação desta forma, haverá muitas negociações de todas as diferentes EA, então é essencialmente aqui que você vai para obter as stmnts de negociação precisas.

Fora da caixa, deve funcionar exatamente como o V2. Há algumas características extras que acrescentei no caso de alguém querer ir ao ar.

Agradeço tudo, e estou curioso para ver quais são seus pensamentos sobre este aqui!

Nic

Arquivos anexados:
 
hellkas:
Olá Hendrick

Poderia, por favor, me dizer suas configurações e TF...

Obrigado

Olá Hellkas,

Estes são meus pares (O prazo para todos os pares é dia)

USDJPY, EURCHF, AUDUSD, EURAUD, USDCAD, USDCHF, AUDCAD, EURCHF.

Configurações: padrão; exceto Reversão=Verdadeiro e Lotes=0,1

Saudações!

 
Nicholishen:
Olá Codersguru!

O programa estabelece uma GlobalVariable na MT e a utiliza para criar uma identificação única que é então inserida no comentário de negociações abertas. A EA então processa as ordens com base nesta identificação única.

Nic

Nic

Esta é uma ótima maneira de rastrear seus pedidos e qualquer arquivo separado que sua EA possa criar, mais uma vez mostra sua capacidade de ver coisas que outros não podem ver. A razão pela qual estou escrevendo é que eu fiz a mesma coisa, usando o OrderComment() para etiquetar as negociações e descobri que isso representava um problema futuro. Nisso;

1) o campo de comentário é um parâmetro de string, ao qual seu corretor pode anexar seus próprios comentários. quando sua ordem é fechada com take profit ou um stop loss sendo atingido, por exemplo, o corretor anexará uma mensagem ao seu campo de comentário. Se você não estiver ciente disto, poderá causar alguns erros no futuro se você acessar seu histórico de negociação de conta usando seu comentário original sem saber que ele também foi anexado. também se uma ordem for expirada, seus comentários serão reescritos com uma mensagem do corretor.

2) A função GlobalVariable() é do tipo número duplo. que é convertida em string quando usada como entrada de seu OrderComment. Misturar tipos de variáveis não é um bom hábito de programação, pois isso poderia causar futuros erros de mixmatch de variáveis se você voltar a alterar seu código.

Para fugir do acima, usei o MagicNumber feild da função OrderSend(). O código abaixo é a função chamada que utilizo para gerar um número único que é usado como você descreveu, para rastreamento de pedidos e manutenção de registros. Ele irá gerar um número de 100 a 999. Uma vez que o número é usado, o novo número é incrementado por um para o próximo EA a ser usado. Se você colocar a chamada para esta função na área de função init() de seu código, ele será visto apenas uma vez no início e permanecerá com sua EA até que ela seja desligada.

Exemplo;

int OrderID = 0;

int init() {

OrderID = GetTagNumber()

...

...

...

retorno( 0 );

} // Terminar init, função:

Você pode então usar o OrderID se quiser rotular seus negócios, entradas de arquivos, etc...

//«« <<<>>> »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»

int

GetTagNumber() { // Sets the SystemTag To....

int PullNumber = 0;

if( GlobalVariableCheck( "PullTag ( Do Not Delete )" ) ) {

PullNumber = GlobalVariableGet( "PullTag ( Do Not Delete )" );

} else {

PullNumber = 100;

} // End If, GlobalVariableCheck:

GlobalVariableSet( "PullTag ( Do Not Delete )", PullNumber + 1 );

if( GlobalVariableGet( "PullTag ( Do Not Delete )" ) > 999 ) {

GlobalVariableSet( "PullTag ( Do Not Delete )", 100 );

} // End If, GlobalVariableSet:

return( PullNumber );

} // End Function, GetTagNumber:

A variável OrderID tem que ser declarada fora da função init() para que o resto de seu programa possa ver seu valor.

Você pode mudar os limites inferior e superior (100 - 999) para o que quiser ou remover o limite superior e ele continuará a aumentar sem reinicializar.

O motivo do nome da variável ... "PullTag ( Não Excluir )" ... é porque agora você pode ver e excluir as variáveis globais do lado de fora do EA. O não excluir é uma mensagem de aviso que aparece quando você visualiza suas variáveis globais. Se você excluir a variável PullTag, ela será reiniciada em 100 novamente na próxima inicialização da EA. As GlobalVariables mantêm seu valor mesmo quando você desliga sua estação de trabalho.

O CockeyedCowboy

Como sempre, eu digo demais.

 

...assim como eu estava me perguntando por que o SL/TP não apareceu na história. Obrigado pela perspicácia! Vou incorporar isto em meu código. Muito obrigado por ser um recurso tão valioso!!

 

Nic

Se você abrir a janela do seu terminal comercial e clicar na guia histórico da conta,> clique com o botão direito do mouse em qualquer área do terminal,> clique no menu etiqueta> comentários. Você poderá visualizar seus comentários e quaisquer comentários anexados de seu corretor (Eles estão usalmente dentro de [ .... ] ) dentro de sua janela do terminal.

O CockeyedCowboy

 

Sim... Notei que todos os TP/SL estão anexados como [tp][sl]. Eu gosto mais do seu código.

 

o que acontece guru dos codificadores? o que acontece? Eu carrego sua última versão de ema cross ea no post 369, você vê o que acontece com o teste grv mas me diga por que

Arquivos anexados:
1_4.gif  8 kb
 

Pessoal, por favor,

me ajude com algo. Por que a opção REVERSAL está incluída neste EA? Não entendo porque negociar novamente o ponto de ambos os EMA Cross.

Obrigado...

Até agora com REVERSAL verdadeiro = ganhei mais de 100 pips, mas é uma loucura. Quero dizer, quando o ponto de cruzamento EMA se apaga, este EA abrirá comércio absolutamente oposto, então você perderá dinheiro...

 

pro-tendência versus contra-tendência

glader:
Pessoal, por favor,

me ajude com algo. Por que a opção REVERSAL está incluída neste EA? Não entendo porque negociar novamente o ponto de ambos os EMA Cross.

Obrigado...

Até agora com REVERSAL verdadeiro = ganhei mais de 100 pips, mas é uma loucura. Quando o EMA cruzar os pontos de referência, este EA abrirá comércio absolutamente oposto para que você perca dinheiro...

Bem, você pode optar por trabalhar em prol da tendência.

IMHO, na contra-tendência abrimos a posição ao melhor preço e suportamos algumas perdas no início, então ganhamos a quantia máxima que poderíamos ganhar!

 

dados insuficientes!

Audio:
o que acontece guru dos codificadores? o que acontece ? Eu carrego sua última versão de ema cross ea no post 369, você vê o que acontece com o teste grv, mas me diga por que

Áudio,

Por favor, não chore .

Eu acho que você não tem dados históricos suficientes.

Dê uma olhada no meu teste de costas e teste de frente !

Arquivos anexados: