На
главную страницу
Примеры
параметров для Buy- и Sell- условий эксперта или
индикатора Метастока с вызовом функций MoveMICEX_SHR и
MoveFORTS:
1. Пример BuySell-условий для
"переворотной" торговой системы, т.е. при
сигнале Buy открывающую лонговую позицию
или переворачивающуюся из шорта в лонг, а по
сигналу Sell открывающую шортовую
позицию или переворачивающуюся из лонга в шорт.
При расчете размера заявки для открытия новой
позиции при перевороте автоматически
учитываются позиции уже имеющиеся в портфеле,
чтобы их закрыть:
{Пример для Buy-условия}
FBuy:=({Здесь прописываются Ваши формулы
открытия BUY-позиции без фигурных скобок});
FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","1234-000",-1,0.5,B,1.05,Simple,0,FBuy,2), False); {формируем Buy-заявку если есть Buy-сигнал}
FNull1:=IF(FBuy,
ExtFml("Borisoff.MoveMICEX_SHR","5678-000",-1,0.5,B,1.05,Simple,0,FBuy,2), False); {это Buy-заявка для другого портфеля, если
нужно}
FBuy; {рисуем
Buy-сигнал на графике если нужно}
{Пример для Sell-условия}
FSell:=({Здесь
прописываются Ваши формулы открытия SELL-позиции
без фигурных скобок});
FNull1:=IF(FSell, ExtFml("Borisoff.MoveMICEX_SHR","1234-000",-1,0.5,S,0.85,Simple,0,FSell,2), False); {формируем Sell-заявку если есть Sell-сигнал}
FNull2:=IF(FSell,
ExtFml("Borisoff.MoveMICEX_SHR","5678-000",-1,0.5,S,0.85,Simple,0,FSell,2), False); {эта Sell-заявка для другого портфеля, если
нужно}
FSell; {рисуем
Sell-сигнал на графике если нужно}
2. Пример BuySell-условий для обычной
торговой системы:
{Пример для Buy-условия}
FBuy:=({Здесь прописываются Ваши формулы
открытия BUY-позиции без фигурных скобок});
FNull1:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","1234-000",-1,0.5,B,1.05,Simple,0,FBuy,2), False); {формируем Buy-заявку если есть Buy-сигнал}
FNull2:=IF(FBuy,
ExtFml("Borisoff.MoveMICEX_SHR","5678-000",-1,0.5,B,1.05,Simple,0,FBuy,2), False); {это Buy-заявка для другого портфеля, если
нужно}
FBuy; {рисуем
Buy-сигнал на графике если нужно}
{Пример для ExitBuy-условия}
FExitBuy:=({Здесь прописываются Ваши формулы
закрытия BUY-позиции без фигурных скобок});
FNull:=IF(FExitBuy, ExtFml("Borisoff.MoveMICEX_SHR","1234-000", 0, 1, B,1.05,Simple,0,FExitBuy,2), False); {нулевой размер доли в портфеле
сокращает позиции до нуля}
FNull1:=IF(FExitBuy,
ExtFml("Borisoff.MoveMICEX_SHR","5678-000", 0, 1, B,1.05,Simple,0,FExitBuy,2), False); {это заявка для другого портфеля, если
нужно}
FExitBuy; {рисуем
ExitBuy-сигнал на графике если нужно}
{Обратите ВНИМАНИЕ, что для
выхода из Buy-позиции (ExitBuy) должна
использоваться Buy-заявка с нулевым размером
доли в портфеле}
{Пример для Sell-условия}
FSell:=({Здесь
прописываются Ваши формулы открытия SELL-позиции
без фигурных скобок});
FNull:=IF(FSell, ExtFml("Borisoff.MoveMICEX_SHR","1234-000",-1,0.5,S,0.85,Simple, 0, FSell,2), False); {формируем Sell-заявку
если есть Sell-сигнал}
FNull1:=IF(FSell,
ExtFml("Borisoff.MoveMICEX_SHR","5678-000",-1,0.5,S,0.85,Simple, 0, FSell,2), False); {эта Sell-заявка для другого портфеля, если
нужно}
FSell; {рисуем
Sell-сигнал на графике если нужно}
{Пример для ExitSell-условия}
FExitSell:=({Здесь
прописываются Ваши формулы закрытия SELL-позиции
без фигурных скобок});
FNull:=IF(FExitSell, ExtFml("Borisoff.MoveMICEX_SHR","1234-000", 0, 1, S,0.85,Simple,0,FExitSell,2), False); {нулевой размер доли в
портфеле сокращает позиции до нуля}
FNull1:=IF(FExitSell,
ExtFml("Borisoff.MoveMICEX_SHR","5678-000", 0, 1, S,0.85,Simple,0,FExitSell,2), False); {эта Sell-заявка для
другого портфеля, если нужно}
FExitSell; {рисуем ExitSell-сигнал на графике если нужно}
{Обратите ВНИМАНИЕ, что для
выхода из Sell-позиции (ExitSell) должна
использоваться Sell-заявка с нулевым размером
доли в портфеле}
Выделенные серым
цветом значения параметров задаются
пользователем такими, как ему необходимо.
Выделенные же темно-черным цветом
элементы являются обязательным
форматом! Переменная FNull
может описываться несколько раз и позволяет
корректно разделить вызов функции MoveMICEX_SHR (MoveFORTS)
и рисование торговых сигналов на графике в
Метастоке. В советнике (эксперте) Buy и Sell уcловия
прописываются на вкладках 'Symbols'.
В формулах можно задавать несколько IF
- условий с разными значениями параметров в MoveMICEX_SHR
или MoveFORTS функциях, например, при
использовании одной бумаги для нескольких
портфелей. Для графика каждого торгуемого
инструмента следует делать отдельного эксперта
(советника) с индивидуальными параметрами по
этому инструменту.
(!)ВАЖНОЕ ЗАМЕЧАНИЕ: перед
началом автоматической посылки заявок в
АД-терминал настоятельно рекомендуется сначала
проверить, корректные ли сигналы, в заданные
моменты, выдает на графике ваша ТС и лишь после
окончательной настройки всех сигналов и
формул Советника можно подключать робота и
передавать заявки в АД-терминал. Чтобы на этапе
настройки ТС не посылались заявки в АД-терминал
можно в формулах Советника в Метастоке
закомментировать фигурными скобками { }
строки с функциями 'ExtFml("Borisoff.Move...'
формирующими заявки в АД-терминал, или ВКЛЮЧИТЬ в
АД-терминале подтверждение подаваемых заявок
(Меню->Сервис->Параметры->Безопасность->Включить
подтверждения при подаче поручений).
Параметры и принципы работы большинства
стопов описаны в руководстве
пользователя для АД-терминала.
Примеры параметров для основной Buy-заявки
и стоп-заявок, и например, с NumBarRight=1:
1) Для Trailing-стопа:
FNull:=If(BuyOrder,
ExtFml("Borisoff.MoveMICEX_SHR","12345-000",{размер
позиции в стопе},{проскальзывание при исполнении
стопа}, S{тип заявки для стопа}, {%размещения стопа
от Close-цены (стоп-цена)}, Trailing, {%снижения текущ.цены
от максимума, зафиксированного после приема
поручения для фиксации прибыли}, BuyOrder, 1), False);
2) Для простого Simple-стопа с
фиксацией прибыли:
FNull:=If(BuyOrder, ExtFml("Borisoff.MoveMICEX_SHR","12345-000",
{размер позиции в стопе}, {проскальзывание при
исполнении стопа}, S{тип заявки для стопа},
{%размещения стопа от Close-цены (стоп-цена)}, Simple,
{%фиксации прибыли, в случае если цена на бирже
сначала поднимется на заданный процент от
Close-цены}, BuyOrder, 1), False);
Если в Советнике
используется четыре вида сигналов (4 строки):
ExitBUY;
SELL;
ExitSELL;
BUY;
то для правильной работы логики в этих
строках нужно использовать следующие значения:
{для ExitBUY}
...
FBuy:= ...{ваши формулы Buy-сигнала}
FSell:= ... {ваши формулы Sell-сигнала}
ExitBuy:= ... {доп-условие определяющее выход именно из
лонга}
OrderExitBuy := FBuy AND FSell=False AND ExitBuy;
FNull:=If( OrderExitBuy,
ExtFml("Borisoff.MoveFORTS","12345-000",0,0.5,S,0,Simple,0,OrderExitBuy,NumBar),False);
OrderExitBuy;
{для SELL}
...
FSell:=... {ваши формулы Sell-сигнала}
SellOrder:=FSell;
FNull:=If( SellOrder,
ExtFml("Borisoff.MoveFORTS","12345-000",FPos,0.5,S,0,Simple,0,SellOrder,NumBar),False);
SellOrder;
{для ExitSELL}
...
FBuy:= ...{ваши формулы
Buy-сигнала}
FSell:= ... {ваши формулы Sell-сигнала}
ExitSell:= ... {доп-условие определяющее выход именно
из шорта}
OrderExitSell := FBuy=False AND FSell AND ExitSell;
FNull:=If( OrderExitSell,
ExtFml("Borisoff.MoveFORTS","12345-000",0,0.5,B,0,Simple,0,OrderExitSell,NumBar),False);
OrderExitSell;
{для BUY}
...
FBuy:= ... {ваши формулы Buy-сигнала}
BuyOrder := FBuy;
FNull:=If( BuyOrder,
ExtFml("Borisoff.MoveFORTS","12345-000",FPos,0.5,B,0,Simple,0,BuyOrder,NumBar),False);
BuyOrder;
Разберите этот пример и сделайте у себя
аналогичную логику, чтобы и у Вас все сигналы
работали как нужно.