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

 
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);
Походу система падает не из за одного массива, а в принципе что начинает создавать массивы такого размера.
 

Всем добрый день!

Хочу перейти с Мql4 на  Мql5. Начал читать Справочник по Мql5 . К сожалению понимаю, но далеко не все. Где можно найти информацию типа учебника Ковалева по  Мql4 что бы начиная с самых азов детально описывались особенности  Мql5 и главное что бы приводились конкретные примеры кодирования самых простых и самых распространенных операций. То есть , нужна обучающая информация не для продвинутых пользователей, а для новичков которым нужно научиться азам и отталкиваясь от них двигаться дальше.

Спасибо за помощь

 
ANDREY #:

Всем добрый день!

Хочу перейти с Мql4 на  Мql5. Начал читать Справочник по Мql5 . К сожалению понимаю, но далеко не все. Где можно найти информацию типа учебника Ковалева по  Мql4 что бы начиная с самых азов детально описывались особенности  Мql5 и главное что бы приводились конкретные примеры кодирования самых простых и самых распространенных операций. То есть , нужна обучающая информация не для продвинутых пользователей, а для новичков которым нужно научиться азам и отталкиваясь от них двигаться дальше.

Спасибо за помощь

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

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

 
Aleksey Vyazmikin #:

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

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

Спасибо большое за ценный совет. Если Вас не затруднит скинте мне пожалуйста ссылку на советник(не индикатор) который был на 4 , и потом стал на 5(если можно на самый простой) , или сам советник в 4 а потом он же в 5
Начал изучать . Понял что торговые операции для новичка легче всего открывать в торговом классе СТrаde И мне удалось даже открыть ордера и сделки при помощи этого класса
Но как только я обусловил открытие ордера , ордера открываться перестали , подскажите пожалуйста в чем я ошибся. Вот код, который открывал ордера, когда не было никаких условий.

#include<Trade\Trade.mqh>
CTrade  trade;

void OnTick()
{
MqlDateTime time_now;  
if(time_now.hour==10||time_now.hour==11&&time_now.min==0)


trade.Buy(0.1);


}

Еще я не понял пока такой момент.... Когда ордера БАЙ открывались, то они закрывались, как я понял встречными ордерами СЕЛ. И не понял я где код брал информацию через какое количество пунктов закрывать ордера , ведь я нигде не прописывал размер СЛ и ТП и нигде не прописывал вообще функции закрывающей ордера. Я подозреваю что эта информация записана в каком то месте какого то вложенного файла, то есть в каком то классе или какой то структуре. Если это так , то как найти это место что бы вносить изменения в параметры открываемого ордера?

Еще раз спасибо за помощь

 
ANDREY #:

Спасибо большое за ценный совет. Если Вас не затруднит скинте мне пожалуйста ссылку на советник(не индикатор) который был на 4 , и потом стал на 5(если можно на самый простой) , или сам советник в 4 а потом он же в 5
Начал изучать . Понял что торговые операции для новичка легче всего открывать в торговом классе СТrаde И мне удалось даже открыть ордера и сделки при помощи этого класса
Но как только я обусловил открытие ордера , ордера открываться перестали , подскажите пожалуйста в чем я ошибся. Вот код, который открывал ордера, когда не было никаких условий.

Еще я не понял пока такой момент.... Когда ордера БАЙ открывались, то они закрывались, как я понял встречными ордерами СЕЛ. И не понял я где код брал информацию через какое количество пунктов закрывать ордера , ведь я нигде не прописывал размер СЛ и ТП и нигде не прописывал вообще функции закрывающей ордера. Я подозреваю что эта информация записана в каком то месте какого то вложенного файла, то есть в каком то классе или какой то структуре. Если это так , то как найти это место что бы вносить изменения в параметры открываемого ордера?

Еще раз спасибо за помощь

Да я только советы могу раздавать - ведь родился в стране советов...

Предметно - поищите - вот как вариант.

Я сам до сих пор не познал все нюансы торговый операций - заказал класс во фрилансе много лет назад и пользуюсь им с небольшими доработками.

Причина обращения: