MA MACD BB マルチインジケーター・トレーディング・ストラテジー・バックテスト・ツール (MACD BB Multi-Indicator Trading Strategy Backtesting Tool) は,強力な定量的なトレーディング・戦略開発およびバックテスト・プラットフォームである.このツールは,一般的に使用される3つの技術指標である:ムービング・平均 (MA),ムービング・平均コンバージェンス・ディバージェンツ (MACD),ボリンジャー・バンド (BB) をサポートしている.ユーザーは,そのうちの1つを主なトレーディング・シグナル・インジケーターとして柔軟に選択することができる.同時に,このツールは,ロング・ショート・トレードの両方をサポートしている.ユーザーは,市場の動向に応じてロング・ショート・トレードを柔軟に選択することができる.リスク管理の観点から,このツールは,ユーザーがよりよいコントロールのために,各取引の資本比率を柔軟に設定できるようにしている.また,詳細なリスク指標分析と信号生成機能も提供している.
この戦略の基本原則は,市場の動向と取引信号を特定するために3つの共通の技術指標 (MA,MACD,BB) を使用することです.具体的には:
実際の取引では,この戦略は,ユーザが選択した取引方向 (ロングまたはショート) と資本管理の設定に基づいて,それぞれの取引のポジションサイズを自動的に計算し,シグナルに従って対応する開閉操作を実行します.
上記リスクを軽減するために,ユーザーは戦略パラメータを合理的に設定し,戦略を定期的に評価し調整し,市場の動向を注意深く監視し,必要に応じて手動で介入する必要があります.また,ストップロースとポジション制限の設定などの厳格なリスク管理措置も不可欠です.
上記の最適化方向は,戦略のパフォーマンスを継続的に改善し,完善するために,より高度で柔軟な方法の導入によって,戦略の適応性,強度,収益性,リスク管理を改善することに主に焦点を当てています.
MA MACD BB マルチインジケーター・トレーディング・ストラテジー・バックテスト・ツール (MACD BB Multi-Indicator Trading Strategy Backtesting Tool) は,機能が豊富で柔軟で実用的な定量化トレーディングツールです. 共通の3つの技術指標を通じて取引信号をキャプチャし,長期・短期取引と柔軟なリスク管理の両方をサポートし,異なる市場や取引スタイルに適応します. ユーザーはこのツールを使用して,歴史的なデータをバックテストし最適化し,ライブトレーディングにも適用できます. どの戦略も市場リスクやモデルリスクに直面していますが,合理的なパラメータ設定,厳格なリスク制御,継続的な最適化および改善を通じて,この戦略は定量的なトレーダーにとって強力なアシスタントとなり,長期にわたる安定したリターンを作成することが期待されています.
/*backtest start: 2023-05-28 00:00:00 end: 2024-06-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Future_Billi0naire_ //@version=5 strategy("MA MACD BB Backtester", overlay=true) //@variable Input for Strategy which_ta = input.string("MA", title="Select Indicator", options=["MACD", "BB", "MA"]) which_camp = input.string("Long", title="Select Long / Short", options=["Short", "Long"]) //@variable Input parameters for Risk Management positionSize = input.float(100.0, title="Each position's capital allocation %", minval=0.0, maxval = 100.0) / 100 //@variable Input parameters for MACD fast_length = input.int(12, title="MACD Fast Length") slow_length = input.int(26, title="MACD Slow Length") signal_smoothing = input.int(9, title="MACD Signal Smoothing") macd_source = input.source(close, title="MACD Source") //@variable Input parameters for Moving Average ma_length = input.int(50, title="Moving Average Length") //@variable Input parameters for Bollinger Bands bb_length = input.int(20, title="Bollinger Bands Length") bb_mult = input.float(2.0, title="Bollinger Bands Multiplier") // Choosing the Strategy int x = na if which_ta == "MA" x := 1 else if which_ta == "MACD" x := 2 else if which_ta == "BB" x := 3 // Calculate MACD and Signal line [macdLine, signalLine, _] = ta.macd(macd_source, fast_length, slow_length, signal_smoothing) // Calculate Moving Average ma = ta.sma(close, ma_length) // Calculate Bollinger Bands basis = ta.sma(close, bb_length) dev = bb_mult * ta.stdev(close, bb_length) upper = basis + dev lower = basis - dev // Plotting MACD and Signal lines plot(x == 2 ? macdLine : na, color=color.blue, title="MACD Line") plot(x == 2 ? signalLine : na, color=color.red, title="Signal Line") // Plotting histogram histogram = macdLine - signalLine plot(x == 2 ? histogram : na, color=color.gray, style=plot.style_histogram, title="MACD Histogram") // Plotting Moving Average plot(x == 1 ? ma : na, color=color.orange, title="Moving Average") // Plotting Bollinger Bands plot(x == 3 ? upper : na, color=color.green, title="Upper Bollinger Band") plot(x == 3 ? lower : na, color=color.red, title="Lower Bollinger Band") plot(x == 3 ? basis : na, color=color.blue, title="Basis Bollinger Band") // Generate buy signals buySignalMACD = ta.crossover(macdLine, signalLine) buySignalMA = ta.crossover(close, ma) buySignalBB = close < lower sellSignalBBExit = close > basis // Generate sell signals sellSignalMACD = ta.crossunder(macdLine, signalLine) sellSignalMA = ta.crossunder(close, ma) sellSignalBB = close > upper buySignalBBExit = close < basis // Plot buy signals on the chart plotshape(series=buySignalMACD and x == 2 and which_camp=="Long" and strategy.opentrades == 0 ? buySignalMACD : na, title="Buy Signal MACD", location=location.belowbar, color=color.lime, style=shape.labelup, text="BUY MACD") plotshape(series=buySignalMA and x == 1 and which_camp=="Long" and strategy.opentrades == 0 ? buySignalMA : na, title="Buy Signal MA", location=location.belowbar, color=color.lime, style=shape.labelup, text="BUY MA") plotshape(series=buySignalBB and x == 3 and which_camp=="Long" and strategy.opentrades == 0 ? buySignalBB : na, title="Buy Signal BB", location=location.belowbar, color=color.lime, style=shape.labelup, text="BUY BB") // Plot sell signals on the chart plotshape(series=sellSignalMACD and x == 2 and which_camp=="Short" and strategy.opentrades == 0 ? sellSignalMACD : na, title="Sell Signal MACD", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL MACD") plotshape(series=sellSignalMA and x == 1 and which_camp=="Short" and strategy.opentrades == 0 ? sellSignalMA : na, title="Sell Signal MA", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL MA") plotshape(series=sellSignalBB and x == 3 and which_camp=="Short" and strategy.opentrades == 0 ? sellSignalBB : na, title="Sell Signal BB", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL BB") // Calculate stop loss and take profit levels accountSize = strategy.equity positionSizeAmount = accountSize * positionSize // Calculate order size based on stop loss amount orderSize = math.floor(positionSizeAmount / close) // Enter long positions based on buy signals if strategy.opentrades == 0 if (buySignalMACD) and x == 2 and which_camp == "Long" strategy.entry("Buy MACD", strategy.long, qty=orderSize) if (buySignalMA) and x == 1 and which_camp == "Long" strategy.entry("Buy MA", strategy.long, qty=orderSize) if (buySignalBB) and x == 3 and which_camp == "Long" strategy.entry("Buy BB", strategy.long, qty=orderSize) // Enter short positions based on sell signals if strategy.opentrades == 0 if (sellSignalMACD) and x == 2 and which_camp == "Short" strategy.entry("Sell MACD", strategy.short, qty=orderSize) if (sellSignalMA) and x == 1 and which_camp == "Short" strategy.entry("Sell MA", strategy.short, qty=orderSize) if (sellSignalBB) and x == 3 and which_camp == "Short" strategy.entry("Sell BB", strategy.short, qty=orderSize) // Close positions based on exit signals if (sellSignalMACD) and which_camp == "Long" strategy.close("Buy MACD") if (sellSignalMA) and which_camp == "Long" strategy.close("Buy MA") if (sellSignalBBExit) and which_camp == "Long" strategy.close("Buy BB") if (buySignalMACD) and which_camp == "Short" strategy.close("Sell MACD") if (buySignalMA) and which_camp == "Short" strategy.close("Sell MA") if (buySignalBBExit) and which_camp == "Short" strategy.close("Sell BB")