फाइबोनैचि बैंड दोलन रणनीति

लेखक:चाओझांग, दिनांक: 2023-11-21 13:47:12
टैगः

img

अवलोकन

फिबोनाची बैंड दोलन रणनीति फिबोनाची सिद्धांत के आधार पर डिज़ाइन की गई एक मात्रात्मक रणनीति है। यह मुख्य रूप से ऊपरी और निचले बैंड बनाने के लिए कई मूल्य बैंड की गणना करने के लिए फिबोनाची अनुपात का उपयोग करता है। जब कीमत बैंडों के माध्यम से टूटती है, तो लाभ के लिए बैंडों के बीच दोलन विशेषताओं को पकड़ने के लिए ट्रेडिंग संकेत उत्पन्न किए जाते हैं।

रणनीति तर्क

कोड का मूल तर्क फाइबोनैचि मूल्य बैंड की गणना करना है।

  1. मध्य रेखा के रूप में 14 अवधि के ईएमए की गणना करें
  2. एटीआर और फिबोनाची अनुपात के अनुसार ऊपरी और निचले 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")
 


अधिक