Yegor Hi And
Full Member
Сообщений: 138
|
|
« Ответ #2 : Июня 08, 2011, 02:04:21 am » |
|
По этой методике учили рассчитывать позицию на курсе по фьючерсам в Финаме. А оригинал формулы выведен кем-то из классиков.
Здесь вычисляется размер позиции при фиксированном риске в процентах от капитала, если при входе стоп будет стоять на расстоянии k * ATR. Для ясности добавил больше комментариев :
#line 0 solid #800080
extern ATR_period = 14;// Период ATR extern ATR_k = 3; // расстояние до SL в ATR extern kapital_rub = 100000; // сумма капитала выделенная на этот инструмент extern risk_percent = 1; // риск на сделку в процентах от капитала extern lot_size = 1; //размер лота - количество акций в лоте (для рынка акций) extern price_in_pts = 0;//1 если цена фьючерса в пунктах extern step_price = 2.76678; // цена шага, здесь индекс РТС, инф. сайта rts.ru extern step_in_pts = 5; // 5 шаг в пунктах, здесь для индекс РТС, инф. сайта rts.ru //step_price меняется ежедневно
function init() { var m = ATR_period; setInitCandles(m); setBounds(0, m, 0); }
function calc() { var price_enter = 0; var price_exit = 0; if (price_in_pts == 0) { // расчет цены входа и стопа для акций и фьчерсов, которые не пунктах price_enter = high[-1]; // расчет входа, если по ТС вход на пробое, high пред свечи price_exit = price_enter - IndRef("atr", ATR_period)[0][0] * ATR_k; // вычисление стопа в соответствии текущим ATR } else { // расчет цены входа и стопа для фьчерсов, которые квотируются в пунктах var point_price = step_price/ step_in_pts; // вычисление цены пункта price_enter = high[-1] * point_price; // расчет цены входа в деньгах price_exit = price_enter - IndRef("atr", ATR_period)[0][0] * ATR_k * point_price; // вычисление стопа в соответствии текущим ATR в деньгах } var risk = abs(price_exit/price_enter-1)*100; // расчет общего риска в процентах берется по модулю
var k_work_percent = risk_percent / risk * 100;// расчет сколько процентов капитала можно использовать, чтобы при стопе потери не составили более заложенного risk_percent
var k_work_rub = kapital_rub/100* k_work_percent; //расчет "рабочего" капитала в деньгах
var shares_buy = k_work_rub / price_enter - frac(k_work_rub / price_enter);// расчет количества бумаг, чтобы оно было целым откидывается дробная часть (без оркугления)
line[0] = shares_buy / lot_size; // расчет размера позиции в лотах, // если размер позиции получается дробным, то можно эту стороку заменить на // line[0] = shares_buy / lot_size - frac(shares_buy / lot_size); }
Из кода видно, что здесь идет расчет позиции для входа в лонг, но я его также использую для входа в шорт т.к. общий риск в процентах вычисляется по модулю. Цену входа надо ставить в соответствии с Вашей торговой системой (здесь для примера указана high[-1])
k_work_percent - размер капитала для входа в позицию может быть более 100 % это подразумевает использование плечей
Я не против если вы выложите на сайт, надеюсь это индикатор будет еще кому-то полезен.
|