
डबल बॉटम रिवर्स एवरेज डीसीए ग्रिड रणनीति मुख्य रूप से औसत मूल्य रिवर्स और डीसीए रणनीति को लागू करने के लिए ग्रिड क्रमिक रूप से निर्माण करती है। यह दोहरे बॉटम रिवर्स पैटर्न के आधार पर रिवर्स अवसरों का न्याय करता है। एक बार रिवर्स पैटर्न ट्रिगर होने के बाद, कई अलग-अलग कीमतों के आदेशों का उपयोग करें, डीसीए के साथ मिलकर क्रमिक ग्रिड स्थिति का निर्माण करें।
यह रणनीति पहले यह निर्धारित करती है कि क्या K लाइन में दो समान समापन मूल्य के साथ लगातार नीचे की रेखा दिखाई देती है, जिसे डबल बॉटम कहा जाता है। यदि दोहरे नीचे की रेखा का पता लगाया जाता है, तो यह माना जाता है कि कीमतों में उलटफेर की संभावना है। इस समय, रणनीति नीचे के पास कई लिमिट प्राइस ऑर्डर स्थापित करती है, जो एटीआर और अस्थिरता के आधार पर गणना की जाती है, एक ग्रिड क्षेत्र बनाने के लिए। यह डीसीए के प्रभाव को लागू करता है, जिससे व्यापारियों को अलग-अलग मूल्य बिंदुओं पर धीरे-धीरे स्थिति बनाने की अनुमति मिलती है जो पीछे की ओर जाते हैं।
विशेष रूप से, सबसे पहले ta.atr के माध्यम से नवीनतम 14 K लाइनों के लिए एटीआर सूचकांक की गणना करें, और फिर नवीनतम 5 K लाइनों के साथ मूल्य उतार-चढ़ाव की गणना करें, जो कि ग्रिड स्पेस को निर्धारित करने के लिए मुख्य पैरामीटर है। ग्रिड स्पेस को 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)