![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Versão Ema Cross?
Hi,
Meu teste anterior do EMACross D1 TF
Abraçoolá SpecII,
Muito obrigado por compartilhar conosco!
Qual é a versão do EMA_CROSS que você usou?
Múltiplos pares!
Oi Codersguru
Estou usando a versão sem SL, mas modifiquei o código para múltiplos pares e fiz bug para lotes duplos hehehe.
Eu irei corrigir o bug para lotes duplos mais tarde.
AbraçoObrigado novamente
! Eu poderia ver seu código para múltiplos pares?
Mais uma vez obrigado
Olá, estou postando o código. Está certo?
Obrigado
//| EMA_CROSS.mq4 |
//| Coders Guru |
//| https://www.forex-tsd.com |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| TODO: Add Money Management routine |
//+------------------------------------------------------------------+
#property copyright "Coders Guru"
#property link "https://www.forex-tsd.com"
//---- input parameters
extern double TakeProfit=130;
extern double Lots=1;
extern double TrailingStop=20;
extern int ShortEma = 10;
extern int LongEma = 80;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Crossed (double line1 , double line2)
{
static int last_direction = 0;
static int current_direction = 0;
//Don't work in the first load, wait for the first cross!
static bool first_time = true;
if(first_time == true)
{
first_time = false;
return (0);
}
if(line1>line2)current_direction = 1; //up
if(line1<line2)current_direction = 2; //down
if(current_direction != last_direction) //changed
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (0); //not changed
}
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int OrdersPerSymbol=0;
//----
int cnt, ticket;
double SEma, LEma;
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
OrdersPerSymbol=0;
for(cnt=OrdersTotal();cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() )
{
OrdersPerSymbol++;
}
}
SEma = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,0);
LEma = iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,0);
static int isCrossed = 0;
isCrossed = Crossed (LEma,SEma);
// total = OrdersTotal();
if(OrdersPerSymbol < 1)
{
if(isCrossed == 1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"EMA_CROSS",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
if(isCrossed == 2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"EMA_CROSS",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
//OrderPrint();
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
/* REMOVED - Trailling stop only close
if(isCrossed == 2)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
return(0); // exit
}
*/
// check for trailing stop
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// should it be closed?
/* REMOVED - Trailling stop only close
if(isCrossed == 1)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
return(0); // exit
}
*/
// check for trailing stop
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+olá SpecII,
Muito obrigado por compartilhar conosco!
Qual é a versão do EMA_CROSS que você usou?Oi Codersguru
estou usando uma versão sem SL, mas modifiquei o código para múltiplos pares e fiz um bug para lotes duplos hehehe.
Eu irei corrigir o bug para lotes duplos mais tarde.
Abraço
Inversa
Para mim, parece-me um inverso.
O código é definido para comprar quando o EMA longo se torna maior do que o EMA curto.
e para vender quando o EMA longo se move abaixo do EMA curto.
Suponho que é por isso que ela é bem sucedida - como se ensina a fazer exatamente o contrário em outro lugar.
Também estou tendo múltiplos negócios, na primeira versão do EA, ainda tenho que experimentar a segunda versão. Isto se deve a dados históricos incorretos?
Vou testar hoje à noite.
Obrigado
portanto
então se compra quando a Sema se move abaixo da Lema
e vende quando a Sema se move acima da Lema
Ou estou novamente confuso?
quando eu prendo ea
Quando prendo a ea a um gráfico recebo um "X" - sem rosto sorridente - sobre a ea ou sobre mim.
consegui pô-lo a funcionar - tive que apertar o botão "play experts".
Olá,
Eu sou o espírito de testar esta EA com uma demonstração de contas. As primeiras impressões são muito boas. No momento, ela abre apenas um par, apesar de 4 diagramas abertos. Mas, a cada abertura de Trades, ela está na boa direção positiva e descansa. Eu declaro anexado desde ontem.
Olá, eu sou espírito para testar este EA com uma demonstração de conta. As primeiras impressões são muito boas. No momento, ela abre apenas um par, apesar de 4 diagramas abertos. Mas a cada abertura de Trades ela está na boa direção positiva e descansa. Eu declaro anexado desde ontem.
Modifiquei este EA para usar o número mágico. Isso proporcionará o comércio em múltiplos pares de uma só vez. Modifiquei o parâmetro maigc para ser diferente para cada par.
Olá Kalenzo,
Obrigado por esta modificação, sempre também rápida e eficaz, aplaudir![](https://c.mql5.com/forextsd/smiles/biggrin.png)