DAKELAX-XRPUSDTは,BinanceでXRPUSDTの取引ボット戦略である.ボリンジャーバンドを使用した簡単な逆の戦略であり,2019年5月から8月までのH1タイムフレームでのバックテストおよびライブで良好なパフォーマンスを発揮している.
この戦略は,まず20期間のSMAと上下ボリンジャーバンドを計算する.上部帯はSMA+1.5標準偏差,下部帯はSMA-2.2標準偏差である.その後,帯の収縮速度を計算する.収縮が>1.3である場合,帯は黒で満たされ,収縮が<0.1である場合,黄色で満たされ,他の場合は赤で満たされる.
閉じる価格が下帯を下回ると, 20コインでロングします.閉じる価格が上帯を下回ると,すべてのポジションを閉じる.
この戦略では,7期間のEMAの速いラインと18期間のEMAのスローラインを計算する.スローライン上の速いラインのクロスオーバーは購入信号であり,下のクロスオーバーは販売信号である.
リスクを制御するために動的ポジションサイズまたはストップロスを検討する. 範囲の市場でウィップソーを避けるためにクロスオーバー戦略を最適化する. より大きな動きを特定するためにより高いタイムフレームトレンド指標を追加する.
帯域幅に基づいて購入金額を調整する. 契約された場合,より少なく,拡張された場合,より多く.
収縮が観測されても信号がまだ発信されていない場合,位置を蓄積することを検討します.
全体の方向性を決定するために,より長いタイムフレームのトレンドインジケーターを追加し,不透明な場合は戦略を一時停止します.
リスクを制御するためにストップロスを組み込む. 最近の低水準の帯に設定することができます.
EMA 期間のようなクロスオーバーパラメータを最適化して 閉じ込められないようにする
DAKELAX-XRPUSDTは,EMAクロスオーバーとボリンジャーバンド収縮を使用するトレードボット戦略である.直感的で,バックテスト結果は良好だが,いくつかのリスクが含まれている.これらのリスクはポジションサイズ化,ストップ戦略,ストップ損失を追加し,クロスオーバーロジックを最適化することによって軽減できる.全体的にはボリンジャーバンド戦略の明確な例を提供しているが,安定したライブ利益のためにペア特有の最適化が必要である.
/*backtest start: 2022-10-26 00:00:00 end: 2023-11-01 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //study(title="Tradebotler DAKELAX Binance:XRPUSDT Study-strategy", overlay=true) strategy(title="Tradebotler DAKELAX Binance:XRPUSDT Strategy", overlay=true) buyAmount = input(20, minval=1) // SMA20 len2 = input(20, minval=1) src2 = input(close) out2 = sma(src2, len2) // BB contraction value (medium tight) contraction_value = 1.3 // BB contraction value (very tight) contraction_value2 = 0.1 // 2xSTDEV BB calculation dev = stdev(src2, len2) upper_BB = out2 + 1.5*dev lower_BB = out2 - 2.2*dev x1 = plot(upper_BB, color=blue, linewidth = 2) x2 = plot(lower_BB, color=blue, linewidth = 2) contraction = (upper_BB-lower_BB)/out2 //fills the BBands according to the contraction value (threshold) // Calculate values fastMA = ema(close, 7) slowMA = ema(close, 18) // Determine alert setups crossUp = crossover(fastMA, slowMA) crossDown = crossunder(fastMA, slowMA) buySignal = (crossUp or crossUp[1]) and (low > slowMA) shortSignal = (crossDown or crossDown[1]) and (high < slowMA) // Highlight alerts on the chart bgColour = (buySignal and barstate.isrealtime) ? green : (shortSignal and barstate.isrealtime) ? red : na signalBuy = (buySignal ) ? true : false signalSell = (shortSignal ) ? true : false test = true test := not test[1] closesBelowLowerBB = close < lower_BB closesAboveUpperBB = close > upper_BB tmptext = "blah" // Plot values plot(series=fastMA, color=teal) plot(series=slowMA, color=orange) plot(out2, color=black, linewidth = 1) fill(x1, x2, color = contraction > contraction_value ? black : contraction < contraction_value2 ? yellow: red) isInRed = contraction < contraction_value and contraction >= contraction_value2 isInYellow = contraction < contraction_value and contraction < contraction_value2 if ( closesBelowLowerBB ) strategy.order('Buy', strategy.long, buyAmount) if ( closesAboveUpperBB ) strategy.close_all()