Ema Cross! - página 55

 

Ema_cross_2

Caros codificadoresguru,

Obrigado por sua EA e por seu conceito de contra-tendência,

Mesmo pela primeira vez, eu e meu amigo somos céticos quanto a este método de contra-tendência, mas depois de estudar e testar sua EA, nós surpreendemos com os resultados

Ainda continuamos o teste EMA_CROSS_2 com o prazo H1, mas encontramos algo interessante no par EUR/USD 03 de abril de 2006, depois de cruzar para baixo, esta posição de venda aberta EA em vez de comprar posição.... é um ato normal? (ver anexo)

Obrigado...

dedywind

Arquivos anexados:
 

7

Oi flutua,

Eu escrevi 10 EAs para o concurso, mas eles tinham muito a testar.

Portanto, selecionarei 3 deles para o concurso e enviarei os 7 aqui Eles estão lucrando em testes futuros.

Espero que gostem!

 

Codificadores,

Vou voltar e ler o fio completo, mas não consigo lembrar se isto foi abordado.

Quando você fecha a Plataforma, seja InterbanFX, MT4, ects., notei que se eu não estiver em uma posição, e eu tenho a última MA EA sobre ela, executará automaticamente uma negociação.

Como evitar que isso aconteça toda vez que reabrirmos o software.

obrigado

 

Novato precisa de ajuda com MA cross EA...

codersguru:
amarnath,

Este é o meu relatório (em anexo)!

E esta é a versão que eu usei (em anexo)!

Acho que não podemos retransmitir somente no backtest. Mas eu no meu teste usei a data de 2005/01/01 até hoje!

Alguém testou o MoneyMaker?

Olá CodersGuru,

Modifiquei um pouco seu EMA_Cross EA original para trabalhar com um EMA 5 e uma cruz de 10 LWMA com um filtro RSI e Stochastic. Enquanto este EA abre ordens LONG e SHORT e fecha fora delas corretamente, ele não me permite simultaneamente FECHAR uma posição e depois ABRIR imediatamente uma nova posição na direção oposta (por exemplo: verdadeira técnica de negociação "swing"). Assim, eu perco em uma grande quantidade de potenciais negócios de swing.

Além disso, às vezes as condições cruzadas de EMA1 > WMA1 e EMA2 < WMA2 podem não desencadear uma compra se as duas médias móveis do período passado tivessem o mesmo valor ou dentro de 1 a 2 pips um do outro. Assim, eu gostaria de acrescentar no código para procurar esse tipo de condição (o que muitas vezes acontece) para acionar uma entrada.

Eu não sou um codificador, então eu esperava que vocês pudessem me ajudar a descobrir como fazer isso.

Incluí meu código na linha abaixo, assim como o arquivo MQ4 como um anexo. Qualquer ajuda seria muito, muito apreciada!

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

//| 5/10 MA Cross w RSI e Stoch Filter |

//| Ian Boersma - Copyright 2006 |

//| |

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

#propriedade copyright "Ian Boersma

//---- parâmetros de entrada

duplo TakeProfit externo=100;

duplo externo Lots=1;

double TrailingStop=35; double TrailingStop=35;

Exterior int ShortEma = 5;

Exterior int LongWma = 10;

externo int RSIPer = 14;

Exterior int StochK = 10;

Exterior int StochD = 3;

Exterior int StochSlow = 3;

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

//| 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 +

//| Aqui é onde inicializamos as variáveis internas para uso do programa + |

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

int start()

{

//----

//LotCalc Declarações

int cnt, bilhete, total;

//MAs e Filtro de Declarações Variáveis

RSI duplo;

duplo Stoch;

duplo EMA1,EMA2,WMA1,WMA2;

if(Bars<100)

{

Impressão ("barras com menos de 100");

retornar(0);

}

if(TakeProfit<10)

{

Imprimir ("TakeProfit menos de 10");

retornar(0); // verificar TakeProfit

}

//MA e Filtro Definição de Variável

EMA1 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,0);

WMA1 = iMA(NULL,0,LongWma,0,MODE_LWMA,PRICE_CLOSE,0);

EMA2 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);

WMA2 = iMA(NULL,0,LongWma,0,MODE_LWMA,PRICE_CLOSE,1);

RSI = iRSI(NULL,0,RSIPer,PRICE_CLOSE,0); RSI = iRSI(NULL,0,RSIPer,PRICE_CLOSE,0);

Stoch = iStochastic(NULL,0,StochK,StochD,StochSlow,MODE_SMA,0,MODE_MAIN,0); RSI = iRSI(NULL,0,RSIPer,PRICE_CLOSE,0);

int isCrossed = 0;

if (EMA1 > WMA1 && EMA2 = 50 && Stoch < 80)

{isCrossed = 1;

}

se (EMA1 = WMA2 && RSI 20)

{isCrossed = 2;

}

// Verificamos o terminal comercial para ver se ele está vazio

total = EncomendasTotal();

if(total < 1) // Se o terminal de negociação estiver vazio...

{

if(isCrossed == 1) //if cross indica balanço LONG...

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,0,Ask+TakeProfit*Point, "My EA",12345,0,Yellow);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Imprimir("Pedido aberto : ",OrderOpenPrice());

}

else Print("Erro na abertura do pedido de compra : ",GetLastError());

retornar(0);

}

if(isCrossed == 2) //se a cruz indicar CURTO balanço...

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,2,0,Bid-TakeProfit*Point, "My EA",12345,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Imprimir("Pedido de venda aberto : ",OrderOpenPrice());

}

else Print("Erro na abertura do pedido de VENDA : ",GetLastError());

retornar(0);

}

retorno(0);

}

//Punção de saída de posição...

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

OrderPrint();

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // posição longa é aberta

{

// Verifique se temos uma condição de cruz curta...

if(isCrossed == 2)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // posição fechada

retornar(0); // sair

}

// Verifique nossa parada móvel para ver se ela precisa ser ajustada

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

retornar(0);

}

}

}

}

senão // ir para a posição curta

{

// Verifique se temos uma condição de cruz LONGO...

if(isCrossed == 1)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // posição fechada

retornar(0); // sair

}

// Verifique nossa parada móvel para ver se ela precisa ser ajustada

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) ||| (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

retornar(0);

}

}

}

}

}

}

retorno(0);

}

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

Arquivos anexados:
 
iboersma:
Olá CodersGuru,

Modifiquei um pouco seu EMA_Cross EA original para trabalhar com um EMA 5 e uma cruz de 10 LWMA com um filtro RSI e Stochastic. Enquanto este EA abre ordens LONG e SHORT e fecha fora delas corretamente, ele não me permite simultaneamente FECHAR uma posição e depois ABRIR imediatamente uma nova posição na direção oposta (por exemplo: verdadeira técnica de negociação "swing"). Assim, eu perco em uma grande quantidade de potenciais negócios de swing.

Além disso, às vezes as condições cruzadas de EMA1 > WMA1 e EMA2 < WMA2 podem não desencadear uma compra se as duas médias móveis do período passado tivessem o mesmo valor ou dentro de 1 a 2 pips um do outro. Assim, eu gostaria de acrescentar no código para procurar esse tipo de condição (o que muitas vezes acontece) para acionar uma entrada.

Eu não sou um codificador, então eu esperava que vocês pudessem me ajudar a descobrir como fazer isso. ....

Vou verificar isso!

 
codersguru:
Vou verificar!

Obrigado por sua ajuda...

- Ian

 
codersguru:
Vou verificar!

CodificadoresGuru,

Anexei uma versão mais recente do meu EA ao identificar um problema para determinar a condição 'isCrossed' (tentei adicionar os filtros RSI e Stoch à condição original isCrossed em vez de adicioná-la como um qualificador apenas para entrar em uma posição.

Espero que isto faça mais sentido...

- Ian

Arquivos anexados:
 
iboersma:
Obrigado por sua ajuda...- Ian

Acho que o ponto 1 está funcionando (quando fechar comprar abrir vender e quando fechar vender abrir comprar) Veja o teste atestado.

Arquivos anexados:
 
codersguru:
Acho que o ponto 1 está funcionando (quando fechar comprar abrir vender e quando fechar vender abrir comprar) Veja o teste atestado.

Legal. Isso definitivamente se parece com o sistema do tipo stope and reverse que estou procurando (embora o lucro líquido não pareça muito encorajador...:)

Estou usando este sistema manualmente há cerca de uma semana e tenho tido alguns resultados muito encorajadores, por isso será interessante obter de volta os números completos dos testes para ver se estou em alguma coisa ou se estou apenas com sorte...

- Ian

 
gody6000:
esta é a 2a semana lolhttp://9q9q.com/March/1144348631.zip

Desculpe! mas o que é isso?