移動平均値間の振動取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-11 14:38:48
タグ:

img

概要

この戦略は,移動平均指標とボリンジャー帯を組み合わせて,両方向取引のための移動平均値の間に振動する戦略を実装する.価格が下のレールの上下を突破したとき,価格が上下を突破したとき,ロングに移動し,移動平均値の間の振動から利益を得る.

戦略原則

  1. 移動速度速平均 ma_short と移動速度遅い平均 ma_long を計算する
  2. ma_short が ma_long の上を横切ると,long になります.ma_short が ma_long の下に横切ると,short になります.
  3. ボリンジャー・バンドの上列,下列,中列を計算する.
  4. 価格が下鉄線を超えると,長信号を確認する.価格が上鉄線を下に突破すると,短信号を確認する.
  5. 移動平均指標とボリンジャー・バンドが同じ方向にシグナルを送る場合 オープンポジション,反対方向にシグナルを送る場合 閉鎖ポジション

利点分析

  1. 二重指標の組み合わせにより,比較的安定し,いくつかの誤った信号をフィルタリングすることができます
  2. 移動平均値とボリンジャー帯の間で振動することで,高値を追いかけて低値を売ることが避けられます.
  3. 双方向取引を許可することで,価格変動から利益を得ることができます.

リスク分析

  1. ボリンジャー・バンドのパラメータ設定は,取引頻度と収益性に影響します.
  2. 強いトレンド市場では大きな損失を生むのは簡単です
  3. 移動平均システム自体は,出口でより多くの損失を伴う取引を生み出す傾向があります.

リスク管理

  1. Bollinger Bands パラメータを最適化し,適切な取引頻度に調整する
  2. 単一の取引損失を制御するためのストップ損失戦略を設定する
  3. 傾向 が 明らか で ない 場合,この 戦略 を 用いる

オプティマイゼーションの方向性

  1. 移動平均系の異なるパラメータ組み合わせを試験する
  2. フィルター信号に音量指標を追加するかどうかを評価する
  3. RSIと他の指標を組み合わせて過買い・過売りゾーンを決定するかどうかをテストする

上記の最適化は,収益性をさらに向上させ,不必要な取引を削減し,取引頻度を低くし,損失リスクを軽減することができます.

概要

この戦略は,移動平均システムとボリンジャー帯を組み合わせ,価格移動平均間の振動取引を実装する.ダブルインジケーターの組み合わせは信号品質を改善し,双方向取引がより多くの機会を提供します.パラメータをさらに最適化し,他の補助指標を追加することで,不要な取引を削減し,収益性を向上させることができます.これはライブテストと最適化に価値があります.

]


/*backtest
start: 2023-12-09 00:00:00
end: 2023-12-10 00:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("MA-Zorrillo",overlay=true)

ma_short= sma(close,8)
ma_long= sma(close,89)

entry_ma = crossover (ma_short,ma_long)
exit_ma = crossunder (ma_short,ma_long) 


BBlength = input(24, minval=1,title="Bollinger Period Length")
BBmult = 2 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = sma(close, BBlength)
BBdev = BBmult * stdev(close, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev

source = close
entry_bb = crossover(source, BBlower)
exit_bb = crossunder(source, BBupper)


vs_entry = false
vs_exit = false
for i = 0 to 63
    if (entry_bb[i])
        vs_entry :=  true
    if (exit_bb[i])
        vs_exit :=  true
        

entry = entry_ma and vs_entry
exit =  exit_ma and vs_exit

strategy.entry(id="long_ma",long=true,when=entry)
strategy.close(id="long_ma", when=exit)

strategy.entry(id="short_ma",long=false,when=exit)
strategy.close(id="short_ma",when=entry)


もっと