これは,VWAPのRSI指標に基づいた時間枠間のBTCショート戦略である.VWAP曲線を得るために各キャンドルストックのボリューム重量平均価格 (VWAP) を計算し,その後,曲線にRSI指標を適用する.RSI指標がオーバーボートゾーンから下を横切ると,BTCにショートになる.
この戦略は,VWAPとRSIの組み合わせでBTCオーバーバイト/オーバーセール状態を特定する.タイムフレームを介して取引することで,リスクを効果的に制御することができます.戦略の論理は明確で理解しやすく,ライブ取引のためにさらなるテストと最適化に価値があります.
/*backtest start: 2023-12-21 00:00:00 end: 2023-12-28 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Soran Strategy 2 - SHORT SIGNALS", pyramiding=1, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false) // ----------------- Inputs ----------------- // reso = input(title="Resolution", type=input.resolution, defval="") length = input(20, title="RSI Length", type=input.integer) ovrsld = input(30, "RSI Oversold level", type=input.float) ovrbgt = input(85, "RSI Overbought level", type=input.float) lateleave = input(28, "Number of candles", type=input.integer) // lateleave : numbers of bars in overbought/oversold zones where the position is closed. The position is closed when this number is reached or when the zone is left (the first condition). // best parameters BTCUSDTPERP M15 : 20 / 30 / 85 / 28 stratbull = input(title="Enter longs ?", type = input.bool, defval=true) stratbear = input(title="Enter shorts ?", type = input.bool, defval=true) stratyear = input(2020, title = "Strategy Start Year") stratmonth = input(1, title = "Strategy Start Month") stratday = input(1, title = "Strategy Start Day") stratstart = timestamp(stratyear,stratmonth,stratday,0,0) // --------------- Laguerre ----------------- // laguerre = input(title="Use Laguerre on RSI ?", type=input.bool, defval=false) gamma = input(0.06, title="Laguerre Gamma") laguerre_cal(s,g) => l0 = 0.0 l1 = 0.0 l2 = 0.0 l3 = 0.0 l0 := (1 - g)*s+g*nz(l0[1]) l1 := -g*l0+nz(l0[1])+g*nz(l1[1]) l2 := -g*l1+nz(l1[1])+g*nz(l2[1]) l3 := -g*l2+nz(l2[1])+g*nz(l3[1]) (l0 + 2*l1 + 2*l2 + l3)/6 // ---------------- Rsi VWAP ---------------- // rsiV = security(syminfo.tickerid, reso, rsi(vwap(close), length)) rsiVWAP = laguerre ? laguerre_cal(rsiV,gamma) : rsiV // ------------------ Plots ----------------- // prsi = plot(rsiVWAP, color = rsiVWAP>ovrbgt ? color.red : rsiVWAP<ovrsld ? color.green : color.white, title="RSI on VWAP", linewidth=1, style=plot.style_line) hline = plot(ovrbgt, color = color.gray, style=plot.style_line) lline = plot(ovrsld, color = color.gray, style=plot.style_line) fill(prsi,hline, color = rsiVWAP > ovrbgt ? color.red : na, transp = 30) fill(prsi,lline, color = rsiVWAP < ovrsld ? color.green : na, transp = 30) // ---------------- Positions: only shows the Short and close shoret positions --------------- // timebull = stratbull and time > stratstart timebear = stratbear and time > stratstart strategy.entry("Short", false, when = timebear and crossunder(rsiVWAP, ovrbgt), comment="") strategy.close("Short", when = timebear and crossunder(rsiVWAP, ovrsld)[lateleave] or crossover(rsiVWAP, ovrsld), comment="")