EMA移動平均とMACD指標に基づくBTC取引戦略


作成日: 2024-01-25 12:54:16 最終変更日: 2024-01-25 12:54:16
コピー: 0 クリック数: 593
1
フォロー
1617
フォロワー

EMA移動平均とMACD指標に基づくBTC取引戦略

概要

この戦略は,EMA平均線差値とMACD指数に基づく複合戦略で,BTCのショートライン取引に使用されます.これはEMA平均線とMACDの信号を組み合わせて,特定の条件下で買入と売却の信号を生成します.

戦略原則

差値が負で,値より小さい場合,MACDが空頭交差したとき,買入シグナルが生成されます.差値が正で,値より大きい場合,MACDが多頭交差したとき,売り出します.

EMA平均差値とMACD指標を使用した信号を組み合わせることで,偽信号をフィルターして信号の信頼性を向上させることができる.

優位分析

  1. 複合指標を用いて,より信頼性の高い信号を発信しています.
  2. ショートサイクルパラメータで設定され,ショートライン取引に適しています.
  3. 危険をコントロールする Stop Loss と Stop Stop 設定

リスク分析

  1. 市場が急激に波動すると,ストップは突破される可能性があります.
  2. 異なる市場環境に対応するためにパラメータを最適化する必要があります.
  3. 異なる通貨と異なる取引所の効果をテストする

最適化の方向

  1. EMAとMACDのパラメータを最適化して,BTCの波動的な環境に適合させる
  2. ポジション開設と減額戦略の拡大,資金利用の効率化
  3. 移動停止,振動停止などの止損方法を追加してリスクを低減する
  4. 異なる取引所や通貨の効果をテストする

要約する

この戦略は,均線とMACDの2つの指標の優位性を統合し,複合信号を使用し,偽信号を効果的にフィルターすることができる.パラメータの最適化とポジション開設戦略によって,安定した利益を得ることができる.しかし,ストップロースが突破されるリスクにも警戒する必要があり,さらなるテストと改善が必要である.

ストラテジーソースコード
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("EMA50Diff & MACD Strategy", overlay=false)
EMA = input(18, step=1)
MACDfast = input(12)
MACDslow = input(26)
EMADiffThreshold = input(8)
MACDThreshold = input(80)
TargetValidityThreshold = input(65, step=5)
Target = input(120, step=5)
StopLoss = input(650, step=5) 
ema = ema(close, EMA)
hl = plot(0, color=white, linewidth=1)
diff = close - ema
clr = color(blue, transp=100)
if diff>0
    clr := lime
else 
    if diff<0
        clr := red

fastMA = ema(close, MACDfast)
slowMA = ema(close, MACDslow)
macd = (fastMA - slowMA)*3
signal = sma(macd, 9)
plot(macd, color=aqua, linewidth=2)
plot(signal, color=purple, linewidth=2)

macdlong = macd<-MACDThreshold and signal<-MACDThreshold and crossover(macd, signal)
macdshort = macd>MACDThreshold and signal>MACDThreshold and crossunder(macd, signal)
position = 0.0
position := nz(strategy.position_size, 0.0)
long = (position < 0 and close < strategy.position_avg_price - TargetValidityThreshold and macdlong) or 
     (position == 0.0 and diff < -EMADiffThreshold and diff > diff[1] and diff[1] < diff[2] and macdlong)

short = (position > 0 and close > strategy.position_avg_price + TargetValidityThreshold and macdshort) or 
      (position == 0.0 and diff > EMADiffThreshold and diff < diff[1] and diff[1] > diff[2] and macdshort)
amount = (strategy.equity / close) //- ((strategy.equity / close / 10)%10)
bgclr = color(blue, transp=100) //#0c0c0c
if long
    strategy.entry("long", strategy.long, amount)
    bgclr := green
if short
    strategy.entry("short", strategy.short, amount)
    bgclr := maroon
bgcolor(bgclr, transp=20)
strategy.close("long", when=close>strategy.position_avg_price + Target)
strategy.close("short", when=close<strategy.position_avg_price - Target)
strategy.exit("STOPLOSS", "long", stop=strategy.position_avg_price - StopLoss)
strategy.exit("STOPLOSS", "short", stop=strategy.position_avg_price + StopLoss)
//plotshape(long, style=shape.labelup, location=location.bottom, color=green)
//plotshape(short, style=shape.labeldown, location=location.top, color=red)
pl = plot(diff, style=histogram, color=clr)
fill(hl, pl, color=clr)