Double Bottom Reversal Mean Reversion DCA Grid strategi terutama menerapkan harga reversi rata-rata dan strategi DCA untuk menerapkan pembangunan posisi bertahap.
Strategi ini pertama-tama memeriksa apakah ada dua harga penutupan berturut-turut yang sama dengan bagian bawah pada grafik lilin, yang disebut
Secara khusus, indikator ATR selama 14 candlestick terakhir pertama kali diperoleh melalui ta.atr. Kemudian volatilitas harga selama 5 candlestick terakhir dihitung. Mereka adalah parameter utama yang digunakan untuk menentukan zona grid. Grid berisi 4 tingkat harga - harga bawah + volatilitas, harga bawah + 0,75 * volatilitas, dan sebagainya. Setelah kondisi double bottom diaktifkan, 4 pesanan batas dengan ukuran yang sama akan ditempatkan sesuai dengan rumus ini. Pesanan yang belum terisi akan dibatalkan setelah beberapa candlestick.
Selain itu, strategi ini juga menetapkan harga stop loss dan harga take profit. Harga stop loss ditetapkan pada harga terendah dari double bottom dikurangi satu ukuran tick, sementara harga take profit ditetapkan pada harga masuk ditambah 5 kali ATR. Kedua harga ini akan diperbarui secara real time ketika ukuran posisi lebih besar dari 0.
Keuntungan utama dari strategi ini adalah:
Risiko utama:
Beberapa bidang yang dapat ditingkatkan:
Double Bottom Reversal Mean Reversion DCA Grid Strategy mengkonsolidasikan pola harga, teknik indikator dan perdagangan grid. Ini memiliki waktu yang akurat, dasar biaya yang dapat dikontrol dan perlindungan penarikan. Masih memiliki ruang untuk optimasi dan layak untuk diteliti. Dikonfigurasi dengan benar, dapat mencapai hasil yang baik di pasar yang terikat kisaran.
/*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)