
यह रणनीति एक मात्रात्मक ट्रेडिंग प्रणाली है जो बहु-समय फ्रेम विश्लेषण पर आधारित है, जो ट्रेडों को निष्पादित करने के लिए मुख्य रूप से 30-मिनट और 1-घंटे के समय-फ्रेम पर MACD, RSI, VWAP औसत और एटीआर अस्थिरता फ़िल्टर के एकीकृत संकेतों का उपयोग करती है। यह रणनीति दोनों को अधिक और कम करने का समर्थन करती है, विभिन्न समय-फ्रेमों के तकनीकी संकेतक के क्रॉस-सिग्नल द्वारा पुष्टि की जाती है, और व्यापार की गुणवत्ता को बढ़ाने के लिए अस्थिरता की स्थिति फ़िल्टर के साथ संयुक्त है। रणनीति में एक निश्चित प्रतिशत स्टॉप-लॉस तंत्र है, जबकि तकनीकी संकेतक के पलटाव पर व्यापार से बाहर निकलना भी है, जिसका उद्देश्य अल्पकालिक मूल्य में उतार-चढ़ाव को पकड़ना है।
इस रणनीति का मूल सिद्धांत निम्न गुणवत्ता वाले संकेतों को बहु-शर्त पुष्टिकरण के माध्यम से फ़िल्टर करना है, जिसमें मुख्य रूप से निम्नलिखित कुछ प्रमुख घटक शामिल हैंः
बहु समय फ्रेम MACD क्रॉस सिग्नल:
आरएसआई ओवरबॉय ओवरबॉय फ़िल्टर:
दोहरी VWAP मूल्य स्थिति की पुष्टि:
अस्थिरता फिल्टर:
बहुस्तरीय निकासी तंत्र:
इस तरह के बहु-स्तरीय शर्त फ़िल्टरिंग और पुष्टि के माध्यम से, रणनीति का उद्देश्य स्पष्ट रूप से दिशात्मक मध्यम और अल्पकालिक उतार-चढ़ाव को पकड़ना है, जबकि कम गुणवत्ता वाले संकेतों को फ़िल्टर करना, जीत दर और लाभ-हानि अनुपात में सुधार करना है।
बहु-समय फ़्रेम पुष्टि: 30 मिनट और 1 घंटे के समय के फ्रेम के संकेतों के संयोजन के माध्यम से, रणनीति वास्तविक रुझानों की बेहतर पहचान करने और झूठे संकेतों के प्रभाव को कम करने में सक्षम है। विशेष रूप से 1 घंटे के एमएसीडी रुझान की पुष्टि करने वाली सुविधा, जो बड़े रुझान के खिलाफ व्यापार से बचने में मदद करती है।
उतार-चढ़ाव के अनुकूलताएटीआर अस्थिरता फ़िल्टर यह सुनिश्चित करता है कि रणनीति केवल बाजार में पर्याप्त गतिशीलता के साथ प्रवेश करती है और कम अस्थिरता वाले क्षेत्रों में व्यापार करने से बचती है, जो प्रभावी रूप से मृत क्षेत्र के झटके के जोखिम को कम करती है।
लचीला निकासी तंत्रइस रणनीति में न केवल एक निश्चित स्टॉप-लॉस शामिल है, बल्कि एक गतिशील बाहर निकलने की प्रणाली भी है, जो कि सूचकांक पर आधारित है, जो समय पर बाहर निकलने और मुनाफे की रक्षा करने की अनुमति देता है जब कीमतें स्टॉप-लॉस तक नहीं पहुंचती हैं, लेकिन बाजार में उलटफेर शुरू हो गया है।
दोहरे मूल्य स्थान की पुष्टि: कीमतों को एक साथ दो समय फ़्रेम VWAP के ऊपर ((अधिक करना)) या नीचे ((खाली करना)) होने की आवश्यकता है, जो मूल्य गति और दिशा को और अधिक पुष्टि करता है और झूठे ब्रेक को कम करता है।
अंतर्निहित जोखिम प्रबंधन: रणनीति में स्टॉप लॉस और पोजीशन मैनेजमेंट शामिल है (डिफ़ॉल्ट रूप से प्रत्येक लेनदेन पर 5% खाता इक्विटी का उपयोग किया जाता है), जो प्रत्येक लेनदेन पर जोखिम के द्वार को नियंत्रित करने और पूंजी की रक्षा करने में मदद करता है।
कम जीत दर चुनौतीजैसा कि कोड नोट्स में बताया गया है, रणनीतियों में जीत की कम दर की समस्या हो सकती है। ऐसा इसलिए है क्योंकि बहु-शर्त फ़िल्टरिंग ने संकेत की गुणवत्ता में वृद्धि की है, लेकिन व्यापार की आवृत्ति में काफी कमी आई है, जिससे नमूना मात्रा कम हो गई है और सांख्यिकीय महत्व सीमित है।
पैरामीटर संवेदनशीलता: रणनीति में कई समायोज्य पैरामीटर का उपयोग किया जाता है, जिसमें मैकड लंबाई, आरएसआई थ्रेशोल्ड, एटीआर फिल्टर पैरामीटर आदि शामिल हैं। इन पैरामीटरों में मामूली बदलावों का रणनीति के प्रदर्शन पर महत्वपूर्ण प्रभाव पड़ सकता है, जिसमें अति-अनुकूलन का जोखिम होता है।
निश्चित प्रतिशत स्टॉप लॉस की सीमासभी बाजार स्थितियों के लिए एक ही स्टॉप ((1.5%) और स्टॉप ((0.5%) अनुपात का उपयोग करें, जो विभिन्न अस्थिरता वाले वातावरण के लिए अनुकूल नहीं हो सकता है। उच्च अस्थिरता वाले बाजारों में, स्टॉप बहुत तंग हो सकता है; कम अस्थिरता वाले बाजारों में, स्टॉप बहुत दूर हो सकता है।
मल्टीटाइम फ्रेम विलंबता: अधिक समय के फ्रेम (जैसे 1 घंटे) का उपयोग करने वाले संकेतों को पुष्टि के रूप में पेश किया जा सकता है, जिससे प्रवेश के अवसरों को याद किया जा सकता है या बाहर निकलने में देरी हो सकती है।
बाजार में अनुकूलन क्षमता का अभाव: रणनीति में विभिन्न बाजार स्थितियों (प्रवृत्ति / उतार-चढ़ाव) को अलग करने के लिए तंत्र शामिल नहीं हैं, जो कुछ बाजार स्थितियों में खराब प्रदर्शन कर सकते हैं।
समाधान:
गतिशील स्टॉप लॉस अनुकूलनएटीआर के आधार पर एक गतिशील मूल्य के लिए एक निश्चित प्रतिशत स्टॉप लॉस को बदलना, उदाहरण के लिए, स्टॉप के रूप में 1.5 × एटीआर और स्टॉप के रूप में 3 × एटीआर का उपयोग करना। यह रणनीति को विभिन्न बाजार में उतार-चढ़ाव की स्थितियों के लिए बेहतर रूप से अनुकूलित कर सकता है, उच्च उतार-चढ़ाव के दौरान अधिक आराम से स्टॉप प्रदान कर सकता है और कम उतार-चढ़ाव के दौरान स्टॉप लक्ष्य को कस सकता है।
बाज़ार परिवेश वर्गीकरण: बाजार की स्थिति की पहचान करने के लिए एक बाजार परिवेश पहचान तंत्र को पेश किया गया है, जो ट्रेंडिंग बाजार और अस्थिर बाजारों को अलग करता है। बाजार की स्थिति को पहचानने के लिए एडीएक्स, बुलिन बैंडविड्थ या दीर्घकालिक चलती औसत के साथ कीमतों के संबंध का उपयोग किया जा सकता है, और तदनुसार रणनीति पैरामीटर को समायोजित किया जा सकता है या यहां तक कि ट्रेडिंग तर्क को पूरी तरह से बदल दिया जा सकता है।
प्रवेश समय अनुकूलन: वर्तमान रणनीति वर्तमान K लाइन में प्रवेश जो MACD क्रॉसिंग पर होता है, स्लाइडिंग या निष्पादन देरी का सामना कर सकता है। क्रॉसिंग की पुष्टि के बाद अगले K लाइन के उद्घाटन पर प्रवेश करने पर विचार करें, या एक विशिष्ट मूल्य क्षेत्र में प्रवेश करने के लिए एक सीमा मूल्य निर्धारित करें, ताकि बेहतर निष्पादन मूल्य प्राप्त हो सके।
समय फ़िल्टर: व्यापार समय फ़िल्टर जोड़ें, विशेष रूप से कम कुशल व्यापार समय से बचें। उदाहरण के लिए, एशियाई समय के अंत में या ईयू-अमेरिका पारगमन समय जैसे कम या अस्थिर समय के दौरान व्यापार से बचा जा सकता है।
सूचक पैरामीटर अनुकूलित: MACD, RSI और ATR के पैरामीटर को हालिया बाजार की अस्थिरता या आवधिक स्वतः समायोजन के आधार पर स्व-अनुकूलित मान के रूप में डिज़ाइन किया गया है। उदाहरण के लिए, उच्च अस्थिरता वाले बाजारों में छोटे MACD पैरामीटर का उपयोग किया जा सकता है, कम अस्थिरता वाले बाजारों में लंबे पैरामीटर का उपयोग किया जाता है।
सिग्नल तीव्रता श्रेणी: प्रवेश संकेतों के लिए एक शक्ति स्कोरिंग प्रणाली स्थापित करें, जो कई कारकों के आधार पर संकेतों को स्कोर करता है (जैसे कि मैकड स्तंभ आकार, आरएसआई विचलन, वीडब्ल्यूपीएपी दूरी, आदि), केवल उन ट्रेडों को निष्पादित करें जिनकी ताकत एक विशिष्ट थ्रेशोल्ड से अधिक है, या सिग्नल की ताकत की गतिशीलता के अनुसार स्थिति आकार को समायोजित करें।
मशीन लर्निंग: मशीन लर्निंग मॉडल को पेश करना यह अनुमान लगाने के लिए कि कौन से सिग्नल अधिक लाभदायक ट्रेडों को उत्पन्न करने की संभावना रखते हैं, ऐतिहासिक डेटा प्रशिक्षण मॉडल के आधार पर सबसे मूल्यवान पैटर्न संयोजन की पहचान करना। यह रणनीति की अनुकूलनशीलता और जीत की दर को बढ़ा सकता है।
इन अनुकूलन दिशाओं का उद्देश्य रणनीति की स्थिरता, अनुकूलनशीलता और दीर्घकालिक प्रदर्शन को बढ़ाना है, जबकि इसके मुख्य तर्क को बरकरार रखना है। इन सुधारों के माध्यम से, रणनीति को विभिन्न बाजार स्थितियों और परिस्थितियों में परिवर्तन के लिए बेहतर प्रतिक्रिया दी जा सकती है।
बहु-समय फ़्रेम मैकड-आरएसआई क्रॉस-वॉलेबिलिटी फ़िल्टर्ड क्वांटिफाइंग ट्रेडिंग रणनीति एक डिज़ाइन की गई व्यापक ट्रेडिंग प्रणाली है जो कई तकनीकी संकेतकों और कई समय-फ्रेम के संकेतों के संयोजन के माध्यम से उच्च गुणवत्ता वाले व्यापार के अवसरों की पहचान करती है। इस रणनीति का मुख्य लाभ इसकी बहु-स्तरीय सिग्नल पुष्टिकरण तंत्र और अंतर्निहित जोखिम प्रबंधन सुविधाओं में है, जिससे यह कीमत में उतार-चढ़ाव को पकड़ने के साथ-साथ जोखिम को नियंत्रित करने में सक्षम है।
कम जीत दर की चुनौतियों के बावजूद, रणनीति ने औसत लाभदायक ट्रेडों की आय में वृद्धि करके सकारात्मक उम्मीदों को बनाए रखा। रणनीति के प्रदर्शन को और भी बेहतर बनाने की उम्मीद है, विशेष रूप से गतिशील स्टॉप-स्टॉप, बाजार की स्थिति वर्गीकरण और सिग्नल की ताकत के वर्गीकरण जैसे सिफारिश किए गए अनुकूलन उपायों को लागू करके।
यह रणनीति मध्यम और अल्पकालिक व्यापारियों के लिए उपयुक्त है, विशेष रूप से उन व्यापारियों के लिए जो तकनीकी विश्लेषण पर आधारित एक व्यवस्थित व्यापारिक पद्धति की तलाश करते हैं और जोखिम प्रबंधन पर जोर देते हैं। रणनीति की बहु-सशर्त पुष्टिकरण तंत्र, हालांकि व्यापार की आवृत्ति को कम करता है, लेकिन प्रत्येक व्यापार की गुणवत्ता को बढ़ाता है, जो “कम अधिक है” व्यापार दर्शन के अनुरूप है, गुणवत्ता पर जोर देता है, न कि मात्रा पर।
वास्तविक अनुप्रयोगों में, यह अनुशंसा की जाती है कि व्यापारी पहले सिमुलेशन वातावरण में रणनीति का परीक्षण करें, विशेष रूप से विभिन्न अनुकूलन उपायों की प्रभावशीलता का परीक्षण करने के लिए, और फिर सावधानीपूर्वक इसे वास्तविक व्यापार पर लागू करें। साथ ही, बाजार की परिस्थितियों में परिवर्तन की निरंतर निगरानी, समय पर रणनीति पैरामीटर को समायोजित करना, लंबे समय तक स्थिर प्रदर्शन को बनाए रखने में मदद करेगा।
/*backtest
start: 2025-01-01 00:00:00
end: 2025-06-08 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © GentlemanOfTrading
//@version=6
strategy(title = "ETH Day Trader", overlay = true, margin_long = 100, margin_short = 100, default_qty_type = strategy.percent_of_equity, default_qty_value = 5)
// ==== 1) USER INPUTS ====
// MACD/RSI lengths
fastLen = input.int(12, title="MACD Fast EMA Length", minval=1)
slowLen = input.int(26, title="MACD Slow EMA Length", minval=1)
signalLen = input.int(9, title="MACD Signal EMA Length", minval=1)
rsiLen = input.int(14, title="RSI Length", minval=1)
// RSI thresholds
rsiThreshLong30 = input.int(55, title="RSI30m > (Long)", minval=1, maxval=100)
rsiThreshShort30= input.int(45, title="RSI30m < (Short)", minval=1, maxval=100)
rsiThresh1h = input.int(50, title="RSI1h Threshold", minval=1, maxval=100)
// ATR filter (30m)
atrLen = input.int(14, title="ATR Length (30m)", minval=1)
atrMaLen = input.int(20, title="ATR MA Length (30m)", minval=1)
// Take Profit / Stop Loss (percent)
tpPerc = input.float(1.5, title="Take Profit (%)", minval=0.1) / 100
slPerc = input.float(0.5, title="Stop Loss (%)", minval=0.1) / 100
// Toggle whether to use 1h trend confirmation
use1hTrend = input.bool(true, title="Use 1h MACD Trend Confirmation?")
// ==== 2) FETCH INDICATORS ON 30m ====
// We assume this script is applied on a chart ≤ 30m (e.g. 15m or 5m),
// but if you apply it on a 30m chart it still works: security() with "30" just returns the same bar.
[macd30m, macdSig30m, _] = ta.macd(close, fastLen, slowLen, signalLen)
rsi30m = ta.rsi(close, rsiLen)
atr30m = ta.atr(atrLen)
// ==== 3) FETCH INDICATORS ON 1h & VWAPs via request.security() ====
// --- 1h MACD & RSI ---
[macd1h, macdSig1h, _] = request.security(syminfo.tickerid, "60", ta.macd(close, fastLen, slowLen, signalLen), lookahead=barmerge.lookahead_off)
rsi1h = request.security(syminfo.tickerid, "60", ta.rsi(close, rsiLen), lookahead=barmerge.lookahead_off)
// --- 30m VWAP & 1h VWAP (session VWAP) ---
vwap30m = request.security(syminfo.tickerid, "30", ta.vwap(close), lookahead=barmerge.lookahead_off)
vwap1h = request.security(syminfo.tickerid, "60", ta.vwap(close), lookahead=barmerge.lookahead_off)
// ==== 4) BUILD VOLATILITY FILTER (30m ATR vs ATR MA) ====
atr30m_ma = ta.sma(atr30m, atrMaLen)
volatilityOK = atr30m >= atr30m_ma
// ==== 5) MULTI-TIMEFRAME CROSS CONDITIONS ====
// 30m MACD cross signals
longCross30m = ta.crossover(macd30m, macdSig30m)
shortCross30m = ta.crossunder(macd30m, macdSig30m)
// 1h MACD trend confirmation
macdTrendUp1h = macd1h > macdSig1h
macdTrendDown1h = macd1h < macdSig1h
// ==== 6) ENTRY & EXIT CONDITIONS ====
// LONG ENTRY:
// • 30m MACD crossover
// • 30m RSI > rsiThreshLong30
// • (optionally) 1h MACD line > 1h MACD signal
// • Price > 30m VWAP AND Price > 1h VWAP
// • 30m ATR ≥ 30m ATR MA (volatility filter)
longEntryCond =
longCross30m
and (rsi30m > rsiThreshLong30)
and (close > vwap30m)
and (close > vwap1h)
and volatilityOK
and (use1hTrend ? macdTrendUp1h : true)
// LONG EXIT:
// • fixed TP/SL
// OR • 30m MACD crossunder
// OR • 1h MACD falls below signal (trend flipped)
var float entryPriceLong = na
longExitCond = false
if (strategy.position_size > 0)
// Price-based TP / SL checks
entryPriceLong := nz(entryPriceLong[1], strategy.position_avg_price)
longTPprice = entryPriceLong * (1 + tpPerc)
longSLprice = entryPriceLong * (1 - slPerc)
// check TP/SL first
longExitTP = high >= longTPprice
longExitSL = low <= longSLprice
// fallback: MACD crossunder on 30m OR 1h trend flips
macdTrendFlip1h = macdTrendUp1h and (macd1h < macdSig1h)
macdCross30m = shortCross30m
longExitCond := longExitTP or longExitSL or macdCross30m or macdTrendFlip1h
else
entryPriceLong := na // reset when no position
// SHORT ENTRY:
// • 30m MACD crossunder
// • 30m RSI < rsiThreshShort30
// • (optionally) 1h MACD line < 1h MACD signal
// • Price < 30m VWAP AND Price < 1h VWAP
// • 30m ATR ≥ 30m ATR MA (volatility filter)
shortEntryCond =
shortCross30m
and (rsi30m < rsiThreshShort30)
and (close < vwap30m)
and (close < vwap1h)
and volatilityOK
and (use1hTrend ? macdTrendDown1h : true)
// SHORT EXIT:
// • fixed TP/SL
// OR • 30m MACD crossover
// OR • 1h MACD flips up
var float entryPriceShort = na
shortExitCond = false
if (strategy.position_size < 0)
entryPriceShort := nz(entryPriceShort[1], strategy.position_avg_price)
shortTPprice = entryPriceShort * (1 - tpPerc)
shortSLprice = entryPriceShort * (1 + slPerc)
// check TP/SL first
shortExitTP = low <= shortTPprice
shortExitSL = high >= shortSLprice
macdTrendFlipUp1h = macdTrendDown1h and (macd1h > macdSig1h)
macdCrossUp30m = longCross30m
shortExitCond := shortExitTP or shortExitSL or macdCrossUp30m or macdTrendFlipUp1h
else
entryPriceShort := na // reset when no position
// ==== 7) EXECUTE STRATEGY ORDERS WITH LABELS & ALERTS ====
// — Long Entry —
if (longEntryCond and strategy.position_size == 0)
strategy.entry("Long", strategy.long)
label.new(bar_index, low, text="Buy (LT)", style=label.style_label_up, color=color.new(color.green, 0), textcolor=color.white, yloc=yloc.belowbar)
alert("Buy (LT)", alert.freq_once_per_bar_close)
// — Long Exit —
if (strategy.position_size > 0 and longExitCond)
strategy.close("Long")
label.new(bar_index, high, text="Sell (LT)", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white, yloc=yloc.abovebar)
alert("Sell (LT)", alert.freq_once_per_bar_close)
// — Short Entry —
if (shortEntryCond and strategy.position_size == 0)
strategy.entry("Short", strategy.short)
label.new(bar_index, high, text="Sell (ST)", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white, yloc=yloc.abovebar)
alert("Sell (ST)", alert.freq_once_per_bar_close)
// — Short Exit —
if (strategy.position_size < 0 and shortExitCond)
strategy.close("Short")
label.new(bar_index, low, text="Buy (ST)", style=label.style_label_up, color=color.new(color.green, 0), textcolor=color.white, yloc=yloc.belowbar)
alert("Buy (ST)", alert.freq_once_per_bar_close)
// ==== 8) OPTIONAL PLOTTING (for debugging) ====
// We’ve removed any `transp`/`opacity` arguments. Instead, we use `color.new(baseColor, α)`
// for transparency, where α = 0 is fully opaque and α = 255 is fully transparent.
// 30m VWAP
plot(vwap30m, title = "VWAP 30m", color = color.new(color.teal, 80)) // ~31% transparentlinewidth= 1
// 1h VWAP
plot(vwap1h, title = "VWAP 1h", color = color.new(color.fuchsia, 80), linewidth= 1) // ~31% transparent
// 30m ATR vs ATR_MA
plot(atr30m, title = "ATR 30m", color = color.new(color.orange, 80))
plot(atr30m_ma, title = "ATR30m MA", color = color.new(color.yellow, 80))
// 30m MACD Histogram (bars)
plot(macd30m - macdSig30m, title = "MACD Histogram (30m)", style = plot.style_columns, color = (macd30m - macdSig30m >= 0 ? color.new(color.green, 80) : color.new(color.red, 80)))
// 1h MACD Histogram (area)
h1 = request.security(syminfo.tickerid, "60", macd1h - macdSig1h, lookahead=barmerge.lookahead_off)
plot(1, title = "MACD Hist (1h)", style = plot.style_area, color = (h1 >= 0 ? color.new(color.green, 80) : color.new(color.red, 80)))