وضعیت بازار
ارزش معاملات سهام
ارزش معاملات اختیار
حجم معاملات اختیار
اطلاعات قیمت
✨ دوره آفلاین آموزش اختیارمعامله و فرمول نویسی
بیش از ۱۵ ساعت آموزش

مفاهیم پایه و کاربردی آپشن - استراتژی‌های سودآور برای مبتدیان و حرفه‌ای‌ها - آموزش گام به گام اختیار معامله - فرمول‌نویسی - فیلترنویسی - دسترسی نامحدود - پشتیبانی

بیشترین ارزش معاملات اختیار معامله
روزانه
هفتگی
ماهیانه
روزانه
هفتگی
ماهیانه
نزدیکترین سررسید دوره های معاملاتی
نماد روز تا سررسید
برترین دارایی های پایه
روزانه
هفتگی
ماهیانه
دریافت و فعال سازی آنلاین کد بورسی و اختیار معامله
ما را در شبکه های اجتماعی دنبال کنید

فرمول نویسی و فیلتر موقعیت های مناسب اسپرد Bull put spread

آموزش تخصصی فرمول‌نویسی و فیلتر موقعیت‌های بهینه برای استراتژی Bull put Spread در آپشن باز. با تکنیک‌های هوشمند، بهترین فرصت‌ها را شناسایی و سود خود را حداکثر کنید
جهت نوشتن فرمول و فیلتر   به صفحه دیده بان رفته سپس بر روی ساخت ستون یا ساخت فیلتر کلیک کنید. نام ستون یا فیلتر را مشخص، کد را در قسمت ادیتور نوشته و در نهایت جهت مشاهده نتیجه بر روی ذخیره کلیک کنید .

در این ستون قرارداهایی از زنجیره که با قرارداد فعلی حداقل 10 درصد (یا مقدار var1_)   سود بسازند( این عدد را می توانید از طریق فیلد متغییر در دیده بان با درج  نام  var1_ و دادن مقدار مورد نظر ان را  تغییر دهید) مشاهده خواهید کرد 

  • محاسبه سود برای حالتی است که وجه تضمین بلوکه می شود

-  موقعیت کنونی که نمایانگر درصد سود وزیان استراتژی  چنانچه با قیمت  حال حاضر اعمال شود

 - نمایش جزییات به صورت انتخابی 

 - امکان مرتب سازی بر اساس درصد سود ماهانه

ستون  (نماد) قراردادهایی که خریداری می شوند را نمایش می دهد

ستون ایجاد شده با عنوان( پوت اسپرد صعودی) قراردادهایی که فروخته می شوند را نمایش می دهد به همراه سایر اطلاعات  مورد نیاز و نمودار استراتژی

پارامترهای مورد بررسی

  • حداکثر سود
  • حداکثر زیان
  • درصد فاصله قیمت سهم از اعمال قرارداد کال فروخته شده(اعمال دوم)
  • درصد فاصله قیمت سهم از اعمال قرارداد کال خریداری شده(اعمال اول)
  • درصد فاصله قیمت سهم از سر به سری
  • نسبت حداکثر سود به حداکثرزیان (Reward/Risk)

پوت اسپرد صعودی

کد ستون
//نمایش سود به ضرر
let rewRiskShow  = 0;

//نمایش نقاط فاصله نماد پایه با اعمال ها
let pointShow = 1;


//شروع کد

let result = '';
let index = 0;
//جهت فیلتر کردن خروجی
let condition1  =  _var1 != '' ?  _var1 : 10;
let condition2  =  _var2 != "" ?  _var2 : "";
let size = Option.Size;

let positions= new Array();
while ( OptionSE(++index) != undefined ){
//اگر حجم خریدار قرارداد صفر بود رد بشه 
if (OptionSE(index).TI.Buy_1_Volume == 0 || Option.TI.Sell_1_Volume == 0 || OptionSE(index).TI.Buy_1_Price < 10 )
continue;
let position = new Object();
//سرمایه درگیر
position.block = OptionSE(index).Required_Margin +(Option.TI.Sell_1_Price * Option.Size) ;
position.debit = ( OptionSE(index).TI.Buy_1_Price - Option.TI.Sell_1_Price) * Option.Size;;

//حداکثرسود 
let profit = position.debit ;
position.mCapital = MP(((profit /position.block)*100)  , Option.DaysUntilMaturity);
//حداکثر زیان
let loss = (( Option.Strike - OptionSE(index).Strike ) - ( Option.TI.Sell_1_Price - OptionSE(index).TI.Buy_1_Price))* Option.Size;
position.mLoss = MP(((loss /position.block)*100)  , Option.DaysUntilMaturity);

// سربه سری
position.BE =  OptionSE(index).Strike - ( OptionSE(index).TI.Buy_1_Price - Option.TI.Sell_1_Price) ;


//درصد اختلاف ها
position.disBE= CalcRateChange(UA.TI.LastPrice ,position.BE );
position.strike = OptionSE(index).Strike;
position.disStrike = CalcRateChange(UA.TI.LastPrice ,position.strike );
position.strike1= CalcRateChange( UA.TI.LastPrice, Option.Strike  );
position.strike2= CalcRateChange(UA.TI.LastPrice, position.strike );

position.namad = OptionSE(index).Namad;
position.namadNo = NamadNo(OptionSE(index).Namad);
position.maxProfit = profit/size;
position.maxLoss = loss/size;
position.rewRisk = Math.abs(profit/loss).toFixed(2);
position.percentLoss = ((position.debit/position.block)*100).toFixed(2);

let current = ((UA.TI.LastPrice - position.BE  ) / position.block) * Option.Size;
position.mCurrent = MP( current * 100 , Option.DaysUntilMaturity);

if ( _var2 == 1 ){
position.point1=0;
position.point2 = Option.Strike;
}
else if (  _var2 ==2 )
{ position.point1 = Option.Strike;
position.point2 = position.BE;
}
else if (  _var2 ==3 )
{ position.point1 =position.BE;
position.point2 = OptionSE(index).Strike;
}
else if ( _var2 ==4 ){
position.point1=OptionSE(index).Strike;
position.point2 = UA.TI.LastPrice * 100;
position.mCurrent =  position.mCapital;
}
else condition2=""
if (position.mCapital >=condition1 && Option.Type == 'put'
//شرط نقطه قیمت نماد پایه
&& (condition2  == "" || (UA.TI.LastPrice>= position.point1 && UA.TI.LastPrice< position.point2)))
positions.push(position);
//end of position object
}
positions = SortObject(positions, "mCapital");
positions = positions.reverse();

positions.forEach(function(position, posIndex ){

let bgP2, bgP3, bgP4;
//در صورتی که قیمت سهم کمتر اعمال اول باشد
if(UA.TI.LastPrice<Option.Strike)
{bgP2 = '#f87878';
position.mCurrent= -100;
}
//در صورتی که قیمت سهم بین سربه سری و اعمال اول
else if(UA.TI.LastPrice<=position.BE)
bgP2 = "#FFC0CB";
//در صورتی قیمت سهم بیشتر از سربه سری و کمتر اعمال کال فروخته شده
else if (UA.TI.LastPrice > position.BE && UA.TI.LastPrice< position.strike)
bgP3 ="#B0E0E6";
//خروجی در صورتی قیمت سهم بیشتر اعمال کال فروخته شده باشه 
else if (UA.TI.LastPrice>=position.strike)
bgP4 ="#ADFF2F";

pos.Add('buy', Option.Namad,1, 'sell');
pos.Add('sell', position.namad, 1, 'buy');
result += ShowDetail(position.namad, position.namadNo);
result += "[" +Style(position.maxProfit + " (" + position.mCapital + "%)", 'green', '',  'بیشترین سود', true)  + " ~" + 
Style(position.mCurrent +'%', position.mCurrent >=0 ? 'green ' : 'red', '',  'موقعیت کنونی') 
+ " ~ " +   
Style(position.maxLoss+ " (" + position.mLoss + "%)", 'red', '',  'بیشترین ضرر') +"]";
if (rewRiskShow) 
result +=  Style( + position.rewRisk , 'blue', '',  'سود/ضرر')  ;
if (pointShow )
result += " P%[" +
Style(position.strike1, '', bgP2,  'اعمال اول-قیمت%') + '' +
Style(position.disBE , '', bgP3,  'سر به سری-قیمت%') + ''+
Style(position.strike2, '', bgP4, 'اعمال دوم-قیمت%') + "]" ;

result += pos.Build('اسپرد ' + Option.Namad) + '
'
; //بیشترین بازدهی در اول خروجی جهت سورت if (posIndex ==0) result = '{0} '.format(position.mCapital) + result; }); result;
  • این فیلتر قرادادهایی که سود ماهانه بالای 10 درصد دارند را نمایش می دهد.(این عدد را می توانید از طریق فیلد متغییر در دیده بان با درج  نام  var1_ و دادن مقدار مورد نظر ان را  تغییر دهید)
  • محاسبه سود برای حالتی است که وجه تضمین بلوکه می شود
  • فیلتر قراردادها بر اساس محدوده قیمتی سهم نسبت به اعمال ها و سر به سری  با استفاده از فیلد متغییر در دیده بان با درج  نام  var2_ و دادن مقدار امکان پذیر است

با قرار دادن  عدد 1 در var2_  قرارداد هایی را مشاهده می کنید که قیمت سهم  کمتر از اعمال اول(کال فروخته شده) هستند

با قرار دادن  عدد 2 در var2  قرارداد هایی را مشاهده می کنید که قیمت سهم  بین اعمال اول و سربه سری  هستند

با قرار دادن  عدد 3 در var2  قرارداد هایی را مشاهده می کنید که قیمت سهم  ببین سر به سری و اعمال دوم(پوت خریداری شده) هستند

با قرار دادن  عدد 4 در var2  قرارداد هایی را مشاهده می کنید که قیمت سهم  بیشتر از اعمال دوم هستند

فیلتر قراردادها

کد فیلتر
 let result = false;
 let index = 0; 
let condition1  = _var1 != '' ? _var1 : 10;
let condition2  = _var2 != "" ? _var2 : "";

while ( OptionSE(++index) != undefined ){ 
if (OptionSE(index).TI.Buy_1_Volume == 0 || Option.TI.Sell_1_Volume == 0 || OptionSE(index).TI.Buy_1_Price < 10 )
continue;
//سرمایه درگیر
let block = OptionSE(index).Required_Margin +(Option.TI.Sell_1_Price * Option.Size) ;
let debit = ( OptionSE(index).TI.Buy_1_Price - Option.TI.Sell_1_Price) * Option.Size;
//حداکثرسود 
let profit = debit ;
let mCapital = MP(((profit /block)*100)  , Option.DaysUntilMaturity);

// سربه سری
let BE =  OptionSE(index).Strike - ( OptionSE(index).TI.Buy_1_Price - Option.TI.Sell_1_Price) ;

let point1, point2;
if ( _var2 == 1 ){
point1=0;
point2 = Option.Strike;
}
else if (  _var2 ==2 ){
point1 = Option.Strike;
point2 = BE;
}
else if (  _var2 ==3 )
{ point1 =BE;
point2 = OptionSE(index).Strike;
}
else if ( _var2 ==4 ){
point1=OptionSE(index).Strike;
point2 = UA.TI.LastPrice * 100;

}
else condition2=""

if (mCapital >= condition1 &&
(condition2  == "" || (UA.TI.LastPrice>= point1 && UA.TI.LastPrice< point2))
&&  Option.Type == 'put'){ 
result = true;
break;
}
}  
result;

🌟در کدهای اماده  فرمول های  مربوط به ایجاد ستون و  فیلتر استراتژی اسپرد  به صورت ویژوال و پیشرفته در دسترس می باشد اموزش های موجود  در صورت تمایل به تغییر  و شخصی سازی فرمول ها کمک کننده می باشند


لطفا سوال یا نظر خود را در این قسمت مطرح فرمایید
وارد کردن شماره همراه و ایمیل اختیاری می باشد و فقط جهت اطلاع رسانی از دریافت پاسخ استفاده خواهد شد .

×