[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 563

 
попробуйте выполнить недопустимую операцию. например деление на 0.
 
sergeev:
попробуйте выполнить недопустимую операцию. например деление на 0.
бред.
 
ditrader:
бред.

бред.
 
sss2019:

Скажите почему может быть ошибка 130

ticket1 = OrderSend(Symbol(),OP_BUYLIMIT,Lot,Level,Slippage,0,0,0,MagicNumber,0,Green);

Однозначно Level. Проверьте на правильность цены и её нормализацию.

Для БайЛимит Level должен быть ниже цены Ask, причём на расстояние, не меньшее StopLevel вашего ДЦ.

Т.е. if (Ask - StopLevel*Point < Level) Level = NormalizeDouble(Ask - StopLevel*Point, Digits);

Level должна быть нормализована до Digits перед её передачей параметром в OrderSend();

 
takeda:

Как программно завершить выполнение эксперта - что-нибудь типа terminate(0) ?

Есть ли в MQL4 такая возможность или завершить работу эксперта можно только вручную?

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


Закрыть свое окно, дать команду самому себе на удаление...

PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);
 
FAQ:


Закрыть свое окно, дать команду самому себе на удаление...


Это тоже криво.

Во-первых, закроется окно графика (а на нём могут в это время индикаторы полезные находиться).

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

 
Я привел пример команды на удаление себя экспертом. Можно закрыть свое окно, причем закроется только то окно на котором стоит эксп. Но это другой код.
 
takeda:

Как программно завершить выполнение эксперта - что-нибудь типа terminate(0) ?

Есть ли в MQL4 такая возможность или завершить работу эксперта можно только вручную?

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


Отсюда и рисуйте вариант своего: "программно":

"Прекращение текущего сеанса выполнения специальной функции start() для программ всех видов может осуществляться по причине отсоединения программы от графика, смены финансового инструмента и/или периода графика, смены счета, закрытия графика, а также в результате завершения работы клиентского терминала. Если специальная функция start() выполнялась в момент команды на завершение работы, то время, отпущенное терминалом для завершения исполнения функции, составляет 2,5 секунды. Если после поступления команды на завершение работы специальная функция start() продолжит работу более указанного лимита времени, то она будет принудительно остановлена клиентским терминалом.

Специальная функция deinit().


Собственным свойством специальной функции deinit() является её исполнение при закрытии (деинициализации) программы. Если в программе есть описание специальной функции deinit(), то она будет вызвана (и исполнена) в момент закрытия программы. Если в программе нет специальной функции deinit(), то при закрытии программы не выполняется никаких действий.

Специальная функция deinit() вызывается для исполнения клиентским терминалом также при завершении работы клиентского терминала, при закрытии окна финансового инструмента, непосредственно перед сменой финансового инструмента и/или периода графика, при удачной перекомпиляции программы в редакторе MetaEditor, при смене входных параметров, а также при смене счета.

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

 
Roman.:



Специальная функция deinit().


Вызов функции deinit() не приводит к завершению программы. Советник/индикатор останется на графике и продолжит обрабатывать тики.
 
PapaYozh:

Вызов функции deinit() не приводит к завершению программы. Советник/индикатор останется на графике и продолжит обрабатывать тики.


а если вызвать для работы иной сов программно:

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

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