Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
До сборки 600 (3 февраля2014 года) был только start(). Теперь есть OnTick (советники,) OnCalculate (индикаторы,) и OnStart (скрипты.) Я забыл, что вы говорили об индикаторе.
Начните использовать новые функции обработки событий - Функции - Основы языка - Справочник MQL4. См. раздел Как правильно делать возврат назад.
Да! Теперь я понял вас гораздо яснее, за что вам огромное спасибо.
А ваш комментарий #20 натолкнул меня на еще одну идею. (Когда-то вы поделились со мной этой идеей, и теперь я держу ее в голове).
Также я пытаюсь написать лучший код для моего индикатора, и сейчас я пытаюсьизучить комментарий#18-@Marco vd Heijden
Тогда я буду широко изучать ваш комментарий.
Еще раз спасибо!
Пожалуйста, поместите его в эксперт вместо индикатора, это позволит легче использовать его в будущем, когда вы захотите добавить свою торговую стратегию.
Что касается вопроса о барах, храните время открытия бара в переменной datetime и просто сравнивайте записанное время с реальным временем, тогда всякий раз, когда возникает новый бар, он будет срабатывать.
Вот пример:
Прежде всего, огромное спасибо за Ваш комментарий.
Я все еще остаюсь на Индикаторе. Я попробовал кое-что, и это хорошо работает для меня, но я столкнулся с одной проблемой, я не могу проверить его на 'Strategy Tester' - он выдает мне фатальную ошибку: MT4 'Not Responding'.
#1 - Марко, не могли бы вы сообщить мне, откуда это происходит, пожалуйста?
#2 - Приведенный ниже код правильный?
Ниже приведен код, который я пробовал.
string _vlineName_M5 ;
int _prd = PERIOD_M5 ;
int _prd_add = PeriodSeconds( _prd ) ;
datetime _dt_Prd_M5 ;
int _time_M5 ;
datetime _prdCvrt_M5 ;
datetime _timeCvrt_M5 ;
//---init
EventSetMillisecondTimer( 10 );
_CreateLines();
//---timer
if ( _dt_Prd_M5 != iTime( Symbol(), _prd, 0 ) )
{
_dt_Prd_M5 = iTime( Symbol(), _prd, 0 );
_CreateLines();
}
//---_CreateLines()
//---
int _dayCnt_M5 = 0;
int _cnt_M5 = iBarShift( Symbol(), 0, iTime( Symbol(), PERIOD_M15, _dayCnt_M5 ) );
for ( int i = 0; i < _cnt_M5; i++ )
{
//---time convert
_time_M5 = Time[i];
_prdCvrt_M5 = PeriodSeconds( _prd );
_timeCvrt_M5 = _time_M5 - ( _time_M5 % _prdCvrt_M5 ) + _prdCvrt_M5;
//---name
_vlineName_M5 = _prefix + "PERIOD_M5 - " + TimeToStr( _timeCvrt_M5, TIME_DATE|TIME_MINUTES );
//---
if ( _Period < PERIOD_M30 )
{
{
ObjectCreate( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0 );
}
}
}
ObjectMove ( 0, _vlineName_M5, 0, _dt_Prd_M5, 0 );
Я прекратил работу над ним, я продолжу после вашего комментария. (На самом деле я беспокоюсь о том, что приведенный выше код раздавит мои другие индикаторы, пока я использую его вместе).
Большое спасибо.
Chart Event для бэктестера MT4 (Migel) - MQL4 форум
Функция таймера не работает в тестере стратегий MT4, поэтому ее нужно поместить в функцию тика.
Chart Event для MT4 Backtester (Migel) - MQL4 форум
Большое спасибо!
Я точно знаю, что проблема не из кода.
Marco vd Heijden:
Вот пример:
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetMillisecondTimer(250);
//--- create some things
CreateLines(); // Function that creates time lines
//--- load open times
M5=iTime(Symbol(),PERIOD_M5,0);
//--- set timelines
ObjectMove(0,"Time-M5",0,M5,0);//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
if(M5!=iTime(Symbol(),PERIOD_M5,0))
{
M5=iTime(Symbol(),PERIOD_M5,0); // overwrite old value with new value
//Alert("New Bar on M5! ",TimeToString(M5,TIME_SECONDS));
// do something...
//ObjectMove(0,"Time-M5",0,M5,0);
}
}
//+------------------------------------------------------------------+
Большое спасибо.
Этот комментарий многому меня научил.
Похоже, что этот код работает хорошо для меня, который я разместил в предыдущем комментарии.
Но мне нужно, чтобы этот код (который работает для Period_M5) не работал в часы 12:00 (это может быть 13:00, 14:00...) и ниже код игнорирует 'OBJ_VLINE' прошлые времена (это хорошо для меня), но в то время как сейчас часы 12:00 ниже код показывает мне дополнительно текущее время VLINE, но я не хочу этого.
{
ObjectCreate( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0 );
} //---if Close
Я попробовал кое-что, что решило мою проблему, но это не работает правильно.
Также я добавил скриншот.
Пожалуйста, помогите мне, мне очень нужно решить эту проблему.
Огромная благодарность заранее.
Как вы узнали?
Из-за потери соединения я попробовал использовать"Тестер стратегий" во время разрыва соединения, и он отлично работает для меня.
После того, как я прочитал ваши и г-на Уильяма комментарии, и тогда я знаю наверняка об этом.
Этого недостаточно, прости те?
{
ObjectCreate( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0 );
} //---if Close
В этом примере вы получите строку в каждый час, кроме 12:00, потому что вы исключили оператор != differ then 12, поэтому когда он == равен 12, строки нет.
В этом примере вы получаете строку в каждый час, кроме 12:00, потому что вы исключаете с != differ then 12 оператор, так что когда он == равен 12 нет строки.
Гениальный человек, спасибо :))
Это просто, но я не возражаю против этого. Просто просто и просто вау.
(На самом деле я использую '==' в моем индикаторе, но я действительно сосредоточился на 'OnTimer')
//--- второй раз редактировалось...
Это работает хорошо для меня, но когда время будет 00:00 - дополнительное текущее время VLINE показывает снова.
TimeHour( _timeCvrt_M5 ) == 1 ||
TimeHour( _timeCvrt_M5 ) == 2 ||
TimeHour( _timeCvrt_M5 ) == 3 ||
TimeHour( _timeCvrt_M5 ) == 5 ||
TimeHour( _timeCvrt_M5 ) == 6 ||
TimeHour( _timeCvrt_M5 ) == 7 ||
TimeHour( _timeCvrt_M5 ) == 9 ||
TimeHour( _timeCvrt_M5 ) == 10 ||
TimeHour( _timeCvrt_M5 ) == 11 ||
TimeHour( _timeCvrt_M5 ) == 13 ||
TimeHour( _timeCvrt_M5 ) == 14 ||
TimeHour( _timeCvrt_M5 ) == 15 ||
TimeHour( _timeCvrt_M5 ) == 17 ||
TimeHour( _timeCvrt_M5 ) == 18 ||
TimeHour( _timeCvrt_M5 ) == 19 ||
TimeHour( _timeCvrt_M5 ) == 21 ||
TimeHour( _timeCvrt_M5 ) == 22 ||
TimeHour( _timeCvrt_M5 ) == 23
)
(Я несколько раз обновлял этот комментарий, потому что я был исследован).
Пожалуйста, помогите мне.