複数の指標に基づくビットコインの毎日の取引戦略


作成日: 2023-10-30 10:37:58 最終変更日: 2023-10-30 10:37:58
コピー: 0 クリック数: 728
1
フォロー
1617
フォロワー

複数の指標に基づくビットコインの毎日の取引戦略

概要

この戦略は,複数の指標の組み合わせに基づいて,ビットコインの日線時間帯で取引機会を探します. 主にMACD,RSI,Stoch RSIなどの指標を使用して,均線の方向と組み合わせて,現在のトレンドの方向を判断し,買入と売却の信号を発します.

戦略原則

この戦略は以下の指標を中心に展開しています.

  1. MACD (快线-慢线)その信号線。MACD上の信号線を穿越すると買信で,下の0穿越すると売信である。

  2. RSIは相対的に強い弱さを示す指標である. RSIが設定値を越えたときに買い信号である.

  3. ストッチRSI。ストッチRSI指標は,RSIの超買い超売り状況を反映している。ストッチRSIは,設定値を下回ると買入シグナル,設定値上回ると売出シグナルである。

  4. 平均線方向. 閉盘価格の下の平均線を突破したときに売り信号である.

この指数に基づいて,この戦略の取引シグナルは以下の通りです.

買取信号“その時は(Stoch RSI < 设定阈值) 且 (MACD上穿阈值 或 RSI上穿阈值)だった

信号を売り出した“その時は(MACD下穿0) 且 (收盘价下穿均线 或 Stoch RSI > 设定阈值)だった

複数の指標を組み合わせることで,現在のトレンドの方向を比較的に正確に判断し,トレンドの転換点で取引信号を発信することができます.

戦略的優位性

  1. 複数の指標を組み合わせることで,判断の正確性を高め,単一の指標によってもたらされる誤信号を回避することができる.

  2. MACD指標は,現在のトレンドの方向と強さを判断できます。RSI指標は,超買い超売り状況を反映しています。Stoch RSIは,RSIの超買い超売り状況を判断しています。均線は,現在のトレンドの方向を判断しています。これらの指標は,相互に検証され,効果を高めています。

  3. 買入と売却のシグナルには複数の指標の組み合わせが設定されており,偽のシグナルをフィルタリングして,不必要な取引を回避できます.

  4. この戦略の反省は2017年1月1日から開始し,2017年末のビットコインの大幅な上昇の状況を含んでいます.この戦略の状況でのパフォーマンスを確認できます.

  5. 戦略には,単一取引の損失を制御するストップ・ロス設定が含まれています.

戦略リスク

  1. 複数の指標の組み合わせは,正確性を向上させるが,指標の間の不一致も起こりうるため,誤判のリスクを伴う.

  2. 戦略を最適化するストップレスのレベルは,異なる状況に応じて調整する必要があるかもしれない。ストップレスの幅が広い場合,単一の損失が増加し,ストップレスの幅が狭い場合は,ストップレスの引き出がされる。

  3. 日線レベルの戦略で,より短い時間枠で細部操作ができない.突発的な事件が短期の大幅な波動を引き起こした場合,対応ができない.

  4. 戦略は,部分的な歴史を遡るのみで,過適合のリスクがある可能性があります.戦略の効果を検証するには,より長い時間帯とより多くの市場でテストする必要があります.

最適化の方向

  1. より多くの指標の組み合わせをテストし,よりよい多指標の組み合わせ戦略を探します.

  2. 指数パラメータを最適化して,より適切なパラメータ数値を見つけます.

  3. 異なる止損レベルをテストし,止損と止止の比率の最適な組み合わせを探します.

  4. 長い歴史を振り返って, 超適合を避ける.

  5. この戦略は,より高い頻度で,より頻繁な取引を試みます.

要約する

この戦略は,MACD,RSI,Stoch RSIなどの複数の指標を組み合わせて,現在のビットコイン日線レベルのトレンド方向を判断し,トレンド転換点で取引シグナルを発信する. この戦略は,取引リスクを制御するためにストップを設定する. この戦略は,優れた結果を出している. しかし,適合リスクを避けるために,より長い時間とより多くの市場で検証する必要があります.

ストラテジーソースコード
/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// Original code is from CredibleHulk and modified by bennef
strategy("BTC Daily Strategy BF", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)

/////////////// Time Frame ///////////////
testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

/////////////// Input Params /////////////// 
rsi_threshold = input(30)
rsi_length = input(4)
srsi_length = input(8)
srsi_smooth = input(4)
srsi_sell_threshold = input(57)
length = input(14)
dma_signal_threshold = input(-1)
fastLength = input(11)
slowlength = input(18)
MACDLength = input(6)
MACD_signal_threshold = input(-2)
short_loss_tol = input(5)
long_loss_tol = input(5)

stop_level_long = strategy.position_avg_price * (1 - long_loss_tol / 100.0)
stop_level_short = strategy.position_avg_price * (1 + short_loss_tol / 100.0)
    
///////////////  Signal generation ///////////////
// MACD 
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

// RSI and Stochastic RSI 
rs = rsi(close, rsi_length)
k = sma(stoch(rs, rs, rs, srsi_length), srsi_smooth)

// SMA 
norm = sma(ohlc4, length)
threshold = close - norm   

/////////////// Strategy ///////////////
long = ((crossover(delta, MACD_signal_threshold) or crossover(rs, rsi_threshold)) and k < srsi_sell_threshold)
short = (crossunder(delta, 0) or (crossunder(threshold, dma_signal_threshold) and k > srsi_sell_threshold))

if testPeriod()
    strategy.entry("L", strategy.long, when = long)
    strategy.entry("S", strategy.short, when = short)
    strategy.exit("stop loss L", from_entry = "L", stop = stop_level_long)
    strategy.exit("stop loss S", from_entry = "S", stop = stop_level_short)

/////////////// Plotting ///////////////
// MACD
plot(delta, color = delta > MACD_signal_threshold ? color.lime : delta < 0 ? color.red : color.yellow)
MACD_signal_threshold_line = hline(MACD_signal_threshold, color = color.yellow, title = "MACD Signal Threshold")

// RSI
plot(rs, color = rs > rsi_threshold ? color.lime : color.fuchsia)
rsi_threshold_line = hline(rsi_threshold, color = color.fuchsia, title = "RSI Threshold")

// Stochastic RSI 
plot(k, color = k > srsi_sell_threshold ? color.lime : color.red)
srsi_sell_threshold_line = hline(srsi_sell_threshold, color = color.white, title = "Stoch RSI Threshold")

// SMA
plot(threshold / 100, color = threshold < dma_signal_threshold ? color.red : color.blue)
dma_signal_threshold_line = hline (dma_signal_threshold, color = color.blue, title = "DMA Signal Threshold")

bgcolor(long ? color.lime : short ? color.red : na, transp=50)