हिस्टोग्राम ब्रेक पर आधारित ट्रेडिंग रणनीतियाँ


निर्माण तिथि: 2023-11-15 15:25:57 अंत में संशोधित करें: 2023-11-15 15:25:57
कॉपी: 0 क्लिक्स: 700
1
ध्यान केंद्रित करना
1617
समर्थक

हिस्टोग्राम ब्रेक पर आधारित ट्रेडिंग रणनीतियाँ

अवलोकन

यह रणनीति ट्रेंडिंग दिशा में ब्रेक ट्रेडिंग को प्राप्त करने के लिए चलती औसत के साथ ट्रेंडिंग निर्णय के संयोजन में रेखाचित्र टूटने के सिद्धांत का उपयोग करती है। यह ट्रेडिंग सिग्नल उत्पन्न करता है जब कीमतें रेखाचित्र सीमा को तोड़ती हैं। साथ ही, तेजी से और धीमी गति से चलती औसत के स्थान संबंधों का निर्णय करके समग्र ट्रेंडिंग दिशा निर्धारित करने के लिए, पूरे सेट में गलत संकेतों को रोकने के लिए।

रणनीति सिद्धांत

  1. एक तेज़ चलती औसत ((20 चक्र) और एक धीमी चलती औसत ((50 चक्र) की गणना करें।

  2. K रेखा के आधार पर गणना की जाती है कि क्या ऊपर जाने वाला दीर्घकोण ((close>open) या नीचे जाने वाला दीर्घकोण ((close

  3. यह निर्धारित करें कि दीर्घवृत्त ने पिछले K लाइन के उच्चतम मूल्य या निम्नतम मूल्य को तोड़ दिया है या नहीं। यदि यह ऊपर की दीर्घवृत्त है और पिछले K लाइन के उच्चतम मूल्य को तोड़ता है, तो एक बहुस्तरीय तोड़ने का संकेत उत्पन्न होता है; यदि यह नीचे की दीर्घवृत्त है और पिछले K लाइन के निम्नतम मूल्य को तोड़ता है, तो एक खाली तोड़ने का संकेत उत्पन्न होता है।

  4. यह भी निर्धारित करें कि क्या एक तेज चलती औसत धीमी चलती औसत से ऊपर है, यदि ऐसा है, तो इसे एक बहुमुखी प्रवृत्ति के रूप में माना जाता है; इसके विपरीत, इसे एक शून्य प्रवृत्ति के रूप में माना जाता है।

  5. मल्टीहेड ब्रेकिंग सिग्नल केवल तभी प्रभावी होता है जब तेज-धीमी औसत रेखा को बहुमुखी प्रवृत्ति के रूप में माना जाता है; केवल तभी प्रभावी होता है जब तेज-धीमी औसत रेखा को शून्य प्रवृत्ति के रूप में माना जाता है। यह संरेखण में गलत संकेतों से बचा जाता है।

  6. जब एक प्रभावी मल्टीहेड ब्रेकआउट सिग्नल उत्पन्न होता है, तो एक निश्चित स्टॉप और स्टॉप मानदंड के अनुसार कई बार खोलें; जब एक प्रभावी हेड ब्रेकआउट सिग्नल उत्पन्न होता है, तो एक निश्चित स्टॉप और स्टॉप मानदंड के अनुसार खाली कार्ड खोलें।

  7. यदि एक तेजी से चलती औसत और एक धीमी गति से चलती औसत के बीच एक रिवर्स फोर्क होता है, तो वर्तमान स्थिति को समतल करें।

श्रेष्ठता विश्लेषण

  • एक मजबूत ब्रेक सिग्नल का प्रतिनिधित्व करने के लिए एक ब्रेकआउट के रूप में रेखांकन सीमाओं का उपयोग करें।

  • एक ही समय में, प्रवृत्ति की दिशा पर विचार करें, गणना में गलत संकेतों से बचें और सटीकता में सुधार करें।

  • ट्रेंडिंग और ब्रेकआउट को ध्यान में रखते हुए, रणनीति को ट्रेंडिंग स्थिति में उत्कृष्ट बनाने के लिए।

  • पैरामीटर अनुकूलन के माध्यम से, विभिन्न किस्मों और समय अवधि के लिए अनुकूलित किया जा सकता है।

जोखिम और समाधान

  • टूटने की विफलता का जोखिम. समाधान यह है कि एक बड़ा छेद चुनें और यह सुनिश्चित करें कि टूटने की गतिशीलता मजबूत हो।

  • रुझान का आकलन करने के लिए गलत होने का जोखिम। इसका समाधान औसत रेखा पैरामीटर को समायोजित करना है, या अन्य सहायक संकेतकों को जोड़ना है जो रुझान को निर्धारित करते हैं।

  • बहुत कम स्टॉप लॉस सेटिंग्स के कारण बहुत अधिक स्टॉप लॉस होने का खतरा है। समाधान विभिन्न किस्मों और समय चक्र की गतिशीलता के अनुसार स्टॉप लॉस की मात्रा को समायोजित करना है।

  • लाभ कमाने के लिए जगह सेट करने के लिए बहुत छोटा जोखिम। समाधान विभिन्न किस्मों और समय चक्र की गतिशीलता के आधार पर विभिन्न लाभ-हानि अनुपात सेट करना है।

अनुकूलन दिशा

  • कुल मिलाकर, चलती औसत पैरामीटर, ब्रेकआउट पैरामीटर, स्टॉप लॉस मैग्नीट्यूड और स्ट्राइक लॉस इन पैरामीटर को विभिन्न किस्मों और समय अवधि के अनुसार परीक्षण और अनुकूलित करने की आवश्यकता होती है ताकि रणनीति पैरामीटर को अनुकूलित किया जा सके।

  • विभिन्न प्रकार के चलती औसत (जैसे ईएमए, एसएमए, आदि) का परीक्षण करें और अधिक उपयुक्त औसत के लिए देखें।

  • प्रवृत्ति के बारे में निर्णय की सटीकता बढ़ाने के लिए अन्य सहायक निर्णय संकेतकों, जैसे कि Momentum को जोड़ा जा सकता है।

  • इस प्रकार, हम मशीन लर्निंग और अन्य विधियों के माध्यम से पैरामीटर को गतिशील रूप से अनुकूलित कर सकते हैं।

  • सफलता की दर के आधार पर, हम आंकड़ों का अध्ययन कर सकते हैं और सफलता पैरामीटर को समायोजित कर सकते हैं।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Backtested Time Frame: H1
//Default Settings: Are meant to run successfully on all currency pairs to reduce over-fitting.
//Risk Warning: This is a forex trading robot, backtest performance will not equal future performance, USE AT YOUR OWN RISK.
//Code Warning: Although every effort has been made for robustness, this code has not been vetted by independent 3rd parties.
strategy("Pin Bar Strategy v1", overlay=true)

// User Input
usr_risk = input(title="Equity Risk (%)",type=input.integer,minval=1,maxval=100,step=1,defval=3,confirm=false)
atr_mult = input(title="Stop Loss (x*ATR, Float)",type=input.float,minval=0.1,maxval=100,step=0.1,defval=1.9,confirm=false)
trd_rewd = input(title="Risk : Reward (1 : x*SL, Float)",type=input.float,minval=0.1,maxval=100,step=0.1,defval=3.1,confirm=false)
sma_fast = input(title="Fast MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=20,confirm=false)
sma_slow = input(title="Slow MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=50,confirm=false)
atr_valu = input(title="ATR (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=14,confirm=false)
use_slpe = input(title="Use MA Slope (Boolean)",type=input.bool,defval=true,confirm=false)
slp_long = input(title="Bull Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=1,confirm=false)
slp_shrt = input(title="Bear Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=-1,confirm=false)
emg_exit = input(title="Exit When MA Re-Cross (Boolean)",type=input.bool,defval=true,confirm=false)
ent_canc = input(title="Cancel Entry After X Bars (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=3,confirm=false)

// Create Indicators
fastSMA = sma(close, sma_fast)
slowSMA = sma(close, sma_slow)
bullishPinBar = ((close > open) and ((open - low) > 0.66 * (high - low))) or ((close < open) and ((close - low) > 0.66 * (high - low)))
bearishPinBar = ((close > open) and ((high - close) > 0.66 * (high - low))) or ((close < open) and ((high - open) > 0.66 * (high - low)))
atr = atr(atr_valu)

// Specify Trend Conditions
smaUpTrend = (fastSMA > slowSMA) and (fastSMA[1] > slowSMA[1]) and (fastSMA[2] > slowSMA[2]) and (fastSMA[3] > slowSMA[3]) and (fastSMA[4] > slowSMA[4])
smaDnTrend = (fastSMA < slowSMA) and (fastSMA[1] < slowSMA[1]) and (fastSMA[2] < slowSMA[2]) and (fastSMA[3] < slowSMA[3]) and (fastSMA[4] < slowSMA[4])
candleUpTrend = (close[5] > fastSMA[5]) and (open[5] > fastSMA[5]) and (close[6] > fastSMA[6]) and (open[6] > fastSMA[6]) and (close[7] > fastSMA[7]) and (open[7] > fastSMA[7]) and (close[8] > fastSMA[8]) and (open[8] > fastSMA[8]) and (close[9] > fastSMA[9]) and (open[9] > fastSMA[9]) and (close[10] > fastSMA[10]) and (open[10] > fastSMA[10])
candleDnTrend = (close[5] < fastSMA[5]) and (open[5] < fastSMA[5]) and (close[6] < fastSMA[6]) and (open[6] < fastSMA[6]) and (close[7] < fastSMA[7]) and (open[7] < fastSMA[7]) and (close[8] < fastSMA[8]) and (open[8] < fastSMA[8]) and (close[9] < fastSMA[9]) and (open[9] < fastSMA[9]) and (close[10] < fastSMA[10]) and (open[10] < fastSMA[10])

// Specify Piercing Conditions
bullPierce = ((low < fastSMA) and (open > fastSMA) and (close > fastSMA)) or ((low < slowSMA) and (open > slowSMA) and (close > slowSMA))
bearPierce = ((high > fastSMA) and (open < fastSMA) and (close < fastSMA)) or ((high > slowSMA) and (open < slowSMA) and (close < slowSMA))

// MA Slope Function
angle(_source) =>
    rad2degree=180/3.14159265359
    ang=rad2degree*atan((_source[0] - _source[1])/atr(atr_valu)) 

// Calculate MA Slope
fastSlope=angle(fastSMA)
slowSlope=angle(slowSMA)
slopingUp = fastSlope > slp_long
slopingDn = fastSlope < slp_shrt
    
// Specify Entry Conditions
longEntry = smaUpTrend and bullishPinBar and bullPierce
shortEntry = smaDnTrend and bearishPinBar and bearPierce
longEntryWithSlope = smaUpTrend and bullishPinBar and bullPierce and slopingUp
shortEntryWithSlope = smaDnTrend and bearishPinBar and bearPierce and slopingDn

// Specify Secondary Exit Conditions
longExit = crossunder(fastSMA, slowSMA)
shortExit = crossover(fastSMA, slowSMA)

// Long Entry Function
enterlong() =>
    risk = usr_risk * 0.01 * strategy.equity
    stopLoss = low[1] - atr[1] * atr_mult
    entryPrice = high[1]
    units = risk / (entryPrice - stopLoss)
    takeProfit = entryPrice + trd_rewd * (entryPrice - stopLoss)
    strategy.entry("long", strategy.long, units, stop=entryPrice)
    strategy.exit("exit long", "long", stop=stopLoss, limit=takeProfit)
    
// Short Entry Function
entershort() =>
    risk = usr_risk * 0.01 * strategy.equity
    stopLoss = high[1] + atr[1] * atr_mult
    entryPrice = low[1]
    units = risk / (stopLoss - entryPrice)
    takeProfit = entryPrice - trd_rewd * (stopLoss - entryPrice)
    strategy.entry("short", strategy.short, units, stop=entryPrice)
    strategy.exit("exit short", "short", stop=stopLoss, limit=takeProfit)
    
// Execute Long Entry w/o Slope
if (longEntry and use_slpe == false)
    enterlong()
    
// Execute Long Entry w/ Slope
if (longEntryWithSlope and use_slpe == true)
    enterlong()

// Exit Long Due to Re-Cross
if(longExit and strategy.position_size > 0 and emg_exit)    
    strategy.order("exit long, re-cross", strategy.short, abs(strategy.position_size))

// Cancel the Long Entry
strategy.cancel("long", barssince(longEntry) > ent_canc)

// Execute Short Entry w/o Slope
if (shortEntry and use_slpe == false)
    entershort() 
    
// Execute Short Entry w/ Slope
if (shortEntryWithSlope and use_slpe == true)
    entershort() 

// Exit Short Due to Re-Cross
if(shortExit and strategy.position_size < 0 and emg_exit)    
    strategy.order("exit short, re-cross", strategy.long, abs(strategy.position_size))

// Cancel the Short Entry
strategy.cancel("short", barssince(shortEntry) > ent_canc)

// Plot Moving Averages to Chart
plot(fastSMA, color=color.red)
plot(slowSMA, color=color.blue)

// Plot Pin Bars to Chart
plotshape(bullishPinBar, style=shape.arrowup, location=location.abovebar, color=#FF0000, text='')
plotshape(bearishPinBar, style=shape.arrowdown, location=location.belowbar, color=#0000FF, text='')