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