Индикатор Разные вопросы

 

Привет,

#Broker Time

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

Мое брокерское время начинается с 01:00, но все мои индикаторы работают с 00:00.

Так как же мне решить мою проблему?

Пожалуйста, помогите мне.

Спасибо.

(Английский не является моим родным языком).

 

#Время брокера - Пока закрыто.

Я решил свой вопрос.

 

#Month OBJ_VLINE

Мне нужно создать линии Months, но я затрудняюсь.

int _prd = PERIOD_MN1;
int _cnt_MN1 = iBarShift( Symbol(), 0, iTime( Symbol(), PERIOD_MN1, 0 ) );
for ( int i = 0; i < _cnt_MN1; i++ )
{
    //---date & time
    datetime _time          = Time[i]                                               ;
    datetime _prd_time      = iTime( Symbol(), _prd, 0 )                            ;
    datetime _timeCvrt_MN1  = _time + ( _time % _prd_time ) - PeriodSeconds( _prd ) ;
    //---name
    string   _vlineName_MN1 = _prefix + "PERIOD_MN1 - " + TimeToStr( _timeCvrt_MN1, TIME_DATE )    ;

    if ( _Period < PERIOD_MN1 )
    {
        ObjectCreate( _vlineName_MN1, OBJ_VLINE     , 0, _time, 0 )                 ;
        ObjectSet   ( _vlineName_MN1, OBJPROP_COLOR , C'180,160,080'  )             ;
    }   //---if Close
}   //---for Close

Кто-нибудь может мне помочь?

Лучший

 
Вы знаете, когда начался месяц: iTime(_Symbol, PERIOD_MN1, 0) Не нужен цикл или все остальное. Просто нарисуйте линию.
datetime BOM = iTime( Symbol(), PERIOD_MN1, 0 ); // Beginning of the month.
string   _vlineName_MN1 = _prefix + "PERIOD_MN1 - " + TimeToStr( BOM, TIME_DATE )    ;
ObjectCreate( _vlineName_MN1, OBJ_VLINE     , 0, BOM, 0 )                 ;
ObjectSet   ( _vlineName_MN1, OBJPROP_COLOR , C'180,160,080'  )             ;
 
int _cnt_MN1 = 12; // 12 lines for a year 24 for two years and etc.
for ( int i = 0; i < _cnt_MN1; i++ )
{
   ObjectCreate(0,"PERIOD_MN1-"+IntegerToString(i),OBJ_VLINE,0,iTime(Symbol(),PERIOD_MN1,i),0);
   ObjectSetString(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_TOOLTIP,TimeToString(iTime(Symbol(),PERIOD_MN1,i),TIME_DATE));
   ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i), OBJPROP_COLOR , C'180,160,080'  );
   //ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
   //ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_WIDTH,1);
}
 
whroeder1:
Вы знаете, когда начался месяц: iTime(_Symbol, PERIOD_MN1, 0) Не нужен ни цикл, ни все остальное. Просто проведите линию.
datetime BOM = iTime( Symbol(), PERIOD_MN1, 0 ); // Beginning of the month.
string   _vlineName_MN1 = _prefix + "PERIOD_MN1 - " + TimeToStr( BOM, TIME_DATE )    ;
ObjectCreate( _vlineName_MN1, OBJ_VLINE     , 0, BOM, 0 )                 ;
ObjectSet   ( _vlineName_MN1, OBJPROP_COLOR , C'180,160,080'  )             ;

Спасибо за быстрый ответ и ваш комментарий.

Также я попробовал ваш код, но я вижу только один предыдущий месяц 2016/10.

Но мне нужно создать строки месяцев из текущего года и будущего.

пример: Месяц начинается с - Январь 2016 - Февраль 2016 - Март 2016 - ... до декабря 2016.

Надеюсь, теперь вы меня поняли.

Итак, что я могу сделать для этого, пожалуйста?

Заранее спасибо.

 
Marco vd Heijden:
int _cnt_MN1 = 12; // 12 lines for a year 24 for two years and etc.
for ( int i = 0; i < _cnt_MN1; i++ )
{
   ObjectCreate(0,"PERIOD_MN1-"+IntegerToString(i),OBJ_VLINE,0,iTime(Symbol(),PERIOD_MN1,i),0);
   ObjectSetString(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_TOOLTIP,TimeToString(iTime(Symbol(),PERIOD_MN1,i),TIME_DATE));
   ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i), OBJPROP_COLOR , C'180,160,080'  );
   //ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
   //ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_WIDTH,1);
}

Вы четко понимаете, о чем я думаю, а я не заметил ваш замечательный комментарий (пока писал ответ на предыдущий комментарий).

Очень признателен.

 
Max Enrik:

Вы четко понимаете, о чем я думаю, и я написал ответ на предыдущий комментарий (пока я не видел ваш замечательный комментарий).

Очень признателен.

Будьте проще
 
    ObjectCreate(0,"Future-H4-",OBJ_VLINE,0,0,0);
    ObjectMove(0,"Future-H4-",0,iTime(Symbol(),PERIOD_H4,0)+PERIOD_H4,0);

MN1 находится слишком далеко, но вот один для H4.

Также вы можете использовать

TimeCurrent()
и перемещать вашу линию в функции OnTick() или OnTimer(), тогда она будет двигаться вместе со временем.
 
Marco vd Heijden:
    ObjectCreate(0,"Future-H4-",OBJ_VLINE,0,0,0);
    ObjectMove(0,"Future-H4-",0,iTime(Symbol(),PERIOD_H4,0)+PERIOD_H4,0);

MN1 находится слишком далеко, но вот один для H4.

Также вы можете использовать

TimeCurrent()
Переместите вашу линию в функции OnTick() или OnTimer(), тогда она будет двигаться вместе со временем.

Ух ты! Большое спасибо за ваш комментарий.

Я использую приведенный ниже код (который вы упомянули) в своем индикаторе Period Lines, так что он хорошо работает для меня до 'PERIOD_MN1'.

iTime(Symbol(),PERIOD_*,0)+PERIOD_*

---

Я прочитал немного больше о 'Event Handling Functions', но мне нужен совет от профессионального кодера.

Какая функция будет полезна для моего индикатора (Час 4, День, Неделя, Месяц)?

Например: init(), start(), OnTick() или OnTimer().

Заранее спасибо.

 

Вы можете нарисовать все линии в OnInit(), а затем рисовать новые всякий раз, когда время открытия последнего бара изменится, вы будете знать, что был новый бар.

Но я не уверен, что именно вы хотите сделать.