↑ Наверх

ThinkScript Indi_Strike

Очередной скрипт из серии Indi  по заявкам читателей блога.

Скрипт умеет добавлять к графику стака окно опциона и отображает изменение цены, объём и открытый интерес по конкретному страйку с конкретной датой экспирации.


Сам скрипт:
# @personal
#
# Indi_Strike
#
# Garry (EDGAR) Dzyubenko ©
# 21st of January, 2012
# for thinkorswim, inc. © 2012
#
#hint: <b>Подключает график страйка опциона для акций</b>\nс отображает цену, объем и ОИ
#hint exp: Выбрать дату экспирации из списка\n<b>Default is 18 Feb, 2012</b>
#hint side: Выбрать Putt или Call\n<b>Default is Put</b>
#hint strike: Ввести страйк\n<b>Default is 1.00</b>

declare lower;
declare once_per_bar;
declare zerobase;

input exp = {default "120218","120317","120421","120519","120616","120721","120818","120922","121020","121117","121222"};
input side = {default C, P};
input strike = 1;

plot O_price = close(concat(".", concat(getSymbolPart(1), concat(exp, concat(side, strike)))));
plot O_volume = volume(concat(".", concat(getSymbolPart(1), concat(exp, concat(side, strike))))) / 10000;

def OI_00  = open_interest(concat(".", concat(getSymbolPart(1), concat(exp, concat(side, strike)))));
rec OI_000  = if(IsNaN(OI_00 ), 0,  OI_00 );

plot OI = OI_000[-1]/10000;

AddChartLabel(exp == exp."120218", "18.02.12", if side==side."C" then globalColor("CALL") else globalColor("PUT"));
AddChartLabel(exp == exp."120317", "17.03.12", if side==side."C" then globalColor("CALL") else globalColor("PUT"));
AddChartLabel(exp == exp."120421", "21.04.12", if side==side."C" then globalColor("CALL") else globalColor("PUT"));
AddChartLabel(exp == exp."120519", "19.05.12", if side==side."C" then globalColor("CALL") else globalColor("PUT"));
AddChartLabel(exp == exp."120616", "16.06.12", if side==side."C" then globalColor("CALL") else globalColor("PUT"));
AddChartLabel(exp == exp."120721", "21.07.12", if side==side."C" then globalColor("CALL") else globalColor("PUT"));
AddChartLabel(exp == exp."120818", "18.08.12", if side==side."C" then globalColor("CALL") else globalColor("PUT"));
AddChartLabel(exp == exp."120922", "22.09.12", if side==side."C" then globalColor("CALL") else globalColor("PUT"));
AddChartLabel(exp == exp."121020", "20.10.12", if side==side."C" then globalColor("CALL") else globalColor("PUT"));
AddChartLabel(exp == exp."121117", "17.11.12", if side==side."C" then globalColor("CALL") else globalColor("PUT"));
AddChartLabel(exp == exp."121222", "22.12.12", if side==side."C" then globalColor("CALL") else globalColor("PUT"));

AddChartLabel(!side, concat("CALL ", strike), globalColor("CALL"));
AddChartLabel( side, concat("PUT ",  strike), globalColor("PUT"));

DefineGlobalColor("CALL", CreateColor(153, 0, 0));
DefineGlobalColor("PUT", CreateColor(0, 153, 0));

O_price.DefineColor("Фактичкеская Цена Опциона", CreateColor(102, 0, 102));
O_price.AssignValueColor(O_price.color("Фактичкеская Цена Опциона"));

O_volume.DefineColor("Объем сделок опциона", CreateColor(100, 100, 100));
O_volume.AssignValueColor(O_volume.color("Объем сделок опциона"));

O_volume.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
O_volume.SetLineWeight(3);

OI.DefineColor("OИ страйка", CreateColor(0, 153, 153));

OI.AssignValueColor(OI.color("OИ страйка"));
OI.SetPaintingStrategy(PaintingStrategy.SQUARED_HISTOGRAM);

# ----- П О Я С Н Е Н И Я --------------------------------------------#
# optionticker = concat(".", concat(getSymbolPart(1), concat(expiration, concat(side, strike))))
# 

Собрав пачку скриптов, можно отобразить целую серию как колов, так и путов. Кто знает, что такое опционы, сможет собрать из скрипта необходимую ему конструкцию для отображения.

Например, для стака C подключил три скрипта с отображением графиков Колов с разными страйками:





И вот, как это выглядит на мониторе:




Фиолетовая линия — график цены опциона в долларах.

Серые вертикальные риски — объем, количество сделок за выбранный интревал ( надо умножить на 10'000)

Бирюзовая гистограмма
— OI,  открытый интерес (надо умножить на 10'000).
Так как биржа транслирует OI за вчерашний день,  внес поправку и сдвинул OI на один день назад.
В случае выбора интрадейного таймфрейма, OI не транслируется.


Для тех же, кто только познает этот «супер» макроязык, прикладываю готовый скрипт в виде файла Indi_StrikeSTUDY.txt

Перед импортом в TOS надо сменить расширение с .txt на .ts


С Уважением, Эдгар

(оглавление блога...)
Файлы в топике: Indi_StrikeSTUDY.txt
Related Posts Plugin for WordPress, Blogger...


Комментарии (5) Вконтакте (0) facebook ()

Комментарии (5) свернуть  |  развернуть

  • avatar
  • VIHR
  • 18 февраля 2012, 13:17
0
Опционы как то связаны ??? со стаками ??? Спасибо
  • avatar
  • VIHR
  • 18 февраля 2012, 13:18
0
Да и что такое страйк ???
0
Скрипт просто супер. Спасибо. Только с фьючерсами что-то не работает. Так и должно быть?
  • avatar
  • Edgar
  • 19 февраля 2012, 20:06
+1
Этот скрипт  не будет работатьс фьючами. у них другой алгоритм формирования тикера опциона.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.