MakarFX, в последнем твоём редактировании, по итогу, происходит открытие ордера с 1ой свечи если быстрая пересекла медленные и затем вернулась в ту же зону, где и MACD. А она лоджна подтвердится 4 раза и ордер должен открыться на 4 ой свече. Прикрепил файл, что-бы визуально было понятней.
SanAlex, можешь увеличить масштаб, что0бы были видны отчётливо бары MACD и быстрая как пересекает медленные? А то я с трудом разглядедь могу
Пробуй
#define MagicNumber 122122externstring s1 = "Trading options";
externdouble Lot = 0.01; // размер лота 0 - авт.расчетexterndouble StopLoss = 40; // стоплоссexterndouble TakeProfit = 10; // тейкпрофитexterndouble TrailStop = 21; // уровень без убыткаexternint Trailing = 0; // трейлинг стоп 1 вкл. 0 выкл.externint Breakeven = 0; // перенос стоп лосса в без убытокexternstring s2 = "Day & Hour";
externint HrStart = 0; // время начала торговлиexternint HrEnd = 23; // время окончания торговлиexternint Monday = 1; // Понедельник 1 вкд. 0 выкл.externint Tuesday = 1; // Вторникexternint Wednesday = 1; // Средаexternint Thursday = 1; // Четвергexternint Friday = 1; // Пятница//+------------------------------------------------------------------+// параметры индикаторовdouble MovingPeriodLw = 5;
double MovingPeriodS1 = 75;
double MovingPeriodS2 = 85;
double StopLevel;
double TrailStep = 3; // шаг трейлинг стопаbool OrderBuy = true, OrderSell = true, Order = false, Init = true;
int timeprev = 0, Slip = 3.0, start, cnt;
//+------------------------------------------------------------------+//| Init function |//+------------------------------------------------------------------+voidOnInit()
{
if (Digits == 3 || Digits == 5) { // Пересчет для 5-ти знаков
TakeProfit *= 10;
TrailStop *= 10;
TrailStep *= 10;
StopLoss *=10;
Slip *=10;
}
return;
}
//+------------------------------------------------------------------+//| Start function |//+------------------------------------------------------------------+void start()
{
StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);
if(CheckForOpen()!=start)
{start=CheckForOpen(); cnt=0;}
else
{cnt+=1;}// Определение направления пересечения мувингов// if (Init) InitMetod(); // Трейлинг стоп открытых позицийif (Trailing != 0 ) RealTrailOrder(TrailStop, TrailStep, StopLevel, MagicNumber);
// Ожидание нового бара на графикеif(timeprev == Time[0]) return;
timeprev = Time[0];
if(cnt==3)
{// Открытие ордера по методу Пуриаif(CheckForOpen()==0 && OrderBuy==true) // Если сигнал для покупок
{
if(OrderSend(Symbol(),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",MagicNumber,0,Blue))
{OrderBuy=false; Print("BUY OK");}
}
if(CheckForOpen()==1 && OrderSell==true) // Если сигнал для продаж
{
if(OrderSend(Symbol(),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",MagicNumber,0,Red))
{OrderSell=false; Print("SELL OK");}
}
}
}
//+------------------------------------------------------------------+//| Check for open order conditions |//+------------------------------------------------------------------+int CheckForOpen() // Открытие ордера по методу Пуриа
{
double malw,mas1,mas2,macd;
int res=-1, buy=0, sell=0;
// Считывание параметров индикаторов 3 свечи (4ой)
malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,3);
mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,3);
mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,3);
macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,3);
if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;}
if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;}
// Считывание параметров индикаторов 2 свечи (3ей)
malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,2);
mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,2);
mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,2);
macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,2);
if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;}
if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;}
// Считывание параметров индикаторов 1 свечи (2ой)
malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,1);
mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,1);
mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,1);
macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,1);
if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;}
if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;}
// Считывание параметров индикаторов 0 свечи (1ой)
malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,0);
mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,0);
mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,0);
macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,0);
if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;}
if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;}
if(buy <4) OrderBuy=true;
if(sell<4) OrderSell=true;
if(buy ==4) { res=0; OrderSell=true;}
if(sell==4) { res=1; OrderBuy =true;}
return(res);
}
SanAlex, так суть в том, что то что я хочу реализовать, будет ещё лучше + я этим уже несколько дней занимаюсь, и мне уже принцпиально интересно как должен выглядеть правильный код. И на будущее будет очень полезным, и советник реально хорошим будет. Но и твой вариант хорош, ничего сказать против не могу
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
MakarFX, в последнем твоём редактировании, по итогу, происходит открытие ордера с 1ой свечи если быстрая пересекла медленные и затем вернулась в ту же зону, где и MACD. А она лоджна подтвердится 4 раза и ордер должен открыться на 4 ой свече. Прикрепил файл, что-бы визуально было понятней.
SanAlex, можешь увеличить масштаб, что0бы были видны отчётливо бары MACD и быстрая как пересекает медленные? А то я с трудом разглядедь могу
Пробуй
SanAlex, можешь увеличить масштаб, что0бы были видны отчётливо бары MACD и быстрая как пересекает медленные? А то я с трудом разглядедь могу
но то что я там добавил - Цель эксперта в другом заключается. Цель - набрать по всем открытым парам общую прибыль и закрыть всех экспертов.
MakaeFX, теперь он почему-то открывает не с 4ой свечи-подтверждения, а фактически с 7ой. Скрин с тестера прикрепил
MakarFX, прикрепил советника
именно MetaEditor - version 5.00 build 2382
Не понятно как ты скомпилировал файл, который ты выложил...
Вот пробуй и добавляй что надо еще
MakarFX, а это норм, если тестирую по всем тикам - с 01.08.21. по 03.09.21. - тогда 46 ордеров
а если тест только по ценам открытия за тот же период - 29 ордеров ?
+ несколько ордеров, если по тикам, открылись явно не по цене открытия. Я прикрепил скриншот, на нём показано