![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Версия Ema Cross?
Привет,
Мой форвард-тест от EMACross D1 TF
СпасибоЗдравствуйте, SpecII,
Большое спасибо, что поделились с нами!
Какую версию EMA_CROSS вы использовали?
Множественные пары!
Привет Codersguru
Я использую версию без SL, но я изменил код для нескольких пар и сделал ошибку для двойных лотов, хехе.
Я исправлю ошибку для двойных лотов позже.
СпасибоСпасибо еще раз
! Могу ли я увидеть ваш код для нескольких пар?
Еще раз спасибо
Здравствуйте, я выкладываю код. Он правильный?
Спасибо
//| 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);
}
//+------------------------------------------------------------------+Здравствуйте SpecII,
Большое спасибо, что поделились с нами!
Какую версию EMA_CROSS вы использовали?Привет Codersguru
Я использую версию без SL, но я изменил код для нескольких пар и сделал ошибку для двойных лотов, хе-хе.
Я исправлю ошибку для двойных лотов позже.
Спасибо
Инверсия
На мой взгляд, это похоже на инверсию.
Код настроен на покупку, когда длинная EMA становится больше короткой EMA
и продавать, когда длинная ЕМА опускается ниже короткой ЕМА.
Я полагаю, что именно поэтому он успешен - ведь в других местах учат делать прямо противоположное.
Я также получаю множественные сделки на первой версии советника, мне еще предстоит попробовать вторую версию. Может ли это быть связано с неправильными историческими данными?
Я буду тестировать сегодня вечером.
Спасибо
так что
поэтому покупают, когда Сема движется ниже Лемы
и продает, когда Сема движется выше Лемы.
Или я снова запутался?
когда я прикрепляю ea
Когда я прикрепляю ea к графику, я получаю "X" - без улыбающегося лица - на ea или на мне.
заработало - пришлось нажать кнопку play experts.
Здравствуйте,
Я тестирую этот советник на демонстрационном счете. Первые впечатления очень хорошие. На данный момент он открывает только одну пару, несмотря на 4 открытые диаграммы. Но с каждым открытием сделок он находится в хорошем положительном направлении и отдыхает. Выписку со вчерашнего дня прилагаю.
Здравствуйте, я тестирую этот советник на демонстрационном счете. Первые впечатления очень хорошие. На данный момент он открывает только одну пару, несмотря на 4 открытые диаграммы. Но с каждым открытием сделок он находится в хорошем положительном направлении и отдыхает. Выписку со вчерашнего дня прилагаю.
Я модифицировал этот советник, чтобы использовать магическое число. Это обеспечит торговлю на нескольких парах одновременно. Измените параметр maigc, чтобы он был разным для каждой пары.
Здравствуйте, Калензо,
Спасибо за эту модификацию, всегда также быстро и эффективно, спасибо.![](https://c.mql5.com/forextsd/smiles/biggrin.png)