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

Принципы работы функций Метастока (объяснение параметра NumBarRight):
           
  При присоединении советника к графику бумаги, на нем появится много сигналов на покупку/продажу. Но поскольку нам надо каждый раз при срабатывании функции MoveMICEX_SHR формировать заявки не по всем имеющимся сигналам на графике, а только на нужном баре (обычно последнем, т.е крайнем справа), то мы должны задать номер бара от правого края, на котором и будет каждый раз, при вызове функции MoveMICEX_SHR, проверяться наличие Buy- или Sell- сигнала! Для этого в параметрах функции MICEX_SHR и должен задаваться номер этого бара. Если задать '0' - то будет проверяться на сигнал самый последний бар, при значении '1' будет проверятся бар с номером на единицу меньшим самого последнего бара (т.е. предпоследний). Если задать '2' - то будет проверяться третий бар от конца графика и т.д.
   При вызове внешних функций в их параметры передаются массивы из указанных в параметрах значений для КАЖДОГО БАРА графика (т.е.целиком все значения графика). Например, если это Close-цена, то в функцию передаются все Close-цены каждого бара графика. Если же, например, в параметре была указана не цена закрытия, а условие BuySell-срабатывания функции MoveMICEX_SHR (MoveFORTS), то в функцию передаются результаты обработки в Метастоке BuySell-условий советника на каждом баре! Если затем мы пройдем по каждому загруженному в функцию бару, то увидим в каждом из них результат выполнения BuySell-условия. Если на каком-то баре будет истинно Sell-условие или Buy-условие, то затем формируется соответствующая торговая заявка в АДирект.
  ВАЖНО: параметр NumBarRight задает номер бара от правого края графика, на котором происходит проверка на наличие Buy, Sell или другого сигнала. Если у вас на графике сигналы будут появляться не на заданном параметром NumBarRight баре, то заявки не будут подаваться в АД-терминал! Или по-другому, все сигналы расположенные НЕ НА заданном NumBarRight баре НЕ ИСПОЛНЯЮТСЯ в любом случае, в том числе и при отсутствии позиций! Функция MoveMICEX_SHR (MoveFORTS) проверяет, появился ли в этой зоне бар с BuySell-сигналом. Если в этой "зоне" появился бар с Buy- или Sell- сигналом, то происходит вызов модуля MoveOrderADirect3.exe для формирования соответствующей Buy или Sell заявки в АД-терминал. В BuySell формулах эксперта при необходимости можно задавать проверку не одного, но и двух и более баров графика, не обязательно соседних, а любых, по выбору пользователя. Тогда в формуле эксперта будет два или более вызовов функций MoveMICEX_SHR (MoveFORTS):
  FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","1234-000",50,1,B,0,Simple,0,FBuy,2), False){сканируется 2-ой бар на Buy-сигнал}
  FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","1234-000",50,1,B,0,Simple,0,FBuy,3), False){сканируется 3-ой бар на Buy-сигнал}
                       
аналогично для Sell-условия советника:
  FNull:=IF(FSell
, ExtFml("Borisoff.MoveMICEX_SHR","
1234-000",50,1,S,0,Simple,0,FSell,1), False); {сканируется 1-ой бар на Sell-сигнал}
  FNull:=IF(FSell, ExtFml("Borisoff.MoveMICEX_SHR","1234-000",50,1,S,0,Simple,0,FSell,3), False){сканируется 3-ой бар на Sell-сигнал}
                   
  При NumBarRight > 0 все сигналы на графике явлются неисчезающими (т.е.подтвержденными), т.к. возникают на уже окончательно сформированных барах. А а при NumBarRight = 0   (т.е.при проверке на наличие торговых сигналов на еще не сформированном баре) сигналы могут возникать и исчезать, пока не завершится формирование бара. Поэтому при NumBarRight = 0  торговая система может среагировать на какие-либо сильные рыночные движения более быстро, т.к. не будет дожидаться окончательного формирования крайне-правого бара на графике. Но при этом требуется более точное определение условий для Buy/Sell сигнала, чтобы этот сигнал после окончательного формирования бара уже не пропал.
  (!!!) Совет: Если у вас есть сигналы на графике, а заявки в АД-не создаются, то нужно в формуле функции MoveMICEX_SHR вместо FBuy или FSell подставить значение 'True', т.е:
     FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","5678-000",50,1,B,1.05,Simple,0,True,2), False);
                                                                                                                                 
^
тогда сразу должны появиться заявки в АД-терминале. Если заявки сразу появятся - значит, библиотека и модуль работают правильно, а нужно только затем вместо True правильно задать значение параметра NumBarRight).

  (
!!!)Для выбора правильного значения NumBarRight нужно вначале понаблюдать, на каком баре, от правого края, обычно начинают появляться первые BuySell-сигналы от наложенного на график Советника. Если первый сигнал появляется на нулевом баре, и уже не пропадает, то можно задать NumBarRight=0. Если на нулевом баре сигнал то пропадает, то снова появляется, значит лучше задать NumBarRight=1, чтобы использовать уже окончательно сформированный сигнал. Соответственно, если сигнал возникает только на 1-ом или 2-ом и т.д. баре от правого края графика, то соответственно и значение NumBarRight нужно задавать равным номеру этого бара.

Hosted by uCoz