s-PSI@ControlExit

Мотивация: не обожаю "свалок", среди них и кодов. Универсализм — философия перемещения прогресса. В период СССР (кто не забывает), на ЛЮБОЙ технике ОДНА КНОПОЧКА — соответствовала ОДНОЙ ФУНКЦИИ!

Сейчас ЛЮБОЕ электронное либо бытовое устройство пытается минимизировать количество КНОПОЧЕК. Я согласен с Таковой философией! 😉
Данный скрипт с успехом заменит 5-6 стандартных скриптов.
Кому-то такое ответ может показаться сложным — у вас имеется большой выбор, скриптов для этих целей навалом.
Управление скриптом возможно осуществлять двумя методами:

  • через внешние переменные (отключен);
  • через глобальные переменные терминала (F3).

Какие конкретно переменные настраиваются: extern int MG = 1; // Magic: 1 — Магик "выделенного" ордера extern int Type = -1; // OrderType extern int TypeProfit = 0; // 0 — профитные extern bool OnlyDrop = TRUE; // Закрытие лишь "выбранного" ордера extern int PartClosePercent = 100; // какое количество процентов родительского ордера закрыть extern bool также = ; // Открытие реверсного ордера (при выборе рыночного ордера на закрытие) extern double K_LotsReverse = 1; // Коэффициент повышения размера реверсного ордера extern int Order_SL = 40; // в пп. для 4-ёх знаков extern int Order_TP = 40; // в пп. для 4-ёх знаков extern bool PrintDescription = FALSE; // Распечатать инструкцию по настройке переменных

Для получения доступа к этим настройкам по окончании запуска скрипта необходимо в коде раскомментировать эту строчок:

//#property show_inputs

Мне комфортно осуществлять управление скриптом через глобальные переменные (GV) терминала. Управляющие переменные скрипта имеют префикс "GV_". Как это (управление) осуществляется:

  • в случае если при запуске скрипта отсутствует одна из 11-ти GV-переменных, скрипт сам создаст ВСЕ GV-перменные, заберёт значения из настроек для снова созданных GV-переменных, и на базе их выведет в Alert() то, что планирует сделать;
  • если Вы ещё не освоились и Вам тяжело осмыслить заглавия GV-переменных, возможно на этом этапе, удалив, любую из переменных, к примеру "Slip", задать переменной Print = 1, и скрипт выведет на печать расшифровку для вводимых в GV-переменные значений;
  • настраиваете значения GV-переменных, и в случае если все 11-ть переменных в наличии, скрипт выполнит указанные ему действия.

Советую потренироваться с настройками, удаляя любой раз одну из GV-переменных, и контролируя Ваши намерения с взятой инструкцией скриптом, которую (напоминаю) он выведет в Alert(). Что делать с GV-переменными скрипта по окончании выполненных действий:

  • возможно покинуть;
  • возможно любой раз удалять и создавать заново. Удаление машинально организовывается через переменную (в коде) gb_DeleteGV.

Какие конкретно действия делает скрипт:

  • закрывает рыночные ордера;

* фильтр OnlyDrop — бросаете скрипт на необходимый ордер (0 — ALL; 1 — DROP (Лишь выбранный)) — территория "чувствительности" 25 пп. для 4-ёх знаков;

* фильтр TypeProfit ориентируется на профитность ордеров (0));

* фильтр по Магику (-1 — ALL; 0 — HANDLE; 1 — DROP; > 1 — MagicNumber());

* частичное закрытие ордера в % от OrderLots() (0 < PartClosePercent

  • удаляет отложенные ордера;
  • при закрытии рыночного ордера, что выбран через помещение на него скрипта, при флаге SendReverseOrder = 1, откроется REVERSE (противоположный) ордер с настраиваемым лотом при помощи переменной K_LotsReverse.

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

В случае если имеется конструктивные замечания либо предложения — выкладывайте. Всё другое ложите в другом месте. :))))) ControlExit.zip