ফিবোনাচি ব্যান্ড দোলন কৌশলটি ফিবোনাচি তত্ত্বের উপর ভিত্তি করে ডিজাইন করা একটি পরিমাণগত কৌশল। এটি মূলত উপরের এবং নীচের ব্যান্ড গঠনের জন্য একাধিক মূল্য ব্যান্ড গণনা করতে ফিবোনাচি অনুপাত ব্যবহার করে। যখন দাম ব্যান্ডগুলি ভেঙে যায়, তখন লাভের জন্য ব্যান্ডগুলির মধ্যে দোলনের বৈশিষ্ট্যগুলি ক্যাপচার করতে ট্রেডিং সংকেত উত্পন্ন হয়।
কোডের মূল যুক্তি হ'ল ফিবোনাচি মূল্যের ব্যান্ডগুলি মূল পয়েন্ট হিসাবে গণনা করা। প্রধান পদক্ষেপগুলি হ'লঃ
এই নতুন পদ্ধতির সাহায্যে এটি বাজারের স্বল্পমেয়াদী ওঠানামা কার্যকরভাবে ধরতে পারে এবং মুনাফা অর্জনের জন্য ব্যান্ডগুলির মধ্যে রুট-ট্রিপ ট্রেড করতে পারে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হ'ল এটি মূল মূল্য পয়েন্টগুলি সনাক্ত করতে ফিবোনাচি অনুপাতের গুরুত্বপূর্ণ তাত্ত্বিক সূচকটি ব্যবহার করে, যার ফলে লাভের সম্ভাবনা বৃদ্ধি পায়। নির্দিষ্ট সুবিধাগুলি মূলত নিম্নলিখিতগুলিতে প্রতিফলিত হয়ঃ
যেহেতু কৌশলটি স্বল্পমেয়াদী মুনাফা অর্জন করে, তাই কিছু ঝুঁকিও রয়েছেঃ
এই ঝুঁকিগুলি যথাযথভাবে পরামিতিগুলি সামঞ্জস্য করে, উপযুক্ত ব্যাণ্ডগুলি নির্বাচন করে এবং মূলধন পরিচালনার পদ্ধতিগুলি নিয়ন্ত্রণ করতে পারে।
কৌশলটি আরও উন্নত করার সুযোগ রয়েছেঃ
সাধারণভাবে, ফিবোনাচি ব্যান্ড ওসিলেশন কৌশল একটি খুব ব্যবহারিক স্বল্পমেয়াদী কৌশল। এটি মূল্যের মূল পয়েন্টগুলি সেট করতে ফিবোনাচি তত্ত্ব ব্যবহার করে। যখন দাম এই পয়েন্টগুলির চারপাশে ওসিলেশন করে, তখন উদার মুনাফা অর্জন করা যায়। এই ব্রেকআউট-ভিত্তিক পদ্ধতিটি নির্দিষ্ট ডিগ্রি অস্থিরতা এবং বৈশিষ্ট্যযুক্ত বাজারগুলির জন্য উপযুক্ত। এটি একা বা অন্যান্য কৌশলগুলির সাথে একত্রে ব্যবহার করা যেতে পারে। প্যারামিটার টিউনিং এবং সঠিক মূলধন পরিচালনার সাথে, কৌশলটি দীর্ঘমেয়াদে স্থিতিশীলভাবে পরিচালনা করতে পারে।
/*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")