Самый простой вариант - открыть в терминале еще одно окно с тем
же инструментом и переключать в нем таймфреймы в свое удовольствие.
..
owl писал (а):
Самый простой вариант - открыть в терминале еще одно окно с тем же инструментом и переключать в нем таймфреймы в свое удовольствие. ..
Самый простой вариант - открыть в терминале еще одно окно с тем же инструментом и переключать в нем таймфреймы в свое удовольствие. ..
Совершенно верно!
А в советнике везде использовать нужный период. Например:
// H0 = High[0] // неправильно H0 = iHigh(Symbol(),PERIOD_H1,0); // а так правильно ... //MA = iMA(Symbol(),0,MAPeriod,0,MODE_EMA,PRICE_MEDIAN,1); // неправильно MA = iMA(Symbol(),PERIOD_H1,MAPeriod,0,MODE_EMA,PRICE_MEDIAN,1); // а так правильно ...
Тогда и тестировать можно хоть на часах хоть на минутках.
albe:
А вот это уже Пишу после полученных двух ответов от OWL и PSmits. Потому что при посылке текста с ответом выскакивает окно с ЕНТОЙ фигней:
_____________________________________________________________________________________________________________________________________________________________________
_________________________________________________________________________________________________________________________________________________________________
Регистрация на сайте MQL4.community состоит из двух шагов:А вот это уже Пишу после полученных двух ответов от OWL и PSmits. Потому что при посылке текста с ответом выскакивает окно с ЕНТОЙ фигней:
_____________________________________________________________________________________________________________________________________________________________________
К сожалению, Ваше сообщение не может быть добавлено. Возможно, вы ввели дубликат существующего сообщения,вступили в силу ограничения неподтверждённого пользователяили интервал между добавлениями сообщений составил менее 30 сек.
© 2000-2006, MetaQuotes Software Corp. All rights reserved.
_________________________________________________________________________________________________________________________________________________________________
- предварительная регистрация, позволяющая читать, открыть 1 новую тему или написать не более 3х комментов
- полная регистрация после проверки модератором, после чего становятся доступны все функции
PSmith писал (а):
Совершенно верно!
А в советнике везде использовать нужный период. Например:
Тогда и тестировать можно хоть на часах хоть на минутках.
owl писал (а):
Самый простой вариант - открыть в терминале еще одно окно с тем же инструментом и переключать в нем таймфреймы в свое удовольствие. ..
Самый простой вариант - открыть в терминале еще одно окно с тем же инструментом и переключать в нем таймфреймы в свое удовольствие. ..
Совершенно верно!
А в советнике везде использовать нужный период. Например:
// H0 = High[0] // неправильно H0 = iHigh(Symbol(),PERIOD_H1,0); // а так правильно ... //MA = iMA(Symbol(),0,MAPeriod,0,MODE_EMA,PRICE_MEDIAN,1); // неправильно MA = iMA(Symbol(),PERIOD_H1,MAPeriod,0,MODE_EMA,PRICE_MEDIAN,1); // а так правильно ...
Тогда и тестировать можно хоть на часах хоть на минутках.
Спасибо Renat-у, теперь я могу ответить. "Открыть в терминале еще одно окно с тем же инструментом"
Да, способ, конечно, простой, но не ЖЕСТКИЙ. К тому же, в новом окне отражаться будут только текущие уровни открытия SL и TP, а созданные советником в процессе его работы графические ОБЪЕКТЫ не видны. Не полная получается картина!!! Не теряю надежды найти другой способ.Что касается замены в кодах 0 на PERIOD_H1, это, КОНЕЧНО ЖЕ, но все равно будут выскакивать события образования новых свечей не вовремя (например: на 15-ти минутках это будет в 4 раза чаще, чем на нужном часовом графике). А на это событие написан отдельный код обрабатывающий внешний вид свечи. Поэтому получится полная путаница. В этом то вся и прелесть.
Согласно этому:
Отсоединение программы от графика, смена финансового инструмента и/или периода графика, смена счета, закрытие графика, а также завершение работы клиентского терминала прерывает выполнение программы. Если функция start() выполнялась на момент команды на завершение работы, оставшееся время работы ограничивается 2.5 секундами. Программа может узнать, что её пытаются завершить при помощи встроенной функции IsStopped() и корректно закончить свою работу.
Если скрипт выполняется и в начале привязан к определённому периоду а потом вы поменяли период на часы например то поидее если выполняется в этот момент функция start то ей ещё даётся 2. 5 минуты и этого достаточно чтобы узнать что прерывается выполнение и можно успеть сохранить статус, если надо для очередного тика или бара (смотря с чем работает стратегия).
а в функции deinit можно узнать что деинициализация произошла по причине смены таймфрейма
bool isChartChanged = false;
int deinit()
{
switch(UninitializeReason())
{
case REASON_CHARTCLOSE:
case REASON_REMOVE: CleanUp(); break; // очистка и освобождение ресурсов.
case REASON_RECOMPILE:
case REASON_CHARTCHANGE: isChartChanged = true; break;// Выставяем флаг что поменялся таймфрейм
case REASON_PARAMETERS:
case REASON_ACCOUNT: StoreData(); break; // подготовка к рестарту.
}
...
}
тогда в init
int init()
{
if(isChartChanged == true)
{
isChartChanged = false;
return 0;
}
....
}
То есnь так можно избежать переинициализации при смене таймфрейма. Можно использовать один открытый график и видеть на разных таймфреймах свои граф объекты. А в функции старт проверять на каком таймфрейме сформировался новый бар и выполнять соответсвующую ветку и всё в одном потоке скрипта а не в разных при прикреплении советника к чарту с таймфреймом.
Отсоединение программы от графика, смена финансового инструмента и/или периода графика, смена счета, закрытие графика, а также завершение работы клиентского терминала прерывает выполнение программы. Если функция start() выполнялась на момент команды на завершение работы, оставшееся время работы ограничивается 2.5 секундами. Программа может узнать, что её пытаются завершить при помощи встроенной функции IsStopped() и корректно закончить свою работу.
Если скрипт выполняется и в начале привязан к определённому периоду а потом вы поменяли период на часы например то поидее если выполняется в этот момент функция start то ей ещё даётся 2. 5 минуты и этого достаточно чтобы узнать что прерывается выполнение и можно успеть сохранить статус, если надо для очередного тика или бара (смотря с чем работает стратегия).
а в функции deinit можно узнать что деинициализация произошла по причине смены таймфрейма
bool isChartChanged = false;
int deinit()
{
switch(UninitializeReason())
{
case REASON_CHARTCLOSE:
case REASON_REMOVE: CleanUp(); break; // очистка и освобождение ресурсов.
case REASON_RECOMPILE:
case REASON_CHARTCHANGE: isChartChanged = true; break;// Выставяем флаг что поменялся таймфрейм
case REASON_PARAMETERS:
case REASON_ACCOUNT: StoreData(); break; // подготовка к рестарту.
}
...
}
тогда в init
int init()
{
if(isChartChanged == true)
{
isChartChanged = false;
return 0;
}
....
}
То есnь так можно избежать переинициализации при смене таймфрейма. Можно использовать один открытый график и видеть на разных таймфреймах свои граф объекты. А в функции старт проверять на каком таймфрейме сформировался новый бар и выполнять соответсвующую ветку и всё в одном потоке скрипта а не в разных при прикреплении советника к чарту с таймфреймом.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А вот это уже Пишу после полученных двух ответов от OWL и PSmits. Потому что при посылке текста с ответом выскакивает окно с ЕНТОЙ фигней:
--------------------------------------------------------------------------------------------------------------------------------------------
К сожалению, Ваше сообщение не может быть добавлено. Возможно, вы ввели дубликат существующего сообщения,
вступили в силу ограничения неподтверждённого пользователя
или интервал между добавлениями сообщений составил менее 30 сек.
© 2000-2006, MetaQuotes Software Corp. All rights reserved.
---------------------------------------------------------------------------------------------------------------------------------------------
"Открыть в терминале еще одно окно с тем же инструментом". Да, способ, конечно, простой, но не ЖЕСТКИЙ. К тому же, в новом окне отражаться будут только текущие уровни открытия, SL и TP, а созданные советником в процессе его работы графические ОБЪЕКТЫ не видны. Не полная получается картина!!! Не теряю надежды найти другой способ. Что касается замены в кодах 0 на PERIOD_H1, это, КОНЕЧНО ЖЕ, но все равно будут выскакивать события образования новых свечей не вовремя (например: на 15-ти минутках это будет в 4 раза чаще, чем на нужном часовом графике). А на это событие написан отдельный код обрабатывающий внешний вид только что сформировавшейся свечи. Поэтому получится полная путаница. В этом то вся и прелесть.