Как можно легко писать программы работающие в MT4 и в MT5 кроссплатформенный код , стимул изучать ООП - страница 2

 
fxsaber:

https://www.mql5.com/en/blogs/post/681230

Там дальше и продолжение с хэш-таблицей. 

ОПС!  вот ради чего стоит подобные темы открывать - спасибо!
 
Yuriy Zaytsev:
ОПС!  вот ради чего стоит подобные темы открывать - спасибо!
@o_O, вроде, давно уже написал mqh-библу, вставка которой в MQL4-исходник делает его кроссплатформенным. Но решение не опубликовано, видимо, по бизнес-соображениям.
 
fxsaber:

https://www.mql5.com/en/blogs/post/681230

Там дальше и продолжение с хэш-таблицей

Я вот этим классом пользуюсь, надо сравнить. Никогда не мог понять, почему такого нужного класса нет в СБ

https://www.mql5.com/ru/articles/1334 

Рецепты MQL5 - Реализуем ассоциативный массив или словарь для быстрого доступа к данным
Рецепты MQL5 - Реализуем ассоциативный массив или словарь для быстрого доступа к данным
  • 2015.03.23
  • Vasiliy Sokolov
  • www.mql5.com
В данной статье описывается специальный алгоритм, позволяющий эффективно получать доступ к элементам по их уникальному ключу. В качестве ключа может быть использован любой базовый тип данных, например ключом могут быть строки или целочисленные переменные. Такой контейнер данных принято называть словарем или ассоциативным массивом. С его помощью решать многие задачи становиться гораздо проще и эффективней.
 
Andrey F. Zelinsky:

Юра, я не супер какой сторонник МТ5 в стиле "только МТ5, за что и свой лоб с удовольствием расшибу" -- но есть объективная реальность:

1) говорить что хедж привёл к резкому росту популярности МТ5 нельзя -- т.к. заказы на МТ5 идут под фонды, а там хедж не нужен

2) МТ4 терминал хуже чем МТ5, как минимум по части тестера

3) и главное -- МТ5 сейчас по функционалу полностью перекрывает МТ4 со многими плюсами -- и ставить даже среднесрочные разработки на МТ4 уже тупо нет никакого смысла 

Все это так. Никто из здравомыслящих людей подвергать сомнению сказанное конечно не будет. Но реальность к сожалению иная. По Маркету могу сказать, что 85%-90% всех покупок приходится на MetaTrader 4. Т.е. что-либо специально разрабатывать для MetaTrader 5 - это экономическое самоубийство. Лично я поддерживаю в своих продуктах MetaTrader 5 только благодаря простой кросплатформенности, а значит и низким затратам времени/денег на перевод продукта в МТ5. Надеюсь со временем пропорция продаж поменяется. Если это так и будет, то держать продукты для МТ5 стоит хотя бы для этого.

Что касается брокераджа там тоже не все так просто. Я сейчас работаю совместно с одним партнером. Он ко мне придет, как уже бывало ни раз, и скажет: "Завтра открываем 20 счетов в брокере *** и начинаем торговать нашу стратегию. У него условия хорошие. Я уже обо всем договорился" - И что мне ему сказать? Что там нет MetaTrader 5, а есть только MetaTrader 4? И торговать у него не получиться, потому что наш робот работает только под МТ5, а что бы перевести его под МТ4 я должен фактически написать его заново и месяц работать нон-стоп (вот такие умельцы до меня писали)?

В общем я что хочу сказать: то что мы любим - это хобби. А работа - то, на чем мы зарабатываем. И раз наша задача так или иначе максимизировать прибыль (от продаж в Маркете, заказов в Фрилансе, управления счетами в ПАММ'ах, от подписок в Сигналах, от лучших брокерских условий), то мы просто не имеем право игнорировать MetaTrader 4 и всегда необходимо оглядываться на него, как бы не хотелось нам от него избавиться.  

 
fxsaber:
@o_O, вроде, давно уже написал mqh-библу, вставка которой в MQL4-исходник делает его кроссплатформенным. Но решение не опубликовано, видимо, по бизнес-соображениям.

Cервис фриланс сильно повлиял на всех, решения теперь не любят вываливать на форме. Времена  рыцарства , назову их времена "Игоря Кима" ,  миновали.

Но я нашел то о чем говорите, все чудесно работает.

 
Yuriy Zaytsev:

Cервис фриланс сильно повлиял на всех, решения теперь не любят вываливать на форме. Времена  рыцарства , назову их времена "Игоря Кима" ,  миновали.

Но я нашел то о чем говорите, все чудесно работает.

Проявите рыцарство?
 
Alexey Volchanskiy:

Я вот этим классом пользуюсь, надо сравнить. Никогда не мог понять, почему такого нужного класса нет в СБ

https://www.mql5.com/ru/articles/1334 

Посмотрел я код англицкий, похоже, там в хеш-таблице простой перебор при поиске, у Соколова все быстрее 

    int getIndex(K key) const
    {
      for(int i = 0; i < count; i++)
      {
        if(keys[i] == key) return(i);
      }
      return -1

     

 
fxsaber:

https://www.mql5.com/en/blogs/post/681230

Там дальше и продолжение с хэш-таблицей. 

То, что предлагается вообще не вариант. Единственным выходом видится, имхо, писать стратегии на уровне кросплатформенного фреймворка, что-то вроде такого:

...
//+------------------------------------------------------------------+
//| Работа с отложенными ордерами BuyStop для открытия длинной       |
//| позиции                                                          |
//+------------------------------------------------------------------+
void CImpulse::InitBuy(const MarketEvent &event)
{
   if(!IsTrackEvents(event))return;                      
   if(positions.open_buy > 0) return;                    
   int buy_stop_total = 0;
   ENUM_ORDER_TASK task;
   double target = WS.Ask() + WS.Ask()*(m_percent/100.0);
   if(target < Moving.OutValue(0))                    // Цена срабатывания ордера должна быть выше скользящей средней
      task = ORDER_TASK_DELETE;
   else
      task = ORDER_TASK_MODIFY;
   for(int i = PendingOrders.Total()-1; i >= 0; i--)
   {
      CPendingOrder* Order = PendingOrders.GetOrder(i);
      if(Order == NULL || !Order.IsMain(ExpertSymbol(), ExpertMagic()))
         continue;
      if(Order.Type() == ORDER_TYPE_BUY_STOP)
      {
         if(task == ORDER_TASK_MODIFY)
         {
            buy_stop_total++;
            Order.Modify(target);
         }
         else
            Order.Delete();
      }
   }
   if(buy_stop_total == 0 && task == ORDER_TASK_MODIFY)
      Trade.BuyStop(MM.GetLotFixed(), target, ExpertSymbol(), 0, 0, NULL);
}
...

Т.е. что бы в коде советника вообще не было вызовов платформо-специфических функций вроде OrderSend, Ask() или iCustom.
 

 
Vasiliy Sokolov:

Все это так. Никто из здравомыслящих людей подвергать сомнению сказанное конечно не будет. Но реальность к сожалению иная. По Маркету могу сказать, что 85%-90% всех покупок приходится на MetaTrader 4. Т.е. что-либо специально разрабатывать для MetaTrader 5 - это экономическое самоубийство. Лично я поддерживаю в своих продуктах MetaTrader 5 только благодаря простой кросплатформенности, а значит и низким затратам времени/денег на перевод продукта в МТ5. Надеюсь со временем пропорция продаж поменяется. Если это так и будет, то держать продукты для МТ5 стоит хотя бы для этого.

Что касается брокераджа там тоже не все так просто. Я сейчас работаю совместно с одним партнером. Он ко мне придет, как уже бывало ни раз, и скажет: "Завтра открываем 20 счетов в брокере *** и начинаем торговать нашу стратегию. У него условия хорошие. Я уже обо всем договорился" - И что мне ему сказать? Что там нет MetaTrader 5, а есть только MetaTrader 4? И торговать у него не получиться, потому что наш робот работает только под МТ5, а что бы перевести его под МТ4 я должен фактически написать его заново и месяц работать нон-стоп (вот такие умельцы до меня писали)?

В общем я что хочу сказать: то что мы любим - это хобби. А работа - то, на чем мы зарабатываем. И раз наша задача так или иначе максимизировать прибыль (от продаж в Маркете, заказов в Фрилансе, управления счетами в ПАММ'ах, от подписок в Сигналах, от лучших брокерских условий), то мы просто не имеем право игнорировать MetaTrader 4 и всегда необходимо оглядываться на него, как бы не хотелось нам от него избавиться.  

нет нет, речь не идет о том что бы избавится от мт4,  речь идет только о том , что лучше сразу закладывать в продукты  кросплатформенность  и о том что это очень не сложно делать.
 
Andrey F. Zelinsky:
на самом деле -- мне известен только один, кто готов биться "за" МТ5 и "против" МТ4 с любым трейдером и даже с любой преградой каждой клеточкой своего тела и сознания.
? неужели я
Причина обращения: