Ethereum トレーディングのためのスーパートレンド戦略

作者: リン・ハーンチャオチャン開催日:2024-01-08 14:35:37
タグ:

img

概要

この戦略はスーパートレンド指標に基づい,ATRを使用して,Ethereumの強いトレンドから利益を得るためにストップ・ロスを動的に設定します.Coinbase取引所でETH/USD取引ペアで実行できます.

戦略の論理

この戦略は,トレンド方向を決定するために,典型的なトレンドフォローインジケーター - スーパートレンドインジケーターを使用します. スーパートレンドインジケーターは2つのラインで構成されています.

  1. 上昇傾向のストップ・ロスのラインで,上昇傾向のロングポジションを保持する.
  2. ダウントレンドのストップ・ロスの線は,ダウントレンドのショートポジションを保持するものです.

価格が上昇傾向から下落傾向に変わると,ショートポジションを開きます.価格が下落傾向から上落傾向に変わると,ロングポジションを開きます.

さらに,戦略は,ストップ・ロスの線を動的に調整するためにATRインジケーターを使用する.特に,アップトレンドストップ・ロスのラインポジションは,最高高値と最低低値マイナスATRを係数で掛け合わせた平均値である.ダウントレンドストップ・ロスのラインポジションは,最高高値と最低低値プラスATRを係数で掛け合わせた平均値である.これは,市場の変動に基づいてストップ・ロスを調整することを可能にする.

価格がストップ・ロスの線を超えると ストップ・ロスをします

利点

この傾向は比較的成熟した戦略であり,以下の利点がある.

  1. "スーパートレンド"指標を使用して,トレンドの方向性を確実に決定します.
  2. リスクを効果的に制御するために,アダプティブATRストップ損失を適用する.
  3. シンプルで明快な戦略論理,理解し変更が簡単
  4. 高波動の仮想通貨市場で 収益性がある

リスク

この戦略にはいくつかのリスクもあります:

  1. 超トレンド指標の判断が誤っている可能性は,不必要な損失を引き起こす可能性があります.
  2. ATRストップロスは,価格逆転によって停止され,過度に攻撃的になる可能性があります.
  3. 仮想通貨市場の高い変動は,ストップロスの発生の可能性を高めます.
  4. 取引料金の上昇は 最終的な収益性に影響を及ぼします

上記のリスクを軽減するために,ATR係数を調整したり,他の指標のフィルターを追加したりできます.ストップ損失バッファも考慮することができます.

改善 の 方向

さらに改善の余地があります.

  1. 信号の正確性を向上させるため,より多くの指標を導入する.
  2. ATR 長さと係数のための最適値を研究する.
  3. リスク・リターン比に基づく動的ポジションサイズ化を実施する.
  4. 暗号取引のペアを テストする戦略の有効性

結論

総合的に,これは成熟した信頼性の高いトレンドフォロー戦略である.トレンド方向を決定するためにスーパートレンド指標を使用し,利益を得ながらリスクを制御するためにATRでストップロスを調整する.この戦略はイーサリアムなどの高変動性暗号通貨にうまく機能する.さらなる最適化により,安定したパフォーマンスのためにより多くの市場でその適用を拡大することができます.


/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4 
strategy("SuperTrend Strategy", 
     overlay=true, 
     initial_capital=2e3, 
     process_orders_on_close=true, 
     commission_type=strategy.commission.percent, 
     commission_value=0.1 
     ) 
  
length = input(title="ATR Period", type=input.integer, defval=21) 
mult = input(title="ATR Multiplier", type=input.float, step=.25, defval=6.2) 
wicks = input(title="Take Wicks into Account ?", type=input.bool, defval=false) 
  
useDate = input(title="Start from Specific Date ?", defval=false) 
yearStart = input(title="Start Year", defval=2019) 
monthStart = input(title="Start Month", minval=1, maxval=12, defval=1) 
dayStart = input(title="Start Day", minval=1, maxval=31, defval=1) 
  
startTime = timestamp(yearStart, monthStart, dayStart, 0, 0) 
startFrom = useDate ? time(timeframe.period) >= startTime : true 
  
atr = mult * ta.atr(length) 
  
longStop = hl2 - atr 
longStopPrev = nz(longStop[1], longStop) 
longStop := (wicks ? low[1] : close[1]) > longStopPrev ? math.max(longStop, longStopPrev) : longStop 
  
shortStop = hl2 + atr 
shortStopPrev = nz(shortStop[1], shortStop) 
shortStop := (wicks ? high[1] : close[1]) < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop 
  
dir = 1 
dir := nz(dir[1], dir) 
dir := dir == -1 and (wicks ? high : close) > shortStopPrev ? 1 : dir == 1 and (wicks ? low : close) < longStopPrev ? -1 : dir 
  
longColor = color.green 
shortColor = color.red 
  
plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=2, color=longColor) 
plotshape(dir == 1 and dir[1] == -1 ? longStop : na, title="Long Start", location=location.absolute, style=shape.circle, size=size.tiny, color=longColor, transp=0) 
  
plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor) 
plotshape(dir == -1 and dir[1] == 1 ? shortStop : na, title="Short Start", location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor, transp=0) 
  
longCondition = dir[1] == -1 and dir == 1 
if longCondition and startFrom 
    strategy.entry("Long", strategy.long, stop=longStop) 
else 
    strategy.cancel("Long") 
  
shortCondition = dir[1] == 1 and dir == -1 
if shortCondition and startFrom 
    strategy.entry("Short", strategy.short, stop=shortStop) 
else 
    strategy.cancel("Short")
    

もっと