Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1831

 
законопослушный гражданин #:

тейк улетел в космос

стоп сначала стоит, потом мгновенно улетает в космос вслед за тейком (по пути закрывая ордер)

не в этом дело как я понимаю. 

поправьте если ошибаюсь: void OnTick()

если нет открытых ордеров и есть сигнал  то vOrderOpenBuy() /  vOrderOpenSell()

далее идет void vOrderModify(int iOTi) - то есть выставляются стопы и тейки и далее проверка на ошибки. всё.

то есть по сути, до тех пор пока ордер не закроется по стопу или тейку, то как либо его скорректировать в части трейлинга- не представляется возможным.

да он и не нужен по сути. нужно одно (максиммум двух) кратное перемещение стопа и тейка. 

я несколько трейл советников проанализировал- схема у всех примерно как у вас.

сам пока думаю, как это реализовать. 

Поправил

2021.12.24 21:31:12.245 2021.11.01 00:00:00  111 inputs: Lot=0.01; StopLoss=200; TakeProfit=400; Slippage=3; Magic=1; K_Martin1=2; K_Martin2=2; K_Martin3=2; OrdersClose=5; OrdersClose2=5; DigitsLot=2; PeriodMA=14; MovingShift=1; 
2021.12.24 21:31:12.292 2021.11.01 00:05:00  111 EURUSD,M5: open #1 buy 0.01 EURUSD at 1.15583 ok
2021.12.24 21:31:12.292 2021.11.01 00:05:00  111 EURUSD,M5: modify #1 buy 0.01 EURUSD at 1.15583 sl: 1.15383 tp: 1.15983 ok
2021.12.24 21:32:52.782 2021.11.01 17:37:18  111 EURUSD,M5: modify #1 buy 0.01 EURUSD at 1.15583 sl: 1.15403 tp: 1.16003 ok
2021.12.24 21:32:52.782 2021.11.01 17:37:18  111 EURUSD,M5: Модификации ордера на покупку успешна!
2021.12.24 21:33:39.178 2021.11.01 19:06:30  111 EURUSD,M5: modify #1 buy 0.01 EURUSD at 1.15583 sl: 1.15433 tp: 1.16013 ok
2021.12.24 21:33:39.178 2021.11.01 19:06:30  111 EURUSD,M5: Модификации ордера на покупку успешна!
2021.12.24 21:34:08.768 2021.11.01 20:12:05  Tester: take profit #1 at 1.16013 (1.16014 / 1.16019)
2021.12.24 21:34:14.632 2021.11.01 20:17:55  Tester: stop button pressed
Файлы:
111.mq4  25 kb
 
законопослушный гражданин #:

тейк улетел в космос

стоп сначала стоит, потом мгновенно улетает в космос вслед за тейком (по пути закрывая ордер) 

А всё потому, что у вас не работают правила:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам

Mihail Matkovskij, 2021.12.23 22:01

В общем, правила следующие.

  • Расчётный СЛ меньше СЛ ордера (менее выгодный) - ничего не делать
  • Расчётный СЛ равен СЛ ордера - ничего не делать
  • Расчётный СЛ превысил СЛ ордера (более выгодный) - модифицировать СЛ расчётным значением
Данные правила построения трала подойдут для создания практически любого трала с любыми алгоритмами вычислений уровня СЛ.

Сделали бы уже давно и забили. Но нет...

Не выдержал и нашел вам готовый пример: https://www.mql5.com/ru/code/30808

И статью: https://www.mql5.com/ru/articles/134

Хоть там и сложно для новичков но думаю разберетесь, если тема вам действительно интересна.

Простой трейлинг-стоп
Простой трейлинг-стоп
  • www.mql5.com
Очень простой советник для сопровождения сделок трейлинг-стопом.
 
Tretyakov Rostyslav #:

Поправил

Спасибо!

не знал, что внутри  функции void можно разместить double

 
Mihail Matkovskij #:

А всё потому, что у вас не работают правила:

Сделали бы уже давно и забили. Но нет...

Не выдержал и нашел вам готовый пример: https://www.mql5.com/ru/code/30808

И статью: https://www.mql5.com/ru/articles/134

Хоть там и сложно для новичков но думаю разберетесь, если тема вам действительно интересна.

спасибо

 

Доброго времени суток!!!

Подскажите пожалуйста функция  Hour() возвращает текущий час последнего известного серверного времени  по Гринвичу или текущее время вызываемое на компьютере???

 
EVGENII SHELIPOV #:

Доброго времени суток!!!

Подскажите пожалуйста функция  Hour() возвращает текущий час последнего известного серверного времени  по Гринвичу или текущее время вызываемое на компьютере???

  

 
Tretyakov Rostyslav #:

  

А ответ на вопрос какой ???

 
EVGENII SHELIPOV #:

А ответ на вопрос какой ???

Прости я думал ты умеешь читать


 
EVGENII SHELIPOV #:

Доброго времени суток!!!

Подскажите пожалуйста функция  Hour() возвращает текущий час последнего известного серверного времени  по Гринвичу или текущее время вызываемое на компьютере???

А кто вам сказал, что серверное время обязательно должно быть по Гринвичу?

 

Функция для мт4 и мт5 - время старта, стопа и .....

//+------------------------------------------------------------------+
//|                                                   time Start.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input datetime InpHoursFrom = D'1970.01.01 02:00'; // Start (Only time)
input datetime InpHoursTo   = D'1970.01.01 23:00'; // Stop (Only time)
input bool     InpClose     = true;                // Close Time
input datetime InpHoursTo1  = D'1970.01.01 23:00'; // Close (Only time)
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(TimeStartStop(InpHoursFrom,InpHoursTo))
     {
      Print("Start time :",InpHoursFrom," || ","Stop time :",InpHoursTo);
     }
   if(TimeClose(InpHoursTo1))
     {
      if(InpClose)
         Print("close_time :",InpHoursTo1);
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
bool TimeStartStop(datetime HoursFrom,datetime HoursTo)
  {
//---
   MqlDateTime currTime;
   TimeToStruct(TimeLocal(),currTime);
   long hour0=currTime.hour*60*60+currTime.min*60+currTime.sec;
   if((HoursFrom<HoursTo && hour0>=HoursFrom && hour0<HoursTo) ||
      (HoursFrom>HoursTo && (hour0<HoursTo || hour0>=HoursFrom)))
      return(true);
   return(false);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
bool TimeClose(datetime HoursTo)
  {
//---
   MqlDateTime currTime;
   TimeToStruct(TimeLocal(),currTime);
   long hour0=currTime.hour*60*60+currTime.min*60+currTime.sec;
   if(hour0<HoursTo)
      return(false);
   if(hour0>HoursTo+1*10)
      return(false);
   return(true);
  }
//+------------------------------------------------------------------+
Причина обращения: