Strategi DCA Grid Reversal Mean Reversal Double Bottom terutama menggunakan harga pembalikan purata dan strategi DCA untuk melaksanakan pembinaan kedudukan secara beransur-ansur. Ia menentukan peluang pembalikan berdasarkan corak pembalikan bawah berganda. Setelah corak pembalikan dicetuskan, ia menggunakan beberapa pesanan had pada harga yang berbeza digabungkan dengan DCA untuk menubuhkan kedudukan grid beransur-ansur.
Strategi ini pertama-tama memeriksa sama ada terdapat dua harga penutupan berturut-turut yang sama dengan bahagian bawah pada carta lilin, yang dipanggil
Secara khusus, penunjuk ATR ke atas 14 candlestick baru-baru ini pertama kali diperoleh melalui ta.atr. Kemudian turun naik harga ke atas 5 candlestick baru-baru ini dikira. Mereka adalah parameter utama yang digunakan untuk menentukan zon grid. Grid ini mengandungi 4 tahap harga - harga bawah + turun naik, harga bawah + 0.75 * turun naik, dan sebagainya. Setelah keadaan bawah berganda diaktifkan, 4 pesanan had dengan saiz yang sama akan diletakkan mengikut formula ini. Perintah yang belum diisi akan dibatalkan selepas beberapa candlestick.
Di samping itu, strategi ini juga menetapkan harga stop loss dan harga mengambil keuntungan. Harga stop loss ditetapkan pada harga terendah bahagian bawah berganda dikurangkan satu saiz tik, sementara harga mengambil keuntungan ditetapkan pada harga masuk ditambah 5 kali ATR. Kedua-dua harga ini akan dikemas kini dalam masa nyata apabila saiz kedudukan lebih besar daripada 0.
Kelebihan utama strategi ini ialah:
Risiko utama:
Beberapa bidang yang boleh diperbaiki:
Strategi Grid Double Bottom Reversal Mean Reversion DCA menyatukan corak harga, teknik penunjuk dan perdagangan grid. Ia mempunyai masa yang tepat, asas kos yang boleh dikawal dan perlindungan penarikan. Masih ada ruang untuk pengoptimuman dan bernilai penyelidikan.
/*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)