Эма Кросс! - страница 4

 

Версия Ema Cross?

SpecII:
Привет,

Мой форвард-тест от EMACross D1 TF

Спасибо

Здравствуйте, SpecII,

Большое спасибо, что поделились с нами!

Какую версию EMA_CROSS вы использовали?

 

Множественные пары!

SpecII:
Привет Codersguru

Я использую версию без SL, но я изменил код для нескольких пар и сделал ошибку для двойных лотов, хехе.

Я исправлю ошибку для двойных лотов позже.

Спасибо

Спасибо еще раз ! Могу ли я увидеть ваш код для нескольких пар?

 
codersguru:
Еще раз спасибо ! Могу ли я увидеть ваш код для нескольких пар?

Здравствуйте, я выкладываю код. Он правильный?

Спасибо

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

//| 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);

}

//+------------------------------------------------------------------+
 
codersguru:
Здравствуйте SpecII,

Большое спасибо, что поделились с нами!

Какую версию EMA_CROSS вы использовали?

Привет Codersguru

Я использую версию без SL, но я изменил код для нескольких пар и сделал ошибку для двойных лотов, хе-хе.

Я исправлю ошибку для двойных лотов позже.

Спасибо

 

Инверсия

На мой взгляд, это похоже на инверсию.

Код настроен на покупку, когда длинная EMA становится больше короткой EMA

и продавать, когда длинная ЕМА опускается ниже короткой ЕМА.

Я полагаю, что именно поэтому он успешен - ведь в других местах учат делать прямо противоположное.

Я также получаю множественные сделки на первой версии советника, мне еще предстоит попробовать вторую версию. Может ли это быть связано с неправильными историческими данными?

Я буду тестировать сегодня вечером.

Спасибо

 

так что

поэтому покупают, когда Сема движется ниже Лемы

и продает, когда Сема движется выше Лемы.

Или я снова запутался?

 

когда я прикрепляю ea

Когда я прикрепляю ea к графику, я получаю "X" - без улыбающегося лица - на ea или на мне.

заработало - пришлось нажать кнопку play experts.

 

Здравствуйте,

Я тестирую этот советник на демонстрационном счете. Первые впечатления очень хорошие. На данный момент он открывает только одну пару, несмотря на 4 открытые диаграммы. Но с каждым открытием сделок он находится в хорошем положительном направлении и отдыхает. Выписку со вчерашнего дня прилагаю.

 
BrunoFX:
Здравствуйте, я тестирую этот советник на демонстрационном счете. Первые впечатления очень хорошие. На данный момент он открывает только одну пару, несмотря на 4 открытые диаграммы. Но с каждым открытием сделок он находится в хорошем положительном направлении и отдыхает. Выписку со вчерашнего дня прилагаю.

Я модифицировал этот советник, чтобы использовать магическое число. Это обеспечит торговлю на нескольких парах одновременно. Измените параметр maigc, чтобы он был разным для каждой пары.

Файлы:
 

Здравствуйте, Калензо,

Спасибо за эту модификацию, всегда также быстро и эффективно, спасибо.