डबल बॉटम रिवर्सल मीन रिवर्सल डीसीए ग्रिड रणनीति मुख्य रूप से औसत रिवर्सल मूल्य और डीसीए रणनीति को क्रमिक स्थिति निर्माण को लागू करने के लिए लागू करती है। यह डबल बॉटम रिवर्सल पैटर्न के आधार पर रिवर्सल अवसरों का निर्धारण करती है। एक बार रिवर्सल पैटर्न ट्रिगर हो जाने के बाद, यह क्रमिक ग्रिड पदों को स्थापित करने के लिए डीसीए के साथ संयुक्त विभिन्न कीमतों पर कई सीमा आदेशों का उपयोग करता है।
रणनीति पहले जांचती है कि क्या कैंडलस्टिक चार्ट पर नीचे के बराबर दो लगातार समापन मूल्य हैं, जिसे
विशेष रूप से, हाल के 14 मोमबत्तियों पर एटीआर संकेतक पहले ta.atr के माध्यम से प्राप्त किया जाता है। फिर हाल के 5 मोमबत्तियों पर मूल्य अस्थिरता की गणना की जाती है। वे ग्रिड क्षेत्र को निर्धारित करने के लिए उपयोग किए जाने वाले मुख्य मापदंड हैं। ग्रिड में 4 मूल्य स्तर होते हैं - निचली कीमत + अस्थिरता, निचली कीमत + 0.75 * अस्थिरता, और इसी तरह। एक बार डबल बॉटम शर्त ट्रिगर हो जाने के बाद, इस सूत्र के अनुसार समान आकार के 4 सीमा आदेश रखे जाएंगे। कई मोमबत्तियों के बाद अधूरे आदेश रद्द कर दिए जाएंगे।
इसके अतिरिक्त, रणनीति एक स्टॉप लॉस मूल्य और एक ले लाभ मूल्य भी निर्धारित करती है। स्टॉप लॉस मूल्य डबल बॉटम माइनस एक टिक आकार की सबसे कम कीमत पर सेट किया जाता है, जबकि ले लाभ मूल्य एंट्री मूल्य प्लस एटीआर के 5 गुना पर सेट किया जाता है। जब स्थिति का आकार 0 से अधिक होता है तो ये दो मूल्य वास्तविक समय में अपडेट हो जाएंगे।
इस रणनीति के मुख्य लाभ इस प्रकार हैंः
प्रमुख जोखिमः
कुछ क्षेत्रों में सुधार किया जा सकता हैः
डबल बॉटम रिवर्सल मीन रिवर्सन डीसीए ग्रिड रणनीति मूल्य पैटर्न, संकेतक तकनीकों और ग्रिड ट्रेडिंग को समेकित करती है। इसमें सटीक समय, नियंत्रित लागत आधार और ड्रॉडाउन सुरक्षा है। अभी भी अनुकूलन के लिए जगह है और शोध के लायक है। ठीक से कॉन्फ़िगर किया गया, रेंज-बाउंड बाजारों में अच्छे परिणाम प्राप्त कर सकता है।
/*backtest start: 2024-02-12 00:00:00 end: 2024-02-19 00:00:00 period: 3m 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/ // © cherepanovvsb //@version=5 strategy("Reversal (only long)", overlay=true, margin_long=1, margin_short=1,initial_capital=1000,commission_type = strategy.commission.percent,commission_value =0.1,currency='USD', process_orders_on_close=true) plotshape(low == low[1], style=shape.triangleup, location=location.belowbar, color=color.blue, title="1 Setup") plotshape(low == low[1] and low[1]==low[2], style=shape.triangleup, location=location.belowbar, color=color.red, title="Triple Setup") ATRlenght = input.int(title="ATR length for taking profit", defval=14, group="Strategy Settings") rewardMultiplier= input.int(title="ATR multiplier", defval=5, group="Strategy Settings") Volatility_length=input.int(title='Volatility length',defval=5,group="Strategy Settings") Volatility_multiplier=input.float(title='Volatility multiplier',defval=0.5,step=0.1, group="Strategy Settings") Candles_to_wait=input.int(title='How many candles to wait after placing orders grid?',defval=4,group="Strategy Settings") // Get ATR atr1 = ta.atr(ATRlenght) //Get volatility values (not ATR) float result = 0 for i = 0 to Volatility_length result+=high[i]-low[i] volatility=result*Volatility_multiplier/Volatility_length //Validate entrance points validlow = low [2]== low[1] and not na(atr1) validlong = validlow and strategy.position_size == 0 and low[1]<low // Calculate SL/TP longStopPrice = low[1]-syminfo.mintick longStopDistance = close - longStopPrice longTargetPrice = close + (longStopDistance * rewardMultiplier) strategy.initial_capital = 50000 //Assign all variables var tradeStopPrice = 0.0 var tradeTargetPrice = 0.0 var point1=0.0 var point2=0.0 var point3=0.0 var point4=0.0 var contracts = int(strategy.initial_capital/close)/4 if validlong tradeStopPrice := longStopPrice tradeTargetPrice := longTargetPrice point1:=low[1]+volatility point2:=low[1]+volatility*0.75 point3:=low[1]+volatility*0.5 point4:=low[1]+volatility*0.25 strategy.entry ("Long1", strategy.long,limit=point1,qty=contracts, when=validlong) strategy.entry ("Long2", strategy.long,limit=point2,qty=contracts, when=validlong) strategy.entry ("Long3", strategy.long,limit=point3,qty=contracts, when=validlong) strategy.entry ("Long4", strategy.long,limit=point4,qty=contracts, when=validlong) stopcondition = ta.barssince(validlong) == Candles_to_wait strategy.cancel("Long1",when=stopcondition) strategy.cancel("Long2",when=stopcondition) strategy.cancel("Long3",when=stopcondition) strategy.cancel("Long4",when=stopcondition) strategy.exit(id="Long Exit", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size > 0) plot(strategy.position_size != 0 or validlong ? tradeStopPrice : na, title="Trade Stop Price", color=color.red, style=plot.style_linebr, linewidth=3) plot(strategy.position_size != 0 or validlong ? tradeTargetPrice : na, title="Trade Target Price", color=color.green, style=plot.style_linebr, linewidth=3) plot(strategy.position_size != 0? point1 : na, title="Long1", color=color.green, style=plot.style_linebr, transp=0) plot(strategy.position_size != 0? point2 : na, title="Long2", color=color.green, style=plot.style_linebr, transp=0) plot(strategy.position_size != 0? point3 : na, title="Long3", color=color.green, style=plot.style_linebr, transp=0) plot(strategy.position_size != 0? point4 : na, title="Long4", color=color.green, style=plot.style_linebr, transp=0)