ফিবোনাচি ব্যান্ড ওসিলেশন কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-১১-২১ 13:47:12
ট্যাগঃ

img

সারসংক্ষেপ

ফিবোনাচি ব্যান্ড দোলন কৌশলটি ফিবোনাচি তত্ত্বের উপর ভিত্তি করে ডিজাইন করা একটি পরিমাণগত কৌশল। এটি মূলত উপরের এবং নীচের ব্যান্ড গঠনের জন্য একাধিক মূল্য ব্যান্ড গণনা করতে ফিবোনাচি অনুপাত ব্যবহার করে। যখন দাম ব্যান্ডগুলি ভেঙে যায়, তখন লাভের জন্য ব্যান্ডগুলির মধ্যে দোলনের বৈশিষ্ট্যগুলি ক্যাপচার করতে ট্রেডিং সংকেত উত্পন্ন হয়।

কৌশলগত যুক্তি

কোডের মূল যুক্তি হ'ল ফিবোনাচি মূল্যের ব্যান্ডগুলি মূল পয়েন্ট হিসাবে গণনা করা। প্রধান পদক্ষেপগুলি হ'লঃ

  1. মধ্যরেখা হিসেবে ১৪ পেরিওড EMA গণনা করুন
  2. ATR এবং ফিবোনাচি অনুপাত অনুযায়ী উপরের এবং নীচের 4 ব্যান্ড লাইন গণনা
  3. যখন দাম ডাউনসাইড ব্যান্ড বা আপসাইড ব্যান্ড অতিক্রম করে তখন ট্রেডিং সিগন্যাল তৈরি করুন
  4. লাভের জন্য দামের দোলন ট্র্যাক করতে স্টপ লস এবং লাভ নিন সেট করুন

এই নতুন পদ্ধতির সাহায্যে এটি বাজারের স্বল্পমেয়াদী ওঠানামা কার্যকরভাবে ধরতে পারে এবং মুনাফা অর্জনের জন্য ব্যান্ডগুলির মধ্যে রুট-ট্রিপ ট্রেড করতে পারে।

সুবিধা

এই কৌশলটির সবচেয়ে বড় সুবিধা হ'ল এটি মূল মূল্য পয়েন্টগুলি সনাক্ত করতে ফিবোনাচি অনুপাতের গুরুত্বপূর্ণ তাত্ত্বিক সূচকটি ব্যবহার করে, যার ফলে লাভের সম্ভাবনা বৃদ্ধি পায়। নির্দিষ্ট সুবিধাগুলি মূলত নিম্নলিখিতগুলিতে প্রতিফলিত হয়ঃ

  1. পরিষ্কার ফিবোনাচি ব্যান্ড, ব্রেকআউট পয়েন্ট বিচার করা সহজ
  2. যুক্তিসঙ্গত ব্যান্ড ব্যাপ্তি, খুব বিচ্ছিন্ন বা খুব অবাধ নয়
  3. আক্রমণাত্মক এবং সংরক্ষণশীল উভয় ট্রেডিংয়ের জন্য একাধিক ব্যান্ড নির্বাচন করা যেতে পারে
  4. উল্লেখযোগ্য ব্যান্ড ওসিলেশন বৈশিষ্ট্য, স্বল্পমেয়াদী ট্রেডিং কৌশলগুলির জন্য ভাল প্রভাব

ঝুঁকি

যেহেতু কৌশলটি স্বল্পমেয়াদী মুনাফা অর্জন করে, তাই কিছু ঝুঁকিও রয়েছেঃ

  1. বড় চক্রের প্রবণতার অধীনে মুনাফা অর্জন করা অসম্ভব
  2. দামের তীব্র ওঠানামা চলাকালীন উচ্চ স্টপ লস ঝুঁকি
  3. অনেক অগ্রগতির সংকেত সতর্কতার সাথে নির্বাচন করা প্রয়োজন
  4. ব্যান্ড ওসিলেশন বৈশিষ্ট্যগুলি অদৃশ্য হয়ে গেলে অবৈধ

এই ঝুঁকিগুলি যথাযথভাবে পরামিতিগুলি সামঞ্জস্য করে, উপযুক্ত ব্যাণ্ডগুলি নির্বাচন করে এবং মূলধন পরিচালনার পদ্ধতিগুলি নিয়ন্ত্রণ করতে পারে।

অপ্টিমাইজেশন

কৌশলটি আরও উন্নত করার সুযোগ রয়েছেঃ

  1. শুধুমাত্র নির্দিষ্ট প্রবণতা দিকের সংকেত তৈরি করতে প্রবণতা সূচকগুলির সাথে একত্রিত করুন
  2. নির্দিষ্ট সময়সীমা বা গুরুত্বপূর্ণ ঘটনা আগে এবং পরে কৌশল বন্ধ করুন
  3. বাজারের অস্থিরতার ফ্রিকোয়েন্সি অনুযায়ী স্টপ লস প্রস্থকে গতিশীলভাবে সামঞ্জস্য করুন
  4. বিভিন্ন চক্রের ইএমএ নির্বাচন করে প্যারামিটার অপ্টিমাইজ করুন

সিদ্ধান্ত

সাধারণভাবে, ফিবোনাচি ব্যান্ড ওসিলেশন কৌশল একটি খুব ব্যবহারিক স্বল্পমেয়াদী কৌশল। এটি মূল্যের মূল পয়েন্টগুলি সেট করতে ফিবোনাচি তত্ত্ব ব্যবহার করে। যখন দাম এই পয়েন্টগুলির চারপাশে ওসিলেশন করে, তখন উদার মুনাফা অর্জন করা যায়। এই ব্রেকআউট-ভিত্তিক পদ্ধতিটি নির্দিষ্ট ডিগ্রি অস্থিরতা এবং বৈশিষ্ট্যযুক্ত বাজারগুলির জন্য উপযুক্ত। এটি একা বা অন্যান্য কৌশলগুলির সাথে একত্রে ব্যবহার করা যেতে পারে। প্যারামিটার টিউনিং এবং সঠিক মূলধন পরিচালনার সাথে, কৌশলটি দীর্ঘমেয়াদে স্থিতিশীলভাবে পরিচালনা করতে পারে।


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © drhakankilic

//@version=5
strategy("FIBONACCI BANDS Strategy", shorttitle="FBANDS Strategy", overlay=true)
// === Date === { 
//Backtest dates
fromDay = input.int(defval=1, title='From Day',minval=1,maxval=31)
fromMonth = input.int(defval=2, title='From Month',minval=1,maxval=12)
fromYear = input.int(defval=2022, title='From Year')
thruDay = input.int(defval=1, title='Thru Day',minval=1,maxval=31)
thruMonth = input.int(defval=1, title='Thru Month',minval=1,maxval=12)
thruYear = input.int(defval=2112, title='Thru Year')
showDate = true  // input(defval=true, title="Show Date Range")
start = timestamp(fromYear, fromMonth, fromDay, 00, 00)  // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59)  // backtest finish window
window() =>  // create function "within window of time"
    time >= start and time <= finish ? true : false
// }

// === Long or Short ===  
tradeDirection = input.string(title="Long veya Short", options=["Long", "Short", "Both"], defval="Both",                                       group="Bot")
// Translate input into trading conditions
longOK  = (tradeDirection == "Long") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short") or (tradeDirection == "Both")
copypaste   = input('{{strategy.order.alert_message}}',         title='alert message to copy/paste',                                    group="Bot")
// }

// === FIBONACCI BANDS === {
EMAperiod = input.int(14, title='EMAperiod', minval=1, maxval=500, group="Fibonacci")
ATRperiod = input.int(14, title='ATRperiod', minval=1, maxval=500, group="Fibonacci")
EMA = ta.ema(close, EMAperiod)
TR1 = math.max(high - low, math.abs(high - close[1]))
TR = math.max(TR1, math.abs(low - close[1]))
ATR = ta.sma(TR, ATRperiod)
F2 = input(defval=1.618, title='Fibonacci Ratio 2', group="Fibonacci")
F3 = input(defval=2.618, title='Fibonacci Ratio 3', group="Fibonacci")
F4 = input(defval=4.236, title='Fibonacci Ratio 4', group="Fibonacci")
R1 = ATR
R2 = ATR * F2
R3 = ATR * F3
R4 = ATR * F4
FIBOTOP4 = EMA + R4
FIBOTOP3 = EMA + R3
FIBOTOP2 = EMA + R2
FIBOTOP1 = EMA + R1
FIBOBOT1 = EMA - R1
FIBOBOT2 = EMA - R2
FIBOBOT3 = EMA - R3
FIBOBOT4 = EMA - R4
plot(FIBOTOP4[1], title='FIBOTOP4', linewidth=1, color=color.new(color.orange, 0))
plot(FIBOTOP3[1], title='FIBOTOP3', linewidth=1, color=color.new(color.aqua, 20))
plot(FIBOTOP2[1], title='FIBOTOP2', linewidth=1, color=color.new(color.gray, 40))
plot(FIBOTOP1[1], title='FIBOTOP1', linewidth=1, color=color.new(color.purple, 40))

plot(FIBOBOT1[1], title='FIBOBOT1', linewidth=1, color=color.new(color.green, 40))
plot(FIBOBOT2[1], title='FIBOBOT2', linewidth=1, color=color.new(color.yellow, 40))
plot(FIBOBOT3[1], title='FIBOBOT3', linewidth=1, color=color.new(color.blue, 20))
plot(FIBOBOT4[1], title='FIBOBOT4', linewidth=1, color=color.new(color.aqua, 0))
// plot(EMA[1], style=plot.style_cross, title='EMA', color=color.new(color.red, 0))

prefm = input.string(title="Fibo", options=["close>FIBOTOP4(orange)", "close>FIBOTOP3(aqua)","close>FIBOTOP2(gray)","close>FIBOTOP1(purple)", "Disable"] , defval="close>FIBOTOP1(purple)", group="Long")
_prefm = false 
if (prefm == "close>FIBOTOP4(orange)" )
    _prefm := close>FIBOTOP4[1]
    
if (prefm == "close>FIBOTOP3(aqua)" )
    _prefm := close>FIBOTOP3[1]

if (prefm == "close>FIBOTOP2(gray)" )
    _prefm := close>FIBOTOP2[1]
    
if (prefm == "close>FIBOTOP1(purple)" )
    _prefm := close>FIBOTOP2[1]
 
 
if (prefm == "Disable" )
    _prefm := low<low[1] or low>low[1]  
    
prefmS = input.string(title="Fibo", options=["close<FIBOBOT1(green)", "close<FIBOBOT2(yellow)", "close<FIBOBOT3(blue)", "close<FIBOBOT4(aqua)", "Disable"] , defval="close<FIBOBOT1(green)", group="Short")
_prefmS = false 
if (prefmS == "close<FIBOBOT1(green)" )
    _prefmS := close<FIBOBOT1[1]
  
if (prefmS == "close<FIBOBOT2(yellow)" )
    _prefmS := close<FIBOBOT2[1]

if (prefmS == "close<FIBOBOT3(blue)" )
    _prefmS := close<FIBOBOT3[1]
  
if (prefmS == "close<FIBOBOT4(aqua)" )
    _prefmS := close<FIBOBOT4[1]

if (prefmS == "Disable" )
    _prefmS := low<low[1] or low>low[1]  

// }

long2= _prefm 

short2= _prefmS
//

// === Bot Codes === { 
enterlong = input("Long Code", title='Long İlk Alım', group="Long Code")
entershort= input("Short Code", title='Short İlk Alım', group="Short Code")
exitlong = input("Long Exit Code", title='Long Exit', group="Long Code")
exitshort= input("Short Exit Code", title='Short Exit', group="Short Code")
// }

////////////////////////////////////////////////////////////////////////////////////////////TPSL
// Inputs
sl_inp = input.float(4, title='Stop %', step=0.1, group="Long") / 100
tp_inp = input.float(1.5, title='TP %', step=0.1, group="Long") / 100

sl_inp2 = input.float(4, title='Stop %', step=0.1, group="Short") / 100
tp_inp2 = input.float(1.5, title='TP %', step=0.1, group="Short") / 100

longtp = strategy.position_avg_price * (1 + tp_inp) 
longstop=  strategy.position_avg_price * (1 - sl_inp)

shortstop=  strategy.position_avg_price * (1 + sl_inp2)
shorttp = strategy.position_avg_price * (1 - tp_inp2) 
////////////////////////////////////////////////////////////////////////////////////////////
if window() and strategy.position_size==0 and longOK
    strategy.entry("Long", strategy.long, when= long2, alert_message=enterlong, comment="Long")
    
if strategy.position_size>0
    strategy.exit("Long", stop= longstop, limit=longtp, alert_message=exitlong, comment="TPSL")
////////////////////////////////////////////////////////////////////////////////////////////SHORT
if window() and strategy.position_size==0 and shortOK 
    strategy.entry("Short", strategy.short, when= short2, alert_message=entershort, comment="Short")
    
if strategy.position_size<0
    strategy.exit("Short", stop= shortstop, limit= shorttp, alert_message=exitshort, comment="TPSL")
 


আরো