
द्वि-सूचक चलती औसत बहु-लक्ष्य ट्रेडिंग रणनीति एक मात्रात्मक ट्रेडिंग प्रणाली है जो अल्पकालिक और दीर्घकालिक सूचक चलती औसत (ईएमए) क्रॉसिंग सिग्नल पर आधारित है। यह रणनीति 9 चक्र और 21 चक्र ईएमए के क्रॉसिंग को एक प्रवेश संकेत के रूप में उपयोग करती है, जबकि जोखिम प्रबंधन और लाभ को अधिकतम करने के लिए अधिकतम 10 लाभ लक्ष्य और एक स्टॉप-लॉस सेट करती है। यह रणनीति एक ही समय में बहु-हैंडल द्वि-दिशात्मक ट्रेडिंग का समर्थन करती है, जब ईएमए अल्पकालिक पर लंबे समय तक ईएमए में प्रवेश करता है तो अधिक खुलता है, और जब अल्पकालिक ईएमए लंबे समय तक ईएमए में प्रवेश करता है तो खाली होता है, और जब उलटा क्रॉसिंग होता है तो बाहर निकल जाता है।
इस रणनीति का मूल सिद्धांत सूचकांक चलती औसत क्रॉसिंग प्रणाली पर आधारित है और इसे निम्नानुसार लागू किया गया हैः
रणनीति में व्यवस्थित जोखिम प्रबंधन का उपयोग किया गया है, प्रत्येक लेनदेन के लिए 10% खाते की राशि का उपयोग करने के लिए डिफ़ॉल्ट रूप से, प्रारंभिक राशि 100,000 है, और ओवरहेडिंग को प्रतिबंधित किया गया है।
इन जोखिमों को कम करने के लिए, अतिरिक्त फ़िल्टरिंग शर्तों को पेश करने की सिफारिश की जाती है, जैसे कि रुझान की ताकत के संकेतक, और बाजार में अस्थिरता की गतिशीलता के आधार पर स्टॉप और टारगेट सेट करने पर विचार करें।
इन अनुकूलन के माध्यम से, रणनीतियों की स्थिरता और लाभप्रदता में काफी सुधार किया जा सकता है, और निकासी और घाटे के लेनदेन की आवृत्ति को कम किया जा सकता है।
द्वि-सूचक चलती औसत बहु-लक्ष्य व्यापार रणनीति एक स्पष्ट संरचना, सरल तर्क और एक मात्रात्मक व्यापार प्रणाली है, जो क्लासिक ईएमए क्रॉस सिग्नल पर आधारित है, और बहु-लक्ष्य लाभ प्रबंधन और स्टॉप-लॉस सेटिंग्स के साथ पूरक है। यह रणनीति मध्यम और अल्पकालिक प्रवृत्ति व्यापार के लिए उपयुक्त है और स्पष्ट रूप से प्रवृत्ति वाले बाजारों में बेहतर प्रदर्शन करती है।
हालांकि रणनीति डिजाइन अपेक्षाकृत सरल है, लेकिन इसमें ट्रेडिंग रणनीति के मुख्य तत्व शामिल हैंः प्रवेश संकेत, बाहर निकलने की शर्तें, स्टॉप लॉस प्रबंधन और लाभ लक्ष्य। रणनीति का मुख्य लाभ यह है कि यह स्पष्ट है और इसे समझने और निष्पादित करने में आसान है, साथ ही साथ अच्छी दृश्य सहायता भी प्रदान करता है।
हालांकि, इस रणनीति में एक एकल सूचक पर निर्भरता, बाजार की स्थिति की पहचान की कमी और धन प्रबंधन के लिए पर्याप्त लचीलापन जैसी सीमाएं भी हैं। इस रणनीति में प्रवृत्ति फिल्टर, स्टॉप-लॉस तंत्र के अनुकूलन, वास्तविक बैच-बैक लाभ और धन प्रबंधन के तरीकों में सुधार के माध्यम से अनुकूलन के लिए बहुत अधिक जगह है।
व्यापारियों के लिए, यह रणनीति एक बुनियादी ढांचे के रूप में कार्य कर सकती है, जो व्यक्तिगत जोखिम वरीयताओं और व्यापारिक किस्म की विशेषताओं के अनुसार व्यक्तिगत रूप से अनुकूलित और अनुकूलित हो सकती है, जिससे बेहतर व्यापारिक प्रभाव प्राप्त हो सके।
/*backtest
start: 2024-08-21 00:00:00
end: 2025-08-20 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_OKX","currency":"BNB_USDT","balance":5000}]
*/
//@version=5
strategy("9/21 EMA with 10 Targets + Stoploss",
overlay = true,
initial_capital = 100000,
default_qty_type = strategy.percent_of_equity,
default_qty_value = 10,
pyramiding = 0)
// === Inputs ===
emaFastLen = input.int(9, "Fast EMA Length")
emaSlowLen = input.int(21, "Slow EMA Length")
slPercent = input.float(0.5, "Stoploss %", step=0.1)
// 10 Targets
tp1Percent = input.float(0.5, "Target 1 %", step=0.1)
tp2Percent = input.float(1.0, "Target 2 %", step=0.1)
tp3Percent = input.float(1.5, "Target 3 %", step=0.1)
tp4Percent = input.float(2.0, "Target 4 %", step=0.1)
tp5Percent = input.float(2.5, "Target 5 %", step=0.1)
tp6Percent = input.float(3.0, "Target 6 %", step=0.1)
tp7Percent = input.float(3.5, "Target 7 %", step=0.1)
tp8Percent = input.float(4.0, "Target 8 %", step=0.1)
tp9Percent = input.float(4.5, "Target 9 %", step=0.1)
tp10Percent = input.float(5.0, "Target 10 %", step=0.1)
// === EMA Calculation ===
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
// === Entry Conditions ===
longCond = ta.crossover(emaFast, emaSlow)
shortCond = ta.crossunder(emaFast, emaSlow)
// === Entry ===
if (longCond and strategy.position_size <= 0)
strategy.entry("BUY", strategy.long)
if (shortCond and strategy.position_size >= 0)
strategy.entry("SELL", strategy.short)
// === Series Variables for Targets ===
var float tp1 = na
var float tp2 = na
var float tp3 = na
var float tp4 = na
var float tp5 = na
var float tp6 = na
var float tp7 = na
var float tp8 = na
var float tp9 = na
var float tp10 = na
var float stopLevel = na
// === Long Positions ===
if strategy.position_size > 0
stopLevel := strategy.position_avg_price * (1 - slPercent/100)
tp1 := strategy.position_avg_price * (1 + tp1Percent/100)
tp2 := strategy.position_avg_price * (1 + tp2Percent/100)
tp3 := strategy.position_avg_price * (1 + tp3Percent/100)
tp4 := strategy.position_avg_price * (1 + tp4Percent/100)
tp5 := strategy.position_avg_price * (1 + tp5Percent/100)
tp6 := strategy.position_avg_price * (1 + tp6Percent/100)
tp7 := strategy.position_avg_price * (1 + tp7Percent/100)
tp8 := strategy.position_avg_price * (1 + tp8Percent/100)
tp9 := strategy.position_avg_price * (1 + tp9Percent/100)
tp10 := strategy.position_avg_price * (1 + tp10Percent/100)
strategy.exit("Exit Long", "BUY", stop=stopLevel, limit=tp1)
// === Short Positions ===
if strategy.position_size < 0
stopLevel := strategy.position_avg_price * (1 + slPercent/100)
tp1 := strategy.position_avg_price * (1 - tp1Percent/100)
tp2 := strategy.position_avg_price * (1 - tp2Percent/100)
tp3 := strategy.position_avg_price * (1 - tp3Percent/100)
tp4 := strategy.position_avg_price * (1 - tp4Percent/100)
tp5 := strategy.position_avg_price * (1 - tp5Percent/100)
tp6 := strategy.position_avg_price * (1 - tp6Percent/100)
tp7 := strategy.position_avg_price * (1 - tp7Percent/100)
tp8 := strategy.position_avg_price * (1 - tp8Percent/100)
tp9 := strategy.position_avg_price * (1 - tp9Percent/100)
tp10 := strategy.position_avg_price * (1 - tp10Percent/100)
strategy.exit("Exit Short", "SELL", stop=stopLevel, limit=tp1)
// === Plotting ===
plot(emaFast, "EMA 9", color=color.yellow, linewidth=2)
plot(emaSlow, "EMA 21", color=color.orange, linewidth=2)
// Global plots (avoid local scope error)
plot(tp1, "TP1", color=color.new(color.green, 0))
plot(tp2, "TP2", color=color.new(color.green, 10))
plot(tp3, "TP3", color=color.new(color.green, 20))
plot(tp4, "TP4", color=color.new(color.green, 30))
plot(tp5, "TP5", color=color.new(color.green, 40))
plot(tp6, "TP6", color=color.new(color.green, 50))
plot(tp7, "TP7", color=color.new(color.green, 60))
plot(tp8, "TP8", color=color.new(color.green, 70))
plot(tp9, "TP9", color=color.new(color.green, 80))
plot(tp10, "TP10", color=color.new(color.green, 90))
plot(stopLevel, "Stoploss", color=color.red, linewidth=2)
// Entry Signals
plotshape(longCond, title="BUY Signal", style=shape.labelup, color=color.green, text="BUY")
plotshape(shortCond, title="SELL Signal", style=shape.labeldown, color=color.red, text="SELL")