На
главную страницу
Описание
'RJBuy' и 'RJSell' заявок и торговли по методу
управления капиталом Райана Джонса (пирамидинг):
C помощью 'RJBuy' и 'RJSell' заявок можно
осуществлять автоматическую торговлю каким-либо
инструментом на основе метода управления
капиталом Райана Джонса. Суть метода,
вкратце, торговля фиксированным числом лотов (с
целью управления риском), в зависимости от
изменения показателя Close-цены по бумаге.
При этом, как только Close-цена по бумаге вырастает
на заданную в параметре 'StepRJ' процентную
величину, относительно некоторого начального
значения, то происходит увеличение размера
начальной позиции на кол-во, кратное
начальному количеству лотов, заданному в
параметре '-MaxQuantInPortfel' функции
MoveMICEX_SHR (MoveFORTS). Величина 'StepRJ' называется шагом
пирамидинга. А кол-во бумаг до которого
будет увеличена позиция в портфеле на очередном
шаге, будет кратно значению
параметра '-MaxQuantInPortfel'
(в лотах) умноженному на кол-во шагов StepRJ,
исходя из формулы:
MaxQuantityInPortfelRJ = (Trunc( Abs(CloseRJ
- StartCloseRJ) / Abs(StartCloseRJ) *100 /StepRJ) + 1) * Abs(MaxQuantityInPortfel);
при условии CloseRJ > StartCloseRJ, т.е. текущая
Close-цена > начальной Close-цены
при RJBuy-пирамидинге;
и при условии CloseRJ < StartCloseRJ,
т.е. текущая Close-цена < начальной
Close-цены при RJSell-пирамидинге;
Начальное значение 'StartCloseRJ' равно
Close-цене в момент появления на графике 'RJBuy' или
'RJSell' сигнала, от которого начнется лонг
или шорт пирамидинг, и сохраняется в
текстовом файле. Название этого файла
составляется из символов RJ<Buy/Sell><ТикерБумаги><НомерПортфеля><КодРынка>
и он будет создаваться в метастоковском каталоге
'\External Function Dlls'.
Например, в момент RJBuy-сигнала на
рынке ММВБ для Газпрома из портфеля '12345-000'
текущее значение Close-цены по этой бумаге
сохранится в файле 'RJBuyGAZP12345-000MICEX_SHR' в
качестве начального. Затем от этого
начального значения будет исчисляться величина
дальнейшего изменения Close-цены. И как только, при
новом обновлении данных графика или очередном
RJBuy-сигнале, текущее значение Close-цены
превысит начальное значение Close-цены,
сохраненное в файле, на заданную в параметре StepRJ
процентную величину, то произойдет увеличение
позиций. Начальная позиция в портфеле увеличится
во столько раз, во сколько раз процентное
отношение между текущей Close-ценой и
начальным значениями Close-цены превысит
значение шага 'StepRJ', но в реальности
максимальное значение будет ограничиваться
текущими лимитами. При дальнейшем увеличении
Close-цены на заданную величину StepRJ позиция снова
увеличится на заданное в MaxQuantInPortfel
число лотов, и т.д.
Приведем пример. Пусть в советнике
Метастока для RJ-пирамидинга в лонг
задана функция MoveMICEX_SHR(MoveFORTS) со следующими
параметрами:
FNull:=IF(RJBuy, ExtFml("Borisoff.MoveMICEX_SHR",
"1234-000; 5.0", -1, 1.5,
RJBuy, 0, Simple, 0, RJBuy, 1), False);
Т.е здесь в параметрах функции
задано, что при первом RJBuy-сигнале на графике в
портфеле будет сформирована лонг-позиция в один
лот и текущее значение Close-цены по бумаге (из
таблицы 'Позиции' АД-терминала) будет сохранено в
файле в качестве начального. Затем, при
продолжении торгов, при каждом последующем
RJBuy-сигнале если текущее значение Close-цены по
бумаге (из таблицы 'Позиции' АД-терминала) станет
больше на 5.0% начального значения
Close-цены (сохраненного в файле), то произойдет
увеличение лонг-позиции в портфеле еще на
один лот. Если далее текущее значение
Close-цены по бумаге (из таблицы 'Позиции'
АД-терминала) станет больше начального
значения Close-цены уже на 10%, то лонг-позиция в
портфеле увеличится еще на один лот.
Второй пример. Если в советнике
Метастока для RJ-пирамидинга в лонг задать другие
параметры в функции MoveMICEX_SHR(MoveFORTS):
FNull:=IF(RJBuy OR Cum(1)=LastValue(Cum(1)),
ExtFml("Borisoff.MoveMICEX_SHR", "1234-000;
7.5", -3, 1.5, RJBuy, 0, Simple, 0,
RJBuy, 1), False);
То здесь, при
первом RJBuy-сигнале на графике, в портфеле будет
сформирована лонг-позиция в три лота и
текущее значение Close-цены по бумаге
будет сохранено в файле в качестве начального.
Затем, при продолжении торгов, если при
последующих RJBuy-сигналах или при каждом
обновлении данных графика, текущее значение
Close-цены по бумаге станет больше на 7.5%
начального значения Close-цены (сохраненного в
файле), то произойдет увеличение лонг-позиции в
портфеле еще на три лота. Если далее
текущее значение Close-цены по бумаге станет больше
начального значения Close-цены уже на 30%, то
лонг-позиция в портфеле увеличится до
двенадцати лотов (т.е. 30% / 7.5% * Abs(-3) = 12).
Если в советнике Метастока добавить условие ExitRJBuy
с нулевым значением доли в портфеле MaxQuantInPortfel, то
при его исполнении текущие лонг-позиции будут
закрыты.
А если в советнике Метастока в функции
MoveMICEX_SHR(MoveFORTS) задать RJSell условие, то при
его исполнении лонг-позиция в портфеле тоже
закроется и создастся позиция уже для
шорт-пирамидинга по аналогичному принципу.
При этом параметры для шорт-пирамидинга могут
быть заданы такими же или другими значениями.
Как можно заметить, в функции MoveMICEX_SHR
(MoveFORTS) параметр 'StepRJ' прописывается в общих
кавычках вместе с портфелем и отделяется от него
точкой с запятой ';'. Такая запись связана с тем,
что общее допустимое кол-во параметров в
функциях Метастока не может быть больше 10,
поэтому приходится прибегать к некоторым
ухищрениям, чтобы поместить в функцию большее
число параметров. Расположение параметров и их
разделитель изменять нельзя.
При перевороте из RJBuy-позиции в
RJSell-позицию файл со значением Close-цены
для лонг-пирамидинга будет автоматически
удаляться и будет создаваться новый файл (RJSell...)
с начальным значением уже для шорт-пирамидинга.
Каждая RJ-заявка будет запротоколирована в
лог-файле, примерно в таком виде:
************** Новая заявка от 21.02.2008 16:42:31
Входные параметры заявки:
Тип заявки RJBuy - пирамидинг по методу Райана
Джонса;
vStepRJ=0,9; %шага возрастания Close-цены по ЦБ для
очередного увеличения доли в портфеле.
vStartCloseRJ=189,38; Величина Close-цены по ЦБ в начале
RJBuy-пирамидинга.
vCloseRJ=202,02; Текущая величина Close-цены по ЦБ.
vTradeArea=MICEX_SHR;
vAccount=1234-002;
vFinInstr=ROSN; (заявка сформирована с графика этой
ЦБ)
vMaxPercentInPortfel=-8; Минус означает, что начальная
макс.доля актива в портфеле для RJ-пирамидинга
задана в лотах(контрактах), а не в %!
vMaxQuantityInPortfelRJ=80; Текущая макс.доля в портфеле для
RJ-пирамидинга (в лотах);
vLotSize=1;
vPrice=205,05;
vDecimals=2;
vPriceStop=0,00;
vPriceAddStop=0,00;
vAllowShort=Y;
vVidStop=Simple;
vClose=202,02;
vNumBarRight=2;
oADLite: есть соединение с сервером;
Параметры корректные;
Заданное максимально допустимое кол-во ЦБ в
портфеле для заявки - 80 шт.
Имеющиеся позиции по ROSN: Количество=8 шт; Доля в
портфеле%=17,78;
Лимит на покупку ROSN - 36 шт. по цене 205,05р;
ResultBuyLimit-Операция выполнена успешно!;
Подана заявка на Покупку 36 шт ROSN по цене 205,05р;
N=19593136; ResultСreateBuyOrder-Операция выполнена успешно!;
Ваша заявка № 19593136 на покупку 36 лотов ROSN по цене
205.05 RUR принята Системой.
C RJ-заявками можно использовать все имеющиеся в
функциях MoveMICEX_SHR (MoveFORTS) виды стопов. Если в
портфеле не останется позиций, например после
срабатывания стопов, то RJ-файлы, если они имеются,
будут автоматически удаляться, тем самым можно
будет ЗАНОВО начать RJ-пирамидинг уже с ТЕКУЩЕГО
ценового уровня, если будут сигналы на графике.
RJ-заявки позволяют сделать комфортным авто-трейдинг
с большими объемами, поскольку можно
наращивать позиции по тренду постепенно.