मूविंग एवरेज क्रॉसओवर और ऊपरी रेल की सफलता के लिए प्रोत्साहन रणनीति

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

img

अवलोकन

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

रणनीति तर्क

  1. मुख्य ट्रेडिंग सिग्नल के रूप में एमएसीडी फास्ट लाइन और स्लो लाइन के क्रॉसओवर का उपयोग करें। जब फास्ट लाइन स्लो लाइन के ऊपर से गुजरती है, तो एक लंबी स्थिति लें। जब फास्ट लाइन स्लो लाइन के नीचे से गुजरती है, तो एक छोटी स्थिति लें।

  2. ओवरबॉट और ओवरसोल्ड स्थितियों को निर्धारित करने के लिए आरएसआई संकेतक को शामिल करें। केंद्र रेखा के नीचे लंबा सुझाव देता है, जबकि ऊपर छोटा सुझाव देता है।

  3. वर्तमान समापन मूल्य की तुलना एक निश्चित अवधि की एसएमए रेखा से करें। एसएमए से नीचे समापन मूल्य लंबे समय का सुझाव देता है, जबकि ऊपर से कम का सुझाव देता है।

  4. लंबी अवधि के लिए प्रतिरोध के रूप में एक निश्चित अवधि के उच्चतम मूल्य के 0.5 फाइबोनैचि स्तर की गणना करें। लघु अवधि के लिए समर्थन के रूप में एक निश्चित अवधि के निम्नतम मूल्य के 0.5 फाइबोनैचि स्तर की गणना करें।

  5. जब फास्ट लाइन ऊपर से गुजरती है और कीमत समर्थन से नीचे होती है, तब लॉन्ग लें। जब फास्ट लाइन नीचे से गुजरती है और कीमत प्रतिरोध से ऊपर होती है, तब शॉर्ट लें।

  6. एक ट्रैलिंग स्टॉप लॉस तंत्र अपनाएं। स्टॉप लॉस प्रारंभ में प्रवेश मूल्य के एक निश्चित प्रतिशत पर तय किया जाता है। जब हानि एक निश्चित स्तर तक पहुंच जाती है, तो क्रमिक ट्रैलिंग स्टॉप लॉस पर स्विच करें।

लाभ

  1. इस रणनीति में MACD क्रॉसओवर सिग्नल का पूर्ण उपयोग किया गया है, जो एक क्लासिक और प्रभावी तकनीकी संकेतक ट्रेडिंग सिग्नल है।

  2. आरएसआई और एसएमए जैसे कई संकेतकों की पुष्टि को शामिल करने से झूठे संकेतों को फ़िल्टर किया जा सकता है और विश्वसनीयता में सुधार हो सकता है।

  3. ब्रेकआउट ट्रेडिंग के लिए गतिशील समर्थन और प्रतिरोध स्तरों की गणना करने से बड़े रुझानों को कैप्चर किया जा सकता है।

  4. जोखिम को नियंत्रित करते हुए अधिकांश लाभों को लॉक कर सकता है।

  5. रणनीति तर्क स्पष्ट और सरल है, शुरुआती लोगों के लिए समझने और मास्टर करने में आसान है।

जोखिम

  1. एमएसीडी संकेतक में पिछड़े मुद्दे हैं और इष्टतम प्रवेश और निकास बिंदुओं को याद कर सकते हैं।

  2. कई संकेतकों का संयोजन जटिलता और परस्पर विरोधी संकेतों के जोखिम को बढ़ाता है।

  3. गतिशील रूप से समर्थन और प्रतिरोध की गणना करते समय गलत ब्रेकआउट के जोखिम हैं।

  4. ट्रेलिंग स्टॉप लॉस मजबूत रुझानों में समय से पहले बाहर निकल सकता है, रुझानों पर सवारी करने में विफल रहता है।

  5. मापदंडों को दोहराए जाने वाले परीक्षण और अनुकूलन की आवश्यकता होती है, अनुचित मापदंडों का प्रदर्शन पर नकारात्मक प्रभाव पड़ता है।

अनुकूलन दिशाएँ

  1. एमएसीडी अवधि को अनुकूलित करने के लिए विभिन्न पैरामीटर संयोजनों का परीक्षण करें।

  2. बहुआयामी विश्लेषण के लिए बोलिंगर बैंड, केडीजे जैसे अधिक संकेतक पेश करें।

  3. समर्थन और प्रतिरोध की उचितता का आकलन करने के लिए अधिक कारकों को शामिल करें।

  4. समय आधारित या अस्थिरता आधारित स्टॉप जैसे अधिक उन्नत स्टॉप लॉस तंत्रों का शोध करें।

  5. स्वचालित पैरामीटर अनुकूलन के लिए एक स्वतः अनुकूलन मॉड्यूल जोड़ें.

सारांश

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


/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-09 23:00:00
period: 1m
basePeriod: 1m
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/
// © onurenginogutcu

//@version=4
strategy("R19 STRATEGY", overlay=true, calc_on_every_tick=true , margin_long=100, margin_short=100 ,  process_orders_on_close=true )



sym = input(title="Symbol", type=input.symbol, defval="BINANCE:BTCUSDT" , group = "SYMBOL") 
timeFrame = input(title="Strategy Decision Time Frame", type = input.resolution ,  defval="60")

adxlen = input(14, title="ADX Smoothing" , group = "ADX")
dilen = input(14, title="ADX DI Length", group = "ADX")
adxemalenght = input(30, title="ADX EMA", group = "ADX")
adxconstant = input(19, title="ADX CONSTANT", group = "ADX")

fibvar = input (title = "Fibo Look Back Canles" , defval = 50 , minval = 0 , group = "FIBO MACD SMA")
smaLookback = input (title = "SMA Look Back Candles" , defval = 30 , minval = 0 , group = "FIBO MACD SMA")
MACDFast = input (title = "MACD Fast Lenght" , defval = 15 , minval = 0 , group = "FIBO MACD SMA")
MACDSlow = input (title = "MACD Slow Lenght" , defval = 30 , minval = 0 , group = "FIBO MACD SMA")
MACDSmooth = input (title = "MACD Signal Smoothing" , defval = 9 , minval = 0 , group = "FIBO MACD SMA")
MACDLookback = input (title = "MACD Look Back Candles" , defval = 100 , minval = 0 , group = "FIBO MACD SMA")

trailingStopLong = input (title = "Trailing Long Stop %" , defval = 2.0 , step = 0.1, group = "TP & SL") * 0.01
trailingStopShort = input (title = "Trailing Short Stop %" , defval = 2.0 , step = 0.1 , group = "TP & SL") * 0.01
LongTrailingProfitStart = input (title = "Long Profit Start %" , defval = 2.0 , step = 0.1 , group = "TP & SL") * 0.01
ShortTrailingProfitStart = input (title = "Short Profit Start %" , defval = 2.0 , step = 0.1, group = "TP & SL") * 0.01

lsl = input(title="Max Long Stop Loss (%)",
     minval=0.0, step=0.1, defval=3.0, group = "TP & SL") * 0.01
     
ssl = input(title="Max Short Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5, group = "TP & SL") * 0.01
     
longtp = input(title="Long Take Profit (%)",
     minval=0.0, step=0.1, defval=100, group = "TP & SL") * 0.01
     
shorttp = input(title="Short Take Profit (%)",
     minval=0.0, step=0.1, defval=100, group = "TP & SL") * 0.01
     
capperc = input(title="Capital Percentage to Invest (%)",
     minval=0.0, maxval=100, step=0.1, defval=95, group = "CAPITAL TO INVEST") * 0.01
     

symClose = security(sym, timeFrame, close)
symHigh = security(sym, timeFrame, high)
symLow = security(sym, timeFrame, low)

atr = atr (14) 

/////////adx code

dirmov(len) =>
	up = change(symHigh)
	down = -change(symLow)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
emasig = ema (sig , adxemalenght )


////////adx code over



i = ema (symClose , MACDFast) - ema (symClose , MACDSlow) 
r = ema (i , MACDSmooth)

sapust = highest (i , MACDLookback) * 0.729 
sapalt = lowest (i , MACDLookback) * 0.729  


simRSI = rsi (symClose , 50 ) 




fibtop = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
fibbottom = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)





cond1 = 0
cond2 = 0
cond3 = 0
cond4 = 0


longCondition = crossover(i, r) and i < sapalt and sig > adxconstant and symClose < sma (symClose , smaLookback) and simRSI < sma (simRSI , 50) and symClose < fibbottom 
shortCondition = crossunder(i, r) and i > sapust and sig > adxconstant and  symClose > sma (symClose , smaLookback) and simRSI > sma (simRSI , 50) and symClose > fibtop 


//////////////////////probability long/short
if (crossover(i, r) and i < sapalt)
    cond1 := 35
else if (crossunder(i, r) and i > sapust)
    cond1 := -35
else
    cond1 := 0
    
if (symClose < sma (symClose , smaLookback))
    cond2 := 30
else if (symClose > sma (symClose , smaLookback))
    cond2 := -30
else
    cond2 := 0
    
if (simRSI < sma (simRSI , 50))
    cond3 := 25
else if (simRSI > sma (simRSI , 50))
    cond3 := -25
else
    cond3 := 0
    
if (symClose < fibbottom)
    cond4 := 10
else if (symClose > fibbottom)
    cond4 := -10
else
    cond4 := 0
    
probab = cond1 + cond2 + cond3 + cond4
////////////////////////////////////////////////////////////////

///////////////////////////////////////////STRATEGY ENTRIES AND STOP LOSSES /////
var startTrail = 0
var trailingLongPrice = 0.0
var trailingShortPrice = 0.0

if (longCondition and strategy.position_size == 0)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close )

if (shortCondition and strategy.position_size == 0)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close )
    
    
if (strategy.position_size == 0)    
    trailingShortPrice := 0.0
    trailingLongPrice := 0.0  
    startTrail := 0
/////////////////////////////////strategy exit

if (strategy.position_size > 0 and close >= strategy.position_avg_price * (1 + LongTrailingProfitStart))
    startTrail := 1

if (strategy.position_size < 0 and close <= strategy.position_avg_price * (1 - ShortTrailingProfitStart))
    startTrail := -1
    



trailingLongPrice := if strategy.position_size > 0 and startTrail == 1
    stopMeasure = close * (1 - trailingStopLong)
    max (stopMeasure , trailingLongPrice [1])
else if strategy.position_size > 0 and startTrail == 0
    strategy.position_avg_price * (1 - lsl)


trailingShortPrice := if strategy.position_size < 0 and startTrail == -1
    stopMeasure = close * (1 + trailingStopShort)
    min (stopMeasure , trailingShortPrice [1])
else if strategy.position_size < 0 and startTrail == 0
    strategy.position_avg_price * (1 + ssl)




if (strategy.position_size > 0)
    strategy.exit("Exit Long", "Long", stop = trailingLongPrice , limit=strategy.position_avg_price*(1 + longtp))
 

if (strategy.position_size < 0)
    strategy.exit("Exit Short", "Short", stop = trailingShortPrice , limit=strategy.position_avg_price*(1 - shorttp))


////////////////////////vertical colouring signals
bgcolor(color=longCondition ? color.new (color.green , 70) : na)
bgcolor(color=shortCondition ? color.new (color.red , 70) : na)

plot (trailingLongPrice , color = color.green) ///long price trailing stop
plot (trailingShortPrice , color = color.red) /// short price trailing stop
plot (startTrail , color = color.yellow)
plot (probab , color = color.white) ////probability


अधिक