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

 
Marco vd Heijden:

Первый бар дня должен быть первым баром после того, как TimeHour() начал отсчет.
Это будет, конечно, первый бар чего-либо M1, M5, M15 и т.д. Они все начинают новые бары.

Я попробую это сделать в ближайшее время, также я работаю над этим вопросом.

Большое спасибо.

 

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

кулачный бар дня

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

 
datetime open;

open=iOpen(Symbol(),PERIOD_D1,0);

// put in ontick

if(iOpen(Symbol(),PERIOD_D1,0)!=open)
{
  if(TimeHour(open)==0)
   {
    Alert("New Day !!");
   }
  open=iOpen(Symbol(),PERIOD_D1,0); // assign new value every hour
}

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

Я думаю, что open нужно заменить на time.

iTime(

Или, может быть, вы даже можете это сделать:

if(TimeHour(TimeCurrent())==0)
{
  Alert("NEw DAy m8");
}
ps. что случилось с другой темой? Там было почти 40 страниц?
 
Marco vd Heijden:

Я выпил немного пива, так что, надеюсь, вы поняли, что я уверен, что это неправильно во всех возможных отношениях.
Или, может быть, вы даже можете это сделать:

ps. что случилось с другой темой? Она была почти 40 страниц?
Мистер Уильям - (Я с уважением отношусь к вам и вашим комментариям.) Я несколько раз сталкивался с тем, что вы написали это предложение: Здесь нет читающих мысли.
Теперь я думаю, если я не могу написать более ясно о своей проблеме, как люди могут понять меня?!

---

Господин Марко - большое спасибо за ваш комментарий. Я уже знаю это, также я использовал подобные коды в своих индикаторах.

(Я попытался объяснить свою проблему в разделе исходного кода)

iTime( Symbol(), PERIOD_D1, 0 )
// this code gives me Hour 00:00 - but actually D1 time should show Hour 01:00 | this mean my broker shows absolutely wrong Hour for period PERIOD_D1
// But I need to write code to get first H1 bar Time of the day ( e.g: if first H1 bar 00:00 or 01:00 or ... ) instead of PERIOD_D1
// But I really struggle to write code for get today first H1 time

---

P.S.

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

Дополнительно:
Когда я начал писать советника для торговой панели, я думал, что мне нужно написать 4 функциональных скрипта Sell, Buy, Close all Order, EXIT (удалить) советника.
Пока я работал над ним, у меня появилось много идей... теперь советник состоит из более чем 3 тысяч строк.
И все же я должен написать еще почти 10 полезных функций, если я решусь на все из них.

Также, возможно, когда я закончу свой советник Trade Panel, я напишу небольшую историю о том, как я начал писать скрипт для своего советника Trade Panel. (Даже если я не закончу его - правда, я верю, что те, кто увидит его, скажут: Wow awesome! ) хехе :)

---

Спасибо, мистер Марко.

Спасибо всем вам (кто отвечает на мои комментарии) большое и за вашу помощь.

 
#property strict
#property show_inputs
#define HOUR 3600
#define DAY 86400
extern int local_offset = 1; // local time offset from broker (hours)

void OnStart()
  {
   local_offset*=HOUR;

   int D1_shift = (TimeCurrent()%DAY > local_offset) ? 0 : 1;

   datetime broker_midnight = iTime(_Symbol,PERIOD_D1,D1_shift);
   datetime local_midnight  = broker_midnight + local_offset;

   int      M5_shift = iBarShift(_Symbol,PERIOD_M5,local_midnight);
   datetime M5_time  = iTime(_Symbol,PERIOD_M5,M5_shift);
   double   M5_open  = iOpen(_Symbol,PERIOD_M5,M5_shift);

   printf("M5_time: %s M5_open: %f", TimeToString(M5_time),M5_open);
  }
 
honest_knave:

Спасибо за ваш отличный пример.
Возможно, если у меня будет время, я попробую объяснить с помощью видео / изображения завтра.

Я так усердно изучаю этот вопрос.

(также я ищу такие ключевые слова в google seo (пока не очень полезный комментарий в seo): site:mql4.com | site:mql5.com первый бар дня).

 

Вы ищете способ автоматического определения местного > смещения времени брокера? Например, +1 час.

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

1. Получите полночь по времени брокера (с помощью iTime или путем вычисления).

2. Преобразуйте ее в местную полночь, используя настройку смещения.

3. Переведите местную полночь через iBarShift, чтобы получить нужный бар на выбранном таймфрейме.

 
honest_knave:

Вы ищете способ автоматического определения смещения местного > брокерского времени? Например, +1 час
Если вы собираетесь использовать ручную настройку (это лучше, потому что иногда вы хотите использовать не местное время, а другой часовой пояс), шаги, которые вы должны выполнить, как в моем сценарии выше:
1. Получите полночь по брокерскому времени (с помощью iTime или путем вычисления)
2. Преобразуйте ее в местную полночь, используя вашу настройку смещения. Конвертируйте ее в местную полночь, используя настройки смещения
3. Вводим локальную полночь через iBarShift, чтобы получить нужный бар на выбранном таймфрейме.

Вы абсолютно правильно меня поняли - что я ищу способ автоматически... - Итак, почему? У меня есть несколько важных индикаторов (сделанных самостоятельно - с помощью разных форумов), если бы я выбрал ручной способ - я мог бы изменить их настройки... это долгий путь - я такой ленивый. :)
Спасибо большое!
Возможно я нашел решение (на данный момент вроде работает - я уже попробовал 2 разных брокера, получаю правильное время).

Думаю, что вопрос от недостатка опыта.

Q: Как я могу сохранить только час 1 в нижеприведенном результате, пожалуйста?
( На самом деле я нашел, как я могу сохранить только " 1 " из нижеприведенного результата - но мне нужен профессиональный метод, пожалуйста )
( например: результат: 2017.02.2701:00:00 - Но мне нужно сохранить только: 1 )

2017.00.00 00:00:00.000 Custom Indicator EURUSD,M5:  Bar Time: 2017.02.27 01:00:00

Спасибо большое за все.

(Я буду делиться тем, как я нашел решение. - Если вы не помогли, я не могу найти решение - еще одно большое спасибо. )

 

Я искал именно нижеприведенный код.
Но мне все еще нужно проверить его.

Period_Look=iTime(Symbol(),PERIOD_W1,0); // actually I need PERIOD_D1 - but did not work correctly - I still need to see first Hour of Monday for test.
Period_Shift=iBarShift(Symbol(),PERIOD_H4,Period_Look);
Period_Time=iTime(Symbol(),PERIOD_H4,Period_Shift-1);

GMT_Offset=(Period_Time-iTime(Symbol(),PERIOD_W1,0)-PeriodSeconds(PERIOD_D1))/PeriodSeconds(PERIOD_H1); // result: 1

Если приведенный выше код не подходит, пожалуйста, дайте мне знать.

Большое спасибо @honest_knave и @Marco.

 

Ну, Макс, подумайте вот о чем: если вы сканируете паттерн, и он формируется, то ваш триггер сработает независимо от отметки времени.

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

Не совсем, но достаточно близко.