Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1454

 
trader6_1 #:

SetIndexStyle - MQL4.

В MQL5:

Спасибо!
 

давно в голове возник вопрос, в чем разница

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

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

 

Добрый день!

Прошу помощи: цель реализовать закрытие позиции при пересечении ценой МА.

При данном участке кода

if(Bid<iMA(Symbol(),0,Fast_Ma_Period,Fast_Ma_Shift,Fast_Ma_Method,Fast_Ma_Price,0) && CountBuy()>0)
          
           
     {
     for(int i=OrdersTotal ()-1; i>=0; i--)
     {
     if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
     {
       if (OrderMagicNumber ()== MagicNumber && OrderType() == OP_BUY)
       if(!OrderClose(OrderTicket(), OrderLots(),Bid, Slippage, Black))
       Print("Ошибка");

Получаю на тестере такую картину: цена прошивает МА и закрывает позицию на закрытии свечи / открытии следующей, уже далеко от желаемого уровня закрытия (границы МА)...

Файлы:
 
rex1818 #:

Добрый день!

Прошу помощи: цель реализовать закрытие позиции при пересечении ценой МА.

При данном участке кода

Получаю на тестере такую картину: цена прошивает МА и закрывает позицию на закрытии свечи / открытии следующей, уже далеко от желаемого уровня закрытия (границы МА)...

Тики волатильны гораздо более усредненной МА по тиковому клоз, поэтому разлет между тиками внутри которых оказалось значение МА дело обычное. Цена дискретна, и надеюсь не путаете бид с аском. т.е. ма по бид и цены открытия закрытия тоже бид, и ма по аск и цены тоже аск)

Зы, можно ма не пересчитывать кстати по бид или аск, а спред добавить вычесть, ошибка минимальна будет.
 
Valeriy Yastremskiy #:

Тики волатильны гораздо более усредненной МА по тиковому клоз, поэтому разлет между тиками внутри которых оказалось значение МА дело обычное. Цена дискретна, и надеюсь не путаете бид с аском. т.е. ма по бид и цены открытия закрытия тоже бид, и ма по аск и цены тоже аск)

Зы, можно ма не пересчитывать кстати по бид или аск, а спред добавить вычесть, ошибка минимальна будет.

Спасибо за ответ!

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

 
rex1818 #:

Добрый день!

Прошу помощи: цель реализовать закрытие позиции при пересечении ценой МА.

При данном участке кода

Получаю на тестере такую картину: цена прошивает МА и закрывает позицию на закрытии свечи / открытии следующей, уже далеко от желаемого уровня закрытия (границы МА)...

А тестирование не по закрытию баров выбрано?

 
Alexey Viktorov #:

А тестирование не по закрытию баров выбрано?

Добрый день!

Модель тестирования: Все тики (.....). Я так понимаю самый точный...

 
rex1818 #:

Добрый день!

Модель тестирования: Все тики (.....). Я так понимаю самый точный...

И советник написан не по открытию нового бара?

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

 

Спасибо всем  откликнувшимся!

Нашел ошибки.

Теперь все работает как нужно.  

 

Может кто подсказать , если на графике стоит ограничение в 3000 баров, а надо взять историю 2000000 баров, возможные варианты вытащить исторические данные, без изменения параметра - макс. баров в окне ????


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

   void SMA(const int aRatesTotal,const int aPrevCalc,const double  &aData[], double  &aMA[])
     {
      int Start=0;
      if(aPrevCalc==0)
        {
         for(int i=0;i<aRatesTotal;i++)
           {
            if(aData[i]!=0 && aData[i]!=EMPTY_VALUE)
              {
               Start=i+m_MAPeriod-1;
               break;
              }
           }
         aMA[Start]=0;
         for(int i=Start;i>Start-m_MAPeriod;i--)
           {
            aMA[Start]+=aData[i];
           }


А до этого , подаю этот массив.


   rt=aRatesTotal;
   prv=aPrevCalc;
   for(int i=0; i<m_max_period; i++)
     {
      ArrayResize(d[i].m,rt);
      ArrayResize(d[i].f,rt);
     }

   chsma.Solve(rt,prv,aData,d[m_max_period-1].m);
Походу система падает не из за одного массива, а в принципе что начинает создавать массивы такого размера.