На главную страницу

Примеры параметров для 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;


Разберите этот пример и сделайте у себя аналогичную логику, чтобы и у Вас все сигналы работали как нужно.

Hosted by uCoz