привязка к ТФ

 
как выразить в коде след задачу: надо в тестере прогнать в разных ТФ, но чтоб сам советник работал только в заданном ТФ, независимо от того, на какой ТФ выставить в тестере. например, прогоняем в тестере на м30, а советник работает по сигналам м15. я уже предлагал свой вариант, но он видимо повел программистов по ложному пути и чтоб не смущать не буду сюда выкладывать. теперь вопрос опять стал актуальным, кто сталкивался и как решил такую задачу?
 
delyus:
как выразить в коде след задачу: надо в тестере прогнать в разных ТФ, но чтоб сам советник работал только в заданном ТФ, независимо от того, на какой ТФ выставить в тестере. например, прогоняем в тестере на м30, а советник работает по сигналам м15. я уже предлагал свой вариант, но он видимо повел программистов по ложному пути и чтоб не смущать не буду сюда выкладывать. теперь вопрос опять стал актуальным, кто сталкивался и как решил такую задачу?

Просто все расчеты делаются по заданному таймфрейму. Но если заданный М15, то тестировать на М30 можно будет только все тики. Наоборот особых проблем нет. Наоборот, это значит заданный М30, тестируем на М15.

 

Указывайте в эксперте ТФ явно, типа iOpen(NULL,15,1), iCustom(NULL,15,....), iMA(NULL,15,...) и т.д. Ну и модель при тестировании на большем ТФ должна быть только все тики.

 

Фигаро,

это если на индикаторе, а если на своем уникальном алгоритме? неужели нельзя где нибудь просто указать что-то типа "онли м15?" совершенно безотносительно к какому-либо индюку?

 
delyus:

Фигаро,

это если на индикаторе, а если на своем уникальном алгоритме? неужели нельзя где нибудь просто указать что-то типа "онли м15?" совершенно безотносительно к какому-либо индюку?

Не обязательно индикаторе, iOpen, iClose, iHigh, iLow никакого отношения к индикаторам не имеют, если указать ТФ - это просто обращения к данным кокретного ТФ, а дальше Вы используете их в своем алгоритме. Если Ваш алгоритм не использует, данные никакого ТФ, а просто работает с тиками например, его и так все равно на чем тестировать.


Либо я не выспался, либо детализируйте задачу конкретнее...

 

Фигаро, вот именно что не на тиках! Вставлял разные вариации того что вы написали, компилятор ругается. Куда это вставить? В определении переменых если, то почему без дабл впереди? Если после старт, то где именно и скобки может нужны? Нулл это символ графика, 15 период, а 1 что?

iOpen(NULL,15,1)

 

double iOpen( string symbol, int timeframe, int shift)

shift - Индекс получаемого значения из таймсерии (сдвиг относительно текущего бара на указанное количество периодов назад).

Пользуйтесь справкой, там много полезного пишут.

И ещё такой вопрос: если в Вашем алгоритме не использовалось индюки, iOpen и тому подобное, то что Вы вообще используете? Случайный вход?

 

Харин,

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

 
delyus:

Харин,

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

По-моему, Вы не до конца понимаете смысл вычислений вообще.

Попробуйте вообразить простую картинку:

1. Советник вкл. Исполнение Инит.

2. В советник>> тики-тики-тики .. Запускается и исполняется Старт, Старт, Старт..

3. Советник выкл. Исполнение Деинит.


Что на 2 этапе? Каждый тик запускает старт. Что в старте? Нечто вычисляется. Что именно? А вот, например, критерии входа в рынок. Как вычисляется? А вот, на основе Бидов, Асков, а также цен откр, закр и пр. исторических баров.

Куда же вставить цену открытия бара на М15, если мы работаем на Н1? А туда, где она необходима для вычислений. Никто кроме Вас не может ответить куда именно. Общий ответ - туда, где используется значение цены открытия бара (или закрытия или Хай или что там Ваш советник использует.)

При этом в реальной работе советник не будет использовать ззатруднений, т.к. тики поступают (как бы во все таймфреймы одновременно) в режиме реального времени.

А при тестировании на Н1 нужно же советнику дать инфу с младшего М15, чтоб он не растерялся и не глупил. Для этой цели его не следует запускать по ценам откр на Н1. А следует запускать по всем тикам на Н1. В этом случае советник в нужный момент не переступит нужный Хай (или опен) М15, а как раз его и примет к сведению.

 
delyus:

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

Туда где Вы анализируете данные... Выложите небольшой, не самый значимый кусок кода, где используются значения цены настоящие или прошлые ... Мы подправим, Вы по аналогии сделаете остальное.

 

Фигаро,

вот у меня блок управления часами торговли,

под внешними переменными я определил сначала вот это

int TradingTime;

а потом вставил вот такой блок после блока Ордер Сендов

//------------------------------------------------------------------------------------

int TradingTime()
{
TradingTime=0;
if (TimeHour(TimeCurrent()) >= OpenHour || TimeHour(TimeCurrent())< CloseHour) TradingTime=1;
return(TradingTime);
}

//------------------------------------------------------------------------------------


можно в таком же виде определить и период графика? удобно же и можно вставить в любое место!

Причина обращения: