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

 
Alexey Viktorov:

Ну в таком случае зачем вообще эти самописные функции?

Получил максимальную и минимальную цены вчерашнего дня и от этих значений определять середину.

Не знаю... чё то не подумал... Сей час перепишу... так проще даже... Спасибо! 

 
Igor Makanu:

 Money Management

это не совсем оптимизация, цели еще не достигнуты, по рандомным входам отложенные ордера двигаются за ценой, в оптимизаторе подбор по принципу формулы линии y=kx+b , чуть позже по полиному сделаю и экспоненте, но оптимизатор ищет только коэффициенты и обьемы ордеров, в общем чтобы не напускать туману - это сетка, ну почти, но цели еще не достигнуты

это будет работать, я знаю, что ищу, рынками (правда с большим перерывом ) занимаюсь с момента регистрации на форуме, много конечно времени ушло поднять пласт программирования под MQL, но в общем идея моя собранная за год попутного написания экспертов по просьбам трудящихся )))

не вопрос, давай

Понятно, очень хорошо понятно, ибо через это проходил уже. 
Все равно все упирается в нахождение неких параметров ( в данном случае как минимум коэффициенов k  и b в линейной зависимости y=kx+b или a,k,x в экспоненциальной y=ax²+kx+b). Эти коэффициенты должны по хорошему меняться с каждым тиком, поэтому я и говорил, что оптимизация должна сидеть в самой программе и происходить автоматически и постоянно, а не во внешнем тестере в ручном режиме время от времени (раз в день или неделю или месяц...).  Также еще нужно контролировать период, на котором происходит наблюдаемая регрессия линейная или параболическая(экспоненциальная). Этот период тоже должен меняться с каждым тиком. Хотя нахождение линии или параболы - это тоже самое, что и нахождение оптимального в данный момент периода регресии линейной или параболической. 
Но внешний тестер всегда сможет подобрать такие константные статические параметры, которые будут универсально гарантировано подходить только лишь  под тот набор исторических данных, на котором происходит тест и на этом, уже прошедшем историческом периоде, естественно, будет наблюдаться стабильная прибыль и рисоваться красивые линии профита, но нам то настоящее нужно и будущее. 

Все равно все упирается в ежетиковый контроль ширины канала, длины канала, пробоя канала, возвращения к линии пробоя линейного или более высокой степени каналов. А это задача распознания образов и решаться она должна только внутри, а не снаружи.

 
Nikolai Semko:

Понятно, очень хорошо понятно, ибо через это проходил уже.

я тоже и не раз

Nikolai Semko:

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

в том то и беда, что нет, все как по книжке тест и форвард, графики отличаются, но тенденция есть, насколько я понял в той идее что сейчас исследую мой EA довольно не плохо попадает не в саму будущую цены, а именно в траектории будущих цен

 
Ребята такой вопрос. Значит смотрите есть префиксный инкремент ++q и постфиксный q++, используя их возможности можно получить довольно разный и интересный эффект, например приоритет выполнения этого q++ инкремента выполняет сложение поздним/задним числом т.е. после а не сразу, как такое можно сделать с простыми числами и возможно ли, например я хочу такое сложение q+5, сначала мне нужно использовать q а потом прибавить 5? 
 
Seric29:
Ребята такой вопрос. Значит смотрите есть префиксный инкремент ++q и постфиксный q++, используя их возможности можно получить довольно разный и интересный эффект, например приоритет выполнения этого q++ инкремента выполняет сложение поздним/задним числом т.е. после а не сразу, как такое можно сделать с простыми числами и возможно ли, например я хочу такое сложение q+5, сначала мне нужно использовать q а потом прибавить 5? 

Ну если это использовать как счётчик цикла то просто

for(int q = 0; q <= 25; q+=5)
 
Alexey Viktorov:

Ну если это использовать как счётчик цикла то просто

А если передать выражение q+5 в функцию  и сначала выполнить q а потом прибавить 5ку невозможно это сделать да?

int q
void Funk(int pr){}
вызвов Funk(...q+5...) сначала используем q а после прибавляем 5
как здесь например Funk(q++) сначала используем q а после прибавляем 1
 
Комментарии, не относящиеся к этой теме, были перенесены в "ООП, шаблоны и макросы в mql5, тонкости и приёмы использования".
 
Seric29:

А если передать выражение q+5 в функцию  и сначала выполнить q а потом прибавить 5ку невозможно это сделать да?

5 это константа или переменная? Если константа, нет проблем: передавайте в функцию q и после её использования плюсуйте 5. Если-же переменная передайте две переменные и после использования q плюсуйте вторую переменную. Ещё вариант, объявить переменные на глобальном уровне. Тогда вообще ничего передавать не надо.
 

Здравствуйте. Хочу закрыть разнонаправленные позиции когда профит будет =0 Разное количество бай, селл позиций, разные объёмы лотов.

что неправильно в функции поиска средней цены, то есть точки нулевого профита?

 double AveroProf(string sy="", int op=-1, int mn1=-1) 
   {
   int i=0;
   int kol=0;
   double lots=0;
   double sum=0;
   double sum1=0;
   double zeroprice=0;
   double tick_value;
   for (i=0; i<OrdersTotal(); i++)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderMagicNumber()!=mn1) continue;
      if (OrderType()==OP_BUY)
      {
       lots=lots+OrderLots();
       sum=sum+OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit()+OrderSwap()+OrderCommission()  ; 
      }
      if (OrderType()==OP_SELL)
      {
       lots=lots+OrderLots();
       sum=sum+OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit()+OrderSwap()+OrderCommission()  ;
       kol=kol+1;
      }
   
   }
   if (lots>0)
   { 
   zeroprice=sum/lots;
   zeroprice=NormalizeDouble(zeroprice,_Digits);
   zeroprice = (MathRound(zeroprice*MathPow(10,Digits)))/MathPow(10,Digits);
    }   
   return( zeroprice);
   }
 
Пожалуйста, кто-нибудь поможет мне с этой проблемой: https://www.mql5.com/ru/forum/322133
Как использовать WinApi для преобразования времени в StrategyTester MT5?
Как использовать WinApi для преобразования времени в StrategyTester MT5?
  • 2019.09.12
  • www.mql5.com
Я успешно создал CustomSymbol в MT5, и я получаю эту таблицу в приложении...
Причина обращения: