Работа советника без прихода нового тика - страница 2

 
korsei писал (а):
FION писал (а):
Практически все советники, которые я до сих пор встречал работают по приходу нового тика. Может быть есть возможность организовать в советнике что-то вроде тактового генератора, для управления ордерами не ожидая прихода нового тика, а сразу по выполнении условия ?

А какое условие может выполниться, если не поступил тик (не изменилась цена)? Может только выйти какой-то timeout.
Может быть куча причин - реквот или неудачная попытка открытия ордера по тику ну и т.д.
 
void start(){
while(!IsStopped()){
RefreshRates();
//--------------------------
if (IsConnected)
{
// advisor code
}
else
{
//no connection alert
}

//--------------------------
Sleep(700);
}}

интересно, я использую именно такую структуру, некоторое время все идет нормально, но бывают моменты когда цикл прекращается и эксп. ждет прихода нового тика! На сколько я понимаю, такой цикл должен продолжать работать даже если пропала связь (ну естественно если не стоит команды остановить эксп. при отсутствии связи)?
 

Кажется работа init(), start() ограничена 2.5 сек. Или это если зациклить что-нибудь в init то прервётся через 2.5 мин, а если в start то будет бесконечно долго пока график не закроешь или терминал вообще?

 
Работа deinit() ограничена 2.5 сек, других ограничений вроде нет.
 
elritmo:

Кажется работа init(), start() ограничена 2.5 сек. Или это если зациклить что-нибудь в init то прервётся через 2.5 мин, а если в start то будет бесконечно долго пока график не закроешь или терминал вообще?

В какой -то из статей вычитал, чтобы этого избежать и иметь возможность что-то менять во входных параметрах эксперта необходимо бесконечные циклы выносить в скрипт.
 
Renat:
Необходимо упомянуть, что зацикленные эксперты нельзя протестировать на истории.


Добрый день!

Ренат , будет ли в MQL5 событие по таймеру ?
что то вроде

void timer()
--- к имеющимся
void init()
void statr()
void deinit()

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


с уважением
 
YuraZ:
Ренат , будет ли в MQL5 событие по таймеру ?
Хороший вопрос! Присоединяюсь.
 
YuraZ:

Ренат , будет ли в MQL5 событие по таймеру ?
Пока сказать точно не можем, но вероятность добавления событий достаточно велика.

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

А передача структур в функции DLL бедет реализована? Таймсерии значений индиакторов тожее хотелось бы передать в DLL через указатель на первое значение как это уже можно делать для таймсерий баров.

 
Решил не создавать новую тему. Так как вопрос во многом относится к этой.
Как получить новый тик в зацикленной start(). Зацикливание по таймеру брал из этого примера, но вот в хелпе по MQL:
При поступлении новых котировок выполняется функция start() у присоединенных советников и пользовательских индикаторов. Если при поступлении новой котировки выполнялась функция start(), запущенная на предыдущей котировке, то пришедшая котировка будет проигнорирована советником. Все пришедшие во время выполнения программы новые котировки программой игнорируются до тех пор, пока не завершится очередное выполнение функции start(). После этого функция start() будет запущена только после прихода очередной новой котировки.

Как это обойти? хочу во время работы советника писать тики в файл, без зацикливания всё пишется с приходом нового тика.
С зацикливания пишется первый тик. Что и соответсвует логике из хелпа. Можно конечно раз в секунду писать котировку, но хотелось бы писать её как только она пришла. Я конечно понимаю что можно где то запоминать котировку и как только меняется писать в файл. Но иногда то тики одинаковые приходят. Может функция какая есть?
Не хочется запускать два одинаковых графика и вешать разных советников.




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