यह रणनीति दोहरी चलती औसत क्रॉसओवर के सिद्धांत का उपयोग करती है, स्टॉप लॉस और ले लाभ के लिए एटीआर संकेतक को शामिल करती है, और वायदा अनुबंधों के लिए उपयुक्त एक इंट्राडे ट्रेडिंग रणनीति डिजाइन करने के लिए ट्रेडिंग घंटे नियंत्रण जोड़ती है। रणनीति सरल और समझने में आसान है, जिससे यह शुरुआती लोगों के लिए आदर्श है।
यह रणनीति प्रवेश संकेतों के रूप में 5-अवधि और 20-अवधि डब्ल्यूएमए लाइनों के क्रॉसओवर का उपयोग करती है। जब 5-अवधि रेखा 20-अवधि रेखा से ऊपर टूटती है, तो यह लंबी हो जाती है, और जब 5-अवधि रेखा 20-अवधि रेखा से नीचे टूटती है, तो यह छोटी हो जाती है। यह प्रवृत्ति की दिशा निर्धारित करने के लिए 50-अवधि डब्ल्यूएमए रेखा का भी उपयोग करती है। ट्रेडिंग संकेत केवल तभी ट्रिगर किए जाते हैं जब मूल्य ब्रेकआउट दिशा प्रमुख प्रवृत्ति के अनुरूप होती है।
इसके अलावा, रणनीति गतिशील स्टॉप लॉस और ले लाभ स्तर निर्धारित करने के लिए एटीआर संकेतक का लाभ उठाती है। एटीआर बाजार की अस्थिरता को दर्शाता है। रणनीति स्टॉप लॉस और ले लाभ निर्धारित करने के लिए एक कारक (जैसे 3) से गुणा एटीआर मूल्य का उपयोग करती है, जिससे प्रति व्यापार हानि को नियंत्रित किया जाता है।
अंत में, यह रणनीति केवल अमेरिकी ट्रेडिंग घंटों (9:00-14:30 CST) के दौरान ट्रेडों को ट्रिगर करती है ताकि बाजार के खुले और बंद होने के आसपास उच्च अस्थिरता से बचा जा सके जहां झूठे संकेत आसानी से बनते हैं।
इस रणनीति के निम्नलिखित फायदे हैंः
दोहरी चलती औसत क्रॉसओवर समय पर प्रवेश के लिए प्रवृत्ति मोड़ बिंदुओं को प्रभावी ढंग से पकड़ती है।
प्रवृत्ति फ़िल्टर प्रमुख प्रवृत्ति के विरुद्ध व्यापार से बचता है और झूठे संकेतों को कम करता है।
गतिशील एटीआर-आधारित स्टॉप लॉस नियंत्रण प्रति व्यापार हानि।
व्यापारिक घंटों को सीमित करने से अस्थिर खुली और बंद अवधि से बचा जा सकता है।
सरल और स्पष्ट नियम, शुरुआती लोगों के लिए समझने और लागू करने में आसान।
अनुकूलन योग्य मापदंड जैसे एमए अवधि, एटीआर गुणक, ट्रेडिंग घंटे आदि अनुकूलन के लिए।
इस रणनीति में निम्नलिखित जोखिम भी हैं:
रेंज-बाउंड बाजारों के दौरान अधिक स्टॉप लॉस ट्रिगर।
डबल एमए क्रॉसओवर में विलंब है और अल्पकालिक ब्रेकआउट को मिस कर सकता है।
एटीआर पैरामीटर की अनुचित सेटिंग से बड़ा या छोटा स्टॉप लॉस होता है।
मौलिक विश्लेषण के बिना केवल तकनीकी संकेतकों पर भरोसा करें।
प्रभावकारिता उचित प्रतीक और समय सीमा पर निर्भर करती है।
यांत्रिक प्रणाली में मध्यस्थता का खतरा है।
विभिन्न ट्रेडिंग सत्रों के लिए मापदंडों को समायोजित करने की आवश्यकता होती है।
इन्हें पैरामीटर ट्यूनिंग, संकेतक संयोजन, चुनिंदा मैन्युअल हस्तक्षेप आदि के माध्यम से सुधार किया जा सकता है।
इस रणनीति को निम्नलिखित पहलुओं में बढ़ाया जा सकता हैः
विभिन्न एमए प्रणालियों जैसे ईएमए, डीएमए आदि का परीक्षण करें।
अन्य तकनीकी फ़िल्टर जैसे एमएसीडी, आरएसआई आदि जोड़ें।
बेहतर स्टॉप लॉस/लाभ के लिए एटीआर मापदंडों का अनुकूलन करें।
उच्च गुणवत्ता वाले प्रवेश संकेतों को खोजने के लिए वॉल्यूम संकेतक शामिल करें।
प्रतीक विशिष्टताओं के आधार पर मापदंडों को समायोजित करें.
बाजार के खिलाफ व्यापार से बचने के लिए मौलिक कारकों को एकीकृत करें।
बाजार मॉडलिंग के लिए तंत्रिका नेटवर्क की तरह मशीन लर्निंग का परिचय दें।
अधिक अवसरों के लिए बहु-समय फ्रेम संयोजनों का अन्वेषण करें।
मजबूती में सुधार के लिए रणनीतिक समूह का निर्माण करना।
संक्षेप में, यह एक सरल और सहज रणनीति है जो शुरुआती लोगों के लिए लाइव ट्रेडिंग का अभ्यास करने के लिए उपयुक्त है। साथ ही, अधिक तकनीकी संकेतकों या मशीन लर्निंग के माध्यम से अनुकूलन के लिए बहुत अधिक जगह बनी हुई है। प्रतीक और बाजार गतिशीलता के आधार पर पैरामीटर ट्यूनिंग भी महत्वपूर्ण है। रणनीति क्वांट ट्रेडिंग शुरुआती लोगों के लिए एक संदर्भ ढांचा प्रदान करती है, लेकिन स्थिर लाभ के लिए निरंतर परीक्षण और सुधार की आवश्यकता होती है।
/*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"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © james4392010 //@version=4 strategy(title="DayTradingFutures Cross-Strategy", overlay=true) // === GENERAL INPUTS === Periods = input(title="ATR Period", type=input.integer, defval=10) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true) //highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true) atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 up=src-(Multiplier*atr) up1 = nz(up[1],up) up := close[1] > up1 ? max(up,up1) : up dn=src+(Multiplier*atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn wmaFastSource = input(defval = close, title = "Fast WMA Source") wmaFastLength = input(defval = 5, title = "Fast WMA Period") wmaSlowSource = input(defval = close, title = "Slow WMA Source") wmaSlowLength = input(defval = 20, title = "Slow WMA Period") wmaDirectionSource = input(defval = close, title = "Trend 50 Period Source") wmaDirectionLength = input(defval = 50, title = "Trend 50 Period") timeinrange(res, sess) => time(res, sess) != 0 // === SERIES SETUP === /// a couple of ma's.. wmaFast = wma(close, 5) wmaSlow = wma(close, 20) wmaDirection = wma(close, 50) // === PLOTTING === fast = plot(series=wmaFast, color=color.white, linewidth=2) slow = plot(series=wmaSlow, color=color.yellow, linewidth=2) direction = plot(series=wmaDirection, color=color.red, linewidth=2) // === INPUT BACKTEST RANGE === //fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) //fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) //fromYear = input(defval = 2022, title = "From Year", minval = 2022) // To Date Inputs //toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) //toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) //toYear = input(defval = 2022, title = "To Year", minval = 2022) //startDate = timestamp(fromYear, fromMonth, fromDay) //finishDate = timestamp(toYear, toMonth, toDay) //inDateRange= (time >= fromDay, fromMonth, fromYear and time <= toDay, toMonth, toYear) // === FUNCTION EXAMPLE === //inDateRange = (time >= fromDay, fromMonth, fromYear) and (time <= toDay, toMonth, toYear) // === LOGIC === enterLong = crossover(wmaFast, wmaSlow) and close > wmaDirection and timeinrange(timeframe.period, "0900-1430") enterShort = crossunder(wmaFast, wmaSlow) and close < wmaDirection and timeinrange(timeframe.period, "0900-1430") //trend := nz(trend[1], trend) //trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend //upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) buySignal = enterLong //plotshape(enterLong ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green) plotshape(enterLong and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white) //dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) sellSignal = enterShort //plotshape(enterShort ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red) plotshape(enterShort and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white) //mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0) //longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white //shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white //fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor) //fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor) alertcondition(buySignal, title="Buy", message="Buy!") alertcondition(sellSignal, title="Sell", message="Sell!") //changeCond = trend != trend[1] //alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!") // Entry for strategy // //tp=input(25,title="TakeProfit") //sl=input(40,title="StopLoss") strategy.entry("Long",1, when=buySignal) //strategy.exit("Exit",profit=tp,loss=sl) //strategy.exit("TakeProfit",profit=tp) //strategy.exit("StopLoss",loss=sl) strategy.entry("Short",1, when=sellSignal) //strategy.exit("Exit",profit=tp,loss=sl) //strategy.exit("TakeProfit",profit=tp) //strategy.exit("StopLoss",loss=sl) //strategy.exit("Exit", wmaFastwmaSlow) //Buy and Sell Signals //strategy.close_all(when =not timeinrange(timeframe.period, "1000-1430")) // === FILL ==== fill (fast, slow, color = wmaSlow > wmaDirection ? color.green : color.red) //fill(when=enterLong, tp, color = color.new(color.green, 90), title = "Profit area") //fill(when=enterLong, sl, color = color.new(color.red, 90), title = "Loss area") //fill(when=enterShort, tp, color = color.new(color.green, 90), title = "Profit area") //fill(when=enterShort, sl, color = color.new(color.red, 90), title = "Loss area")