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

 
makssub #:
Добрый день. Использую вот этот код для закрытия всех ордеров. Но заметил если их очень много, то не все закрываются. Что можно добавить, чтобы закрыть все, пусть даже не с первого раза. Если можно, сразу пример.

https://www.mql5.com/ru/docs/common/sleep

   if(AccountInfoDouble(ACCOUNT_EQUITY)<=TargetLoss || AccountInfoDouble(ACCOUNT_EQUITY)>=TargetProfit)
     {
      AllClose();
      Sleep(1000);
      AllClose();
      ExpertRemove();
     }
//---
Документация по MQL5: Общие функции / Sleep
Документация по MQL5: Общие функции / Sleep
  • www.mql5.com
Sleep - Общие функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Последний вопрос )

Кто ни переносил своего советника с платформы mql в windows или linux. Объясню, как то давно писали скрипты для му онлайн, чтобы игра сама качала героя, пока спишь. Так вот вопрос, может кто переносил советника, за пределы платформы? Типо торгует человек, а не робот.

если, что не так объяснил, сорри )

 
makssub #:

Последний вопрос )

Кто ни переносил своего советника с платформы mql в windows или linux. Объясню, как то давно писали скрипты для му онлайн, чтобы игра сама качала героя, пока спишь. Так вот вопрос, может кто переносил советника, за пределы платформы? Типо торгует человек, а не робот.

если, что не так объяснил, сорри )

на сервер Windows (VDS или VPS) ставится MetaTrader, в нём запускается советник. И всё: солдат спит, служба идёт :-)

а если нужно чтобы делался вид что торгует человек (типо роботам там нельзя), то бегите оттуда..Платформа алгоритмическая и рассчитана что торговля ведётся если не полностью роботом, то при активном его участии.

Хотя кликеров (софт который "кликает" в кнопки эмулируя человека) кто-то использует. И во фрилансе периодично запрашивают и в интернете есть продаваемые.

 

здравствуйте!

может кто встречал советник или кусок кода (для включения в код сова), для изменения SL TP для следующего ордера?

Скажем ордер открылся лотом 0.01  SL= 30  TP=100

следующий   открылся лотом 0.02    SL= 30  TP=95

и т.д. 

или какими функциями это описать?

у меня сейчас так назначается   SL  TP:

//+-----------------------------------------------------------------------------------------------+
//|                                                                    Функция модификации ордера |
//+-----------------------------------------------------------------------------------------------+
void vOrderModify(int iOTi)
  {
   int    iOTy = -1;    // Тип ордера
   double dOOP = 0;     // Цена открытия ордера
   double dOSL = 0;     // Стоп Лосс
   int    iMag = 0;     // Идентификатор советника
   double dSL  = 0;     // Уровень убытка
   double dTP  = 0;     // Уровень прибыли

// Выберем по тикету открытый ордер, получим некоторые значения
   if(OrderSelect(iOTi, SELECT_BY_TICKET, MODE_TRADES))
     {
      iOTy = OrderType();
      dOOP = OrderOpenPrice();
      dOSL = OrderStopLoss();
      iMag = OrderMagicNumber();
     }

// Если ордер открыл данный советник, то входим в условие
   if(OrderSymbol() == Symbol() && OrderMagicNumber() == iMag)
     {
// Если Стоп Лосс текущего ордера равен нулю, то модифицируем ордер
      if(dOSL == 0)
        {
         if(iOTy == OP_BUY)
           {
            dSL = NormalizeDouble(dOOP - StopLoss * Point, Digits);
            dTP = NormalizeDouble(dOOP + TakeProfit * Point, Digits);

            bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0, clrNONE);
           }

         if(iOTy == OP_SELL)
           {
            dSL = NormalizeDouble(dOOP + StopLoss * Point, Digits);
            dTP = NormalizeDouble(dOOP - TakeProfit * Point, Digits);

            bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0, clrNONE);
           }
        }
     }
  }
 

Господа профессионалы подскажите, что-то не могу додуматься (только вообще начал изучать программирование)

Вот есть часть советника, не важно какого. В функции OnInit() есть два оператора возврата return.

Я не могу догнать в скобках указанны цифры -1 и 0, откуда они берутся и куда возвращается прервавшая программа?

//| Expert initialization function                                   |

//+------------------------------------------------------------------+
int OnInit()
  {
*******************************************
if(********* || *********)
     {
      Alert("***************",******(),"!!");
      return(-1);
     }


   **** = *******;
   *** = *********;
   if(_******** || _********)
     {
      ************;
      ************;
     }
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
 
vladeimirami #:

Я не могу догнать в скобках указанны цифры -1 и 0, откуда они берутся и куда возвращается прервавшая программа?

https://www.mql5.com/ru/docs/event_handlers/oninit

Почитайте. Ноль - это успех, и программа продолжить работу. Остальные числа - конец работы.

Документация по MQL5: Обработка событий / OnInit
Документация по MQL5: Обработка событий / OnInit
  • www.mql5.com
OnInit - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksei Stepanenko #:

https://www.mql5.com/ru/docs/event_handlers/oninit

Почитайте. Ноль - это успех, и программа продолжить работу. Остальные числа - конец работы.

Блин. Понял. Не внимательно прочитал  перечисления ENUM_INIT_RETCODE. Спасибо. Как бы там ни было при неудачной инициализации выходим с любым числом отличным от нуля. По крайней мере с мертвой точки сдвинулся. Спасибо!
Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Функции обработки событий - Функции - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Встала задача проверить графики символов на пропуск баров

Никак не могу придумать решение этого вопроса

Нужно написать скрипт по принципу: Если есть пропуск бара - Print(date), Print(date), Print(date)

К примеру, бросаем скрипт на график М30, на нём должно быть 48 баров в сутках, если 47 - Print(date)

Как это написать? Желательно кроссплатформенное решение.

P.S. Это нужно сделать на всей доступной истории.

 

Виталий, как оценивать пропуск баров? 48 баров в сутки? Иногда работа прекращается в 23 часа, иногда начинается в 2. Если на рубль посмотреть, то там ночью торгов нет.

Если строго 24 часа 5 дней в неделю, тогда перебором каждого бара по порядку с проверкой последовательности. Но тогда будут сигналы о пропущенных барах, которых и не должно существовать.

 
Vitaly Muzichenko #:

Встала задача проверить графики символов на пропуск баров

Никак не могу придумать решение этого вопроса

Нужно написать скрипт по принципу: Если есть пропуск бара - Print(date), Print(date), Print(date)

К примеру, бросаем скрипт на график М30, на нём должно быть 48 баров в сутках, если 47 - Print(date)

Как это написать? Желательно кроссплатформенное решение.

P.S. Это нужно сделать на всей доступной истории.

есть похожая задача - делать таймфрейм с пропущенными барами. То есть например чтобы в сутках было ВСЕГДА ровно 1440 минут. Фик с ними что часть незаполнены. 

ничего быстрого, аккуратного и красивого не придумал :-( Только формировать в начале дня массив, высчитывать прошедшие минутки от 0:00 и так заполнять.

А факт наличия пропуска выявляется сравнением iBars(текущее_время,0:01 текущего дня) и (текущее_время-начало_дня)/PERIOD_SECONDS..