二重移動平均トレーリングストップロス戦略


作成日: 2024-02-05 13:45:51 最終変更日: 2024-02-05 13:45:51
コピー: 0 クリック数: 565
1
フォロー
1617
フォロワー

二重移動平均トレーリングストップロス戦略

概要

この戦略は,2つの異なるパラメータの移動平均を計算することによって,快線が慢線を横切るときに買取シグナルを生成する.同時に,平均実際の波動範囲を計算してストップ価格を追跡し,価格がストップ価格を下回るときに売りシグナルを生成する.この戦略は,市場動向を効果的に追跡し,利益の後にタイムリーにストップする.

戦略原則

  1. 急速移動平均 ((EMA):パラメータは,12日指数移動平均で,価格変化に迅速に対応できる.
  2. スローモーション・ムービング・平均 ((SMA):パラメータは45日間のシンプル・ムービング・平均で,長期トレンドを表している.
  3. 速動平均線を遅動平均線に突破すると,買入シグナルが生成されます.
  4. 15日間の平均実際の波動幅 ((ATR) を基準として計算する.
  5. ATR数値に基づいてストップ・ロスの幅を追跡する ((例えば6倍ATR),そしてリアルタイムでストップ・ロスの価格を更新する。
  6. 価格がストップ・ロスの値より低いとき,セール・シグナルが生成されます.

この戦略はトレンド追跡とストップ管理を融合し,中長線方向を追跡することも,ストップを介して単一の損失を制御することもできます.

優位分析

  1. 移動平均の組み合わせは,トレンドを効果的に識別し,信号の信頼性を高めます.
  2. ダイナミック・トラッキング・ストローは,資金力の打撃を避けるため,タイムリーにストローをすることができる.
  3. ATRと組み合わせたストップは,ストップ価格を合理的にし,過度に敏感な状態を防ぐ.
  4. 戦略は明確でわかりやすく,パラメータは柔軟に調整できます.

リスク分析

  1. 移動平均は遅滞しており,ショートラインの機会を逃しているかもしれない.
  2. 利回りが悪くなるため ストップ・ローズを過度に緩和する.
  3. 取引頻度や手数料の負担が増加する.
  4. 株式変動率の変化はATRパラメータの安定性に影響を与える可能性がある.

移動平均のパラメータを適切に最適化したり,ATR倍数を調整したりして,ストップ・ローズを均衡させることができる.また,他の指標をフィルター条件として組み合わせて,入場時間を改善することもできる.

最適化の方向

  1. より多くのパラメータの組み合わせをテストし,最適な移動平均を選択する.
  2. 異なる株の特徴に応じてATRの止損の倍数パラメータを調整する.
  3. フィルタリング条件を追加し,不必要な取引を回避する.
  4. 複数の歴史データテストを積み重ね,パラメータの安定性を検証する.

要約する

この戦略は,移動平均のトレンド追跡とATRの動的ストップをうまく融合させ,パラメータを最適化することで,異なる株式特性に適応できます.この戦略は,明確な買入制限とストップ制限を形成し,取引ロジックは簡単に明確になります.全体的に,この双移動平均のストップトラッキング戦略は,安定し,シンプルで,最適化されやすく,株式取引の基本戦略に適しています.

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

//@version=2
//created by XPloRR 24-02-2018

strategy("XPloRR MA-Buy ATR-MA-Trailing-Stop Strategy",overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity,default_qty_value=100)

testStartYear = input(2005, "Start Year")
testStartMonth = input(1, "Start Month")
testStartDay = input(1, "Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

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

testPeriodBackground = input(title="Background", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

emaPeriod = input(12, "Exponential MA")
smaPeriod = input(45, "Simple MA")
stopPeriod = input(12, "Stop EMA")
delta = input(6, "Trailing Stop #ATR")

testPeriod() => true

emaval=ema(close,emaPeriod)
smaval=sma(close,smaPeriod)
stopval=ema(close,stopPeriod)
atr=sma((high-low),15)

plot(emaval, color=blue,linewidth=1)
plot(smaval, color=orange,linewidth=1)
plot(stopval, color=lime,linewidth=1)

long=crossover(emaval,smaval) 
short=crossunder(emaval,smaval)

//buy-sell signal
stop=0
inlong=0
if testPeriod()
    if (long and (not inlong[1]))
        strategy.entry("buy",strategy.long)
        inlong:=1
        stop:=emaval-delta*atr
    else
        stop:=iff((nz(emaval)>(nz(stop[1])+delta*atr))and(inlong[1]),emaval-delta*atr,nz(stop[1]))
        inlong:=nz(inlong[1])
        if ((stopval<stop) and (inlong[1]))
            strategy.close("buy")
            inlong:=0
            stop:=0
else
    inlong:=0
    stop:=0
plot(stop,color=green,linewidth=1)