Thư viện AFL
Thư viện AFL
Đoạn mã: Tính toán quyền chọn mua và bán ATM/ITM/OTM từ Giá giao ngay: Amibroker AFL

Đoạn mã: Tính toán quyền chọn mua và bán ATM/ITM/OTM từ Giá giao ngay: Amibroker AFL

Đây là mã nguyên mẫu đơn giản có bảng điều khiển hiển thị dành cho các nhà giao dịch trong Hệ thống muốn tính toán Cuộc gọi ATM hoặc Quyền chọn bán ATM từ giá giao ngay cơ bản/giá tương lai cho mục đích kiểm tra lại quyền chọn hoặc mục đích thực hiện tự động.

Đây là một phép tính đơn giản, đơn giản bắt nguồn từ dữ liệu giao ngay hoặc hợp đồng tương lai cơ bản. Do đó,

Đăng ký dữ liệu Amibroker

được yêu cầu để tính toán các cảnh cáo ATM CE hoặc ATM PE. Tuy nhiên, khi tiến hành kiểm tra lại, người ta cần một mảng giá thực hiện ATM CE & ATM PE và do đó, mảng tĩnh được sử dụng để tạo và lưu trữ một mảng ký hiệu ATM CE & ATM PE có thể được mở rộng hơn nữa cho các ý tưởng giao dịch quyền chọn backtest hoặc tự động hóa.

Tính toán ATM/ITM/OTM – Mã AFL của Amibroker

Liên quan

Mã nguồn (.afl)
//Coded by Rajandran R - Marketcalls
//website - www.marketcals.in
//Version 1.0.0.1
//Coded Date : 04/07/2021

//Symbol Format - NIFTY29JUL2115700CE     Spot+Expiry+StrikePrice+OptionType(CE/PE)

_SECTION_BEGIN("ATM/ITM/OTM Caclulation");

EnableTextOutput(False);

spot = Paramlist("Spot Symbol","NIFTY|BANKNIFTY");
expiry = ParamStr("Expiry Date","29JUL21");

offsetCE = Param("CE Offset",-1,-40,40,1);
offsetPE = Param("PE Offset",-1,-40,40,1);

optionCEtype = WriteIf(offsetCE == 0, "ATM CE", WriteIf(offsetCE<0,"ITM"+abs(offsetCE)+" CE","OTM"+abs(offsetCE)+" CE"));
optionPEtype = WriteIf(offsetPE == 0, "ATM PE", WriteIf(offsetPE<0,"ITM"+abs(offsetPE)+" PE","OTM"+abs(offsetPE)+" PE"));


if(spot == "NIFTY")
{
Symbol = "NIFTY 50.NSE_IDX";
iInterval= 50;
}

if(spot == "BANKNIFTY")
{
Symbol = "NIFTY BANK.NSE_IDX";
iInterval= 100;
}

SetForeign(Symbol);
spotC = Close;
RestorePriceArrays();

//Maintain Array to Store ATM Strikes for each and every bar
strike = IIf(spotC % iInterval > iInterval/2, spotC - (spotC%iInterval) + iInterval,
			spotC - (spotC%iInterval));
strikeCE = strike + (offsetCE * iInterval);
strikePE = strike - (offsetPE * iInterval);

//Derives the Symbol Format from the Strike Price
symCE = spot+expiry+strikeCE+"CE";
symPE = spot+expiry+strikePE+"PE";

printf("\nTrading CE Symbol :"+symCE);
printf("\nTrading PE Symbol :"+symPE);
printf("\n");
//Datafeed Symbol Format
SymbolCE = symCE+".NFO";
SymbolPE = symPE+".NFO";

printf("\nDatafeed CE Symbol :"+SymbolCE);
printf("\nDatafeed PE Symbol :"+SymbolPE);

//Call Options LTP
SetForeign(SymbolCE);
CEclose = Close;
RestorePriceArrays();

//Put Options LTP
SetForeign(SymbolPE);
PEclose = Close;
RestorePriceArrays();

//Dasboard

GfxSelectFont( "BOOK ANTIQUA", 12, 100 );
GfxSetBkMode( 1 ); 
GfxSetTextColor ( colorWhite ); 
GfxSelectSolidBrush( colorDarkGrey );

pxHeight = Status( "pxchartheight" ) ; 
xx = Status( "pxchartwidth"); 
x = 5; 
x2 = 340; 
y = pxHeight; 

GfxSelectPen( colorLightBlue, 1); // border color 

GfxRoundRect( x, y - 155, x2, y-30 , 7, 7 ) ; 
GfxTextOut( optionCEtype+" :" +symCE,13,y-130);
GfxTextOut("CE Premium - "+CEclose,13,y-110);
GfxTextOut( optionPEtype+" :" +symPE,13,y-90);
GfxTextOut("PE Premium - "+PEclose,13,y-70);


_SECTION_END();


_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); 
_SECTION_END();

Hướng dẫn: Copy đoạn mã trên, mở AmiBroker Formula Editor, dán vào và lưu lại với tên tương ứng.