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?
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
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
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
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;
}
}
//----
}
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.
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
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()
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.
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();
//----
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
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