Скачать MetaTrader 5

Помогите нарисовать трендовые...

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Эраст Ковалев
163
Эраст Ковалев  

При переходе с mql4 встретился с рядом трудностей, часть из них решил, но кое-что пока не удается.

В моем индикаторе программно нужно начертить несколько трендовых, на разных таймфреймах. Хотел проверить часть кода, т.е нарисовать промежуточные объекты - трендовые линии.  Столкнулся с тем, что не могу найти функцию типа iTime(.....);  Подскажите - есть ли что нибудь похожее в mql5, или придется писать собственную функцию (или создавать класс преобразований, что нибудь вроде CConvert ... )

С уважением, Э. Ковалев.


    int    current_index = IndexOfPeriod(period);
    int index = ArrayRange(arr_period, 0) - 1;
    
    while (index >= current_index)
    {
        coler = arr_color[index];
        arr_per = arr_period[index];
        bars = Bars(symbol, arr_period[index]) - 1;
        number = 0;
        up_dn = 0;
        
        for(int i = 0; i < bars; i++)
        {
            if(i == 0) 
            { 
                c_previos.InitSeries(arr_per, bars); 
                c_previos.InitVariables(arr_per, bars, step, maxi); 
            }
            if(i > 0 ) 
            { 
                sar_cur = c_previos.CalcSAR(arr_per, bars, i); 
                sar_pre = c_previos.CalcSAR(arr_per, bars, i-1); 
                mid_cur = c_previos.MiddlePrice(arr_per, bars, i);
                mid_pre = c_previos.MiddlePrice(arr_per, bars, i-1);
                rev_up = false; if( (sar_cur < mid_cur) && (sar_pre > mid_pre) ) rev_up = true; 
                rev_dn = false; if( (sar_cur > mid_cur) && (sar_pre < mid_pre) ) rev_dn = true; 
                if( (rev_up) || (rev_dn) )
                {
                    dt1 = i;
                    pr1 = sar_cur;
                    pr2 = sar_pre;
                    arr_main[index][number][0] = number + 1;
                    arr_main[index][number][1] = dt1;
                    arr_main[index][number][2] = pr1;
                    arr_main[index][number][3] = pr2;
                    
                    number++;
                    name = IntegerToString(index, 1, ' ') + " Line № " + IntegerToString(number, 2, ' '); 
                    //time1 = 
                    if ( ObjectFind(0, name) < 0 ) ObjectCreate(0, name, OBJ_TREND, 0, time1, pr1, time1, pr2);               
                    ObjectSetInteger(0, name, OBJPROP_COLOR, coler);
                    ObjectSetInteger(0, name, OBJPROP_WIDTH, 2);
                    ObjectSetInteger(0, name, OBJPROP_STYLE, STYLE_SOLID);
                    
                    
                    if(number > 30) break;
                }
            }
        }    
        index--;
    }
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
Maryan Kozovyy
657
Maryan Kozovyy  

добавь в свой код ето:

datetime iTime(string symbol,int tf,int index){
   if(index < 0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[];
   if(CopyTime(symbol, timeframe, index, 1, Arr)>0)
        return(Arr[0]);
   else return(-1);}

и юзай iTime как прежде в mql4.

Vladimir Batrudinov
4937
Vladimir Batrudinov  
erkov:

При переходе с mql4 встретился с рядом трудностей, часть из них решил, но кое-что пока не удается.

В моем индикаторе программно нужно начертить несколько трендовых, на разных таймфреймах. Хотел проверить часть кода, т.е нарисовать промежуточные объекты - трендовые линии.  Столкнулся с тем, что не могу найти функцию типа iTime(.....);  Подскажите - есть ли что нибудь похожее в mql5, или придется писать собственную функцию (или создавать класс преобразований, что нибудь вроде CConvert ... )

С уважением, Э. Ковалев.


По поводу iTime, почитайте о CopyTime...

PS

Конечно писать определенные вещи придется самостоятельно, а так полезно и справочку почитать...

iTime - Документация на MQL4
  • docs.mql4.com
iTime - Документация на MQL4
Vladimir Batrudinov
4937
Vladimir Batrudinov  
maryan.dirtyn:

добавь в свой код ето:

и юзай iTime как прежде в mql4.

Если цитируете статью, плиз давайте ссылку и приводите код максимально полно (а то вот откуда взялось TFMigrate(tf) вопрос)

PS

Статья - Переход с MQL4 на MQL5

Эраст Ковалев
163
Эраст Ковалев  
maryan.dirtyn:

добавь в свой код ето:

и юзай iTime как прежде в mql4.

спасибо
Эраст Ковалев
163
Эраст Ковалев  
Interesting:

По поводу iTime, почитайте о CopyTime...

PS

Конечно писать определенные вещи придется самостоятельно, а так полезно и справочку почитать...

Справку конечно-же читаю, но если-б Вы знали, как сложно мне в ней разбираться. Я совершенно не знаком с ООП. Пока кодил свой первый класс ClassPrevios, чуть с ума не сошел (кто это все придумал??, как это помогает?? - пока не "вкусил").  Думаю таймсерию Time[], добавить в  InitSeries()

        void             InitSeries(ENUM_TIMEFRAMES f_Period, int f_Bars)                      
                         {
                             ArraySetAsSeries(Low, true);
                             CopyLow(symbol, f_Period, 0, f_Bars, Low);
                             if(CopyLow(symbol, f_Period, 0, f_Bars, Low) < 0)  Print("Данные массива LOW с таймфрейма ", f_Period, "  не получены");
                             ArraySetAsSeries(High, true);
                             CopyHigh(symbol, f_Period, 0, f_Bars, High);
                             if(CopyHigh(symbol, f_Period, 0, f_Bars, High) < 0) Print("Данные массива HIGH с таймфрейма ", f_Period, "  не получены");
                         }
    
Спасибо за подсказку, я действительно очень устал учить mql5 методом "тыка", уж очень тяжело все это дается (хотя не балетную школу закончил, первое образование техническое - радиоэлектронщик). Еще раз спасибо.
iTime - Документация на MQL4
  • docs.mql4.com
iTime - Документация на MQL4
Эраст Ковалев
163
Эраст Ковалев  

Все равно не понимаю, видимо что то не так делаю. И таймсерию добавил ..

        void             InitSeries(ENUM_TIMEFRAMES f_Period, int f_Bars)                      
                         {
                             ArraySetAsSeries(Low, true);
                             CopyLow(symbol, f_Period, 0, f_Bars, Low);
                             if(CopyLow(symbol, f_Period, 0, f_Bars, Low) < 0)  Print("Данные массива LOW с таймфрейма ", f_Period, "  не получены");
                             ArraySetAsSeries(High, true);
                             CopyHigh(symbol, f_Period, 0, f_Bars, High);
                             if(CopyHigh(symbol, f_Period, 0, f_Bars, High) < 0) Print("Данные массива HIGH с таймфрейма ", f_Period, "  не получены");
                             
                             
                             ArraySetAsSeries(Time, true);
                             CopyTime(symbol, f_Period, 0, f_Bars, Time);
                             if(CopyTime(symbol, f_Period, 0, f_Bars, Time) < 0) Print("Данные массива TIME с таймфрейма ", f_Period, "  не получены");
                         }

и сплясал, и в бубен постучал.... Но как объяснить mql5 - му, что мне нужно узнать время именно этого бара....

Совсем, что то я затупил....




Vladimir Batrudinov
4937
Vladimir Batrudinov  
erkov:

Все равно не понимаю, видимо что то не так делаю. И таймсерию добавил ..

и сплясал, и в бубен постучал.... Но как объяснить mql5 - му, что мне нужно узнать время именно этого бара....

Совсем, что то я затупил....


Какого бара хотим узнать время?
Эраст Ковалев
163
Эраст Ковалев  

Все ..... разобрался - всем СПАСИБО


А учить mql5 по существующей документации, все таки - сложно. Ну как будто она написана разработчиками - для самих-же себя (ну, например, что бы не забыть некоторые моменты). 

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

Вопрос к разработчикам - Когда Вы планируете выход в свет учебника по mql5???

_______________________________________________________

С уважением, ... любви, счастья, терпения, знаний ...

Э. Ковалев.


Эраст Ковалев
163
Эраст Ковалев  
Interesting:
Какого бара хотим узнать время?

Спасибо еще раз за участие и помощь - ... с этим чОртом (iTime) я кажется разобрался


С уважением, Э. Ковалев

Эраст Ковалев
163
Эраст Ковалев  

Все ... капец. Разобрался с одним - уперся в другое. Индикатор начертил не то, что я от него ожидал.

Сидел я, ваял класс, от которого ожидал получать с разных таймфреймов данные индикатора iSAR, да видно - рано мне еще классы писать.

Тот кто придумал классы - думаю, перевернулся у себя в Стокгольме раз сто (что-бы он был здоров).

Всем удачи ...

Документация по MQL5: Технические индикаторы / iSAR
Документация по MQL5: Технические индикаторы / iSAR
  • www.mql5.com
Технические индикаторы / iSAR - Документация по MQL5
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий