ajuda a fineturn EA

 

alguém pode me ajudar Fine tune a EA por favor

pode fazer melhor - tudo o que eu vejo compra e vende nos lugares errados

Arquivos anexados:
jbtest3.mq4  5 kb
 
delcor wrote >>

alguém pode me ajudar Fine tune a EA por favor

pode fazer melhor - tudo o que eu vejo compra e vende nos lugares errados

Você quer explicar sua estratégia? Precisamos verificar se ela está codificada de acordo com a estratégia declarada antes de podermos afiná-la.

Se os códigos estão corretos e estamos recebendo negócios ruins da EA, então a estratégia está em falta? A estratégia está funcionando bem com o comércio manual?

 
ronaldosim:

Você quer explicar sua estratégia? Precisamos verificar se ela está codificada de acordo com a estratégia declarada antes de podermos afiná-la.

Se os códigos estão corretos e estamos recebendo negócios ruins da EA, então a estratégia está em falta? A estratégia está funcionando bem com o comércio manual?

obrigado por ter voltado

a estratégia é - só deve comprar ou vender quando ema cross. há um cenário que funciona bem e se só comprar e vender nas crosses terá lucro

amarrei como está, mas não compra na cruz dos 2 ema's

deve fechar a ordem aberta e comprar quando o ema curto cruza o ema longo e o inverso. nesta fase eu quero que ele só faça isso.

então podemos fazer a 2ª etapa. sem gerenciamento de dinheiro nesta etapa. sou novo em programação, mas quero aprender mais

você pode me ajudar

como faz o trabalho no eur/usd 15 e1h tf - mas não o suficiente

 
delcor wrote >>

obrigado por ter voltado

a estratégia é - só deve comprar ou vender quando ema cross. há um cenário que funciona bem e se só comprar e vender nas crosses terá lucro

amarrei como está, mas não compra na cruz dos 2 ema's

deve fechar a ordem aberta e comprar quando o ema curto cruza o ema longo e o inverso. nesta fase eu quero que ele só faça isso.

então podemos fazer a 2ª etapa. sem gerenciamento de dinheiro nesta etapa. sou novo em programação, mas quero aprender mais

você pode me ajudar

como faz o trabalho no eur/usd 15 e1h tf - mas não o suficiente

eu suspeito que sim; pois a EMA cruza seu código está incorreta

Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);

você precisa de dois iMA cada um para o longema e shortema

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

LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);

SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);

LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);

e para verificar a existência de cruz

se (SEMA1>LEMA1 && SEMA2<LEMA2) enviar pedido de compra

e para venda

se (SEMA1<LEMA1 && SEMA2>LEMA2) enviar ordem de venda

 
ronaldosim:

eu suspeito que sim; pois a EMA cruza seu código está incorreta

Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);

você precisa de dois iMA cada um para o longema e shortema

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

LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);

SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);

LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);

e para verificar a existência de cruz

se (SEMA1>LEMA1 && SEMA2<LEMA2) enviar pedido de compra

e para venda

se (SEMA1<LEMA1 && SEMA2>LEMA2) enviar ordem de venda

ok então o

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

LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);

SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);

LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);

deve ser colocado no "check for open orders conditions - below "get moving average" (verificar condições de pedidos em aberto - abaixo da "média móvel)

e o "

se (SEMA1>LEMA1 && SEMA2<LEMA2) enviar pedido de compra" onde ?

também o LEMA1 E o LEMA2 devem ser definidos na parte superior


ainda novo neste

meu skype é delcor59 se você quiser me skype

obrigado por sua ajuda

 
delcor wrote >>

ok então o

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

LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);

SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);

LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);

deve ser colocado no "check for open orders conditions - below "get moving average" (verificar condições de pedidos em aberto - abaixo da "média móvel)

e o "

se (SEMA1>LEMA1 && SEMA2<LEMA2) enviar pedido de compra" onde ?

também o LEMA1 E o LEMA2 devem ser definidos na parte superior

ainda novo neste

meu skype é delcor59 se você quiser me skype

obrigado por sua ajuda

algo como isto modificando os próprios códigos....

CheckForOpen()
{
duplo Ema;
int res;
//---- go trading only for first tiks of new bar
if(Volume[0]>1) voltar;
//---- get Moving Average
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
duplo SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
duplo LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
duplo SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
duplo LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);

//---- condições de venda
// if(Abrir[1]>Ema && Fechar[1]<Ema)
se (SEMA1<LEMA1 && SEMA2>LEMA2)
{
res=OrderSend(Symbol(),OP_SELLL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
retornar;
}
//---- condições de compra
// if(Abrir[1]<Ema && Fechar[1]>Ema)
se (SEMA1>LEMA1 && SEMA2<LEMA2)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
retornar;
}
//----
}

verificação nula CheckForClose()
{
duplo Ema;
//---- go trading only for first tiks of new bar
if(Volume[0]>1) voltar;
//---- get Moving Average
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
duplo SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
duplo LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
duplo SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
duplo LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continua;
//---- verificar tipo de pedido
if(OrderType()==OP_BUY)
{
// if(Abrir[1]>Ema && Fechar[1]<Ema)
if (SEMA1<LEMA1 && SEMA2>LEMA2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
}
if(OrderType()==OP_SELL)
{
// if(Abrir[1]<Ema && Fechar[1]>Ema)
if (SEMA1>LEMA1 && SEMA2<LEMA2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
intervalo;
}
}
//----
}

 
ronaldosim:

algo como isto modificando os próprios códigos....

CheckForOpen()
{
duplo Ema;
int res;
//---- go trading only for first tiks of new bar
if(Volume[0]>1) voltar;
//---- get Moving Average
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
duplo SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
duplo LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
duplo SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
duplo LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);

//---- condições de venda
// if(Abrir[1]>Ema && Fechar[1]<Ema)
se (SEMA1<LEMA1 && SEMA2>LEMA2)
{
res=OrderSend(Symbol(),OP_SELLL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
retornar;
}
//---- condições de compra
// if(Abrir[1]<Ema && Fechar[1]>Ema)
se (SEMA1>LEMA1 && SEMA2<LEMA2)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
retornar;
}
//----
}

verificação nula CheckForClose()
{
duplo Ema;
//---- go trading only for first tiks of new bar
if(Volume[0]>1) voltar;
//---- get Moving Average
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
duplo SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
duplo LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
duplo SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
duplo LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continua;
//---- verificar tipo de pedido
if(OrderType()==OP_BUY)
{
// if(Abrir[1]>Ema && Fechar[1]<Ema)
if (SEMA1<LEMA1 && SEMA2>LEMA2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
}
if(OrderType()==OP_SELL)
{
// if(Abrir[1]<Ema && Fechar[1]>Ema)
if (SEMA1>LEMA1 && SEMA2<LEMA2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
intervalo;
}
}
//----
}

obrigado novamente

alguma coisa não está certa. quando eu testei o Ea, ele mostrou que só compra e não vende.

 
delcor wrote >>

mais uma vez obrigado

alguma coisa não está certa. quando eu testei o Ea, ele mostrou que só compra e não vende.

notou que dependendo de qual ordem é disparada primeiro, ou seja, comprar ou vender, uma vez que a cruz começa a disparar uma ordem e quando a cruz oposta fecha a ordem; em yr start() quando você verificar a existência de uma ordem de mercado, você evitará que uma ordem do tipo nunca dispare, ou seja, quando você começar com a compra, ela será sempre comprada; quando você começar com uma ordem de venda, ela será sempre uma ordem de venda; retire essa condição de verificação

 
ronaldosim:

notou que dependendo de qual ordem é disparada primeiro, ou seja, comprar ou vender, uma vez que a cruz começa a disparar uma ordem e quando a cruz oposta fecha a ordem; em yr start() quando você verificar a existência de uma ordem de mercado, você evitará que uma ordem do tipo nunca dispare, ou seja, quando você começar com a compra, ela será sempre comprada; quando você começar com uma ordem de venda, ela será sempre uma ordem de venda; retire essa condição de verificação

estão se referindo à condição de verificação na parte inferior da EA

//+
+
//| Função Start |
//+ +
void start() {
// check for history and trading
if(Bars<100 ||| IsTradeAllowed()==false) return;
/// calculate open orders by current symbol
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose();
//

}


porque também há

CheckForOpen()

verificação nula CheckForClose()

 
delcor:

estão se referindo à condição de verificação na parte inferior da EA

//+------------------------------------------------------------------+
//| Função Start |
//+------------------------------------------------------------------+
início nulo()
{
//---- verificação de histórico e comércio
if(Bars<100 || IsTradeAllowed()==falso) retorna;
//---- calcular ordens abertas pelo símbolo atual
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
senão CheckForClose();
//----

}


porque também há

CheckForOpen()

verificação nula CheckForClose()




Diga-me se existe um sistema de teste na programação da EA para mostrar o que acontece quando esta EA é executada.

 
delcor wrote >>

estão se referindo à condição de verificação na parte inferior da EA

//+------------------------------------------------------------------+
//| Função Start |
//+------------------------------------------------------------------+
início nulo()
{
//---- verificação de histórico e comércio
if(Bars<100 || IsTradeAllowed()==falso) retorna;
//---- calcular ordens abertas pelo símbolo atual
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
senão CheckForClose();
//----

}

porque também há

CheckForOpen()

verificação nula CheckForClose()

if(Bars<100 || IsTradeAllowed()==falso) retorna;
//---- calcular ordens abertas pelo símbolo atual
CheckForOpen();
CheckForClose();
//----

Razão: