ThinkScript Indi_Strike
Очередной скрипт из серии Indi по заявкам читателей блога.
Скрипт умеет добавлять к графику стака окно опциона и отображает изменение цены, объём и открытый интерес по конкретному страйку с конкретной датой экспирации.
Сам скрипт:
Собрав пачку скриптов, можно отобразить целую серию как колов, так и путов. Кто знает, что такое опционы, сможет собрать из скрипта необходимую ему конструкцию для отображения.
Например, для стака C подключил три скрипта с отображением графиков Колов с разными страйками:

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

Фиолетовая линия — график цены опциона в долларах.
Серые вертикальные риски — объем, количество сделок за выбранный интревал ( надо умножить на 10'000)
Бирюзовая гистограмма — OI, открытый интерес (надо умножить на 10'000).
Так как биржа транслирует OI за вчерашний день, внес поправку и сдвинул OI на один день назад.
В случае выбора интрадейного таймфрейма, OI не транслируется.
Для тех же, кто только познает этот «супер» макроязык, прикладываю готовый скрипт в виде файла Indi_StrikeSTUDY.txt
Перед импортом в TOS надо сменить расширение с .txt на .ts
С Уважением, Эдгар
(оглавление блога...)
Скрипт умеет добавлять к графику стака окно опциона и отображает изменение цены, объём и открытый интерес по конкретному страйку с конкретной датой экспирации.
Сам скрипт:
# @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
С Уважением, Эдгар
(оглавление блога...)
-
-
Edgar,
- 18 февраля 2012, 04:04
- это интересно | не интересно
- 1
Файлы в топике:
Indi_StrikeSTUDY.txt

- shubadubatrader
- 19 февраля 2012, 15:04
Скрипт просто супер. Спасибо. Только с фьючерсами что-то не работает. Так и должно быть?







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