ダブル移動平均クロスオーバー短期戦略


作成日: 2023-10-30 11:19:48 最終変更日: 2023-10-30 11:19:48
コピー: 0 クリック数: 717
1
フォロー
1617
フォロワー

ダブル移動平均クロスオーバー短期戦略

概要

双均線交差ショートライン戦略は,シンプルで効率的なショートライン取引戦略である.この戦略は,価格と移動平均の交差信号を買い売り信号として利用し,ショートライン内の価格の傾向的な波動を捕捉する.

戦略原則

双均線交差策略は,2つの異なる周期の移動平均を使用し,より短いMA線とより長いMA線である.短期MA線が下方から長期MA線を突破すると買入シグナルを生成し,短期MA線が上方から下方から長期MA線を突破すると売り出シグナルを生成する.

この策略は,まず,length変数指定の長周期MAの長さを50で定義し,その後,priceをクローズオフ価格と定義し,lengthのMA線値を計算し,ma変数に保存する.また,bcondを定義して,priceがma値より高いかどうかを判断し,bcount+1で0になる.bcondが連続してconfirmBarsを触発する場合は,購入シグナルを生成する.逆に,priceがmaより低ければ,同じ論理で販売シグナルを生成する.

部分的に無効な信号をフィルターするために,戦略は3つのフィルター条件clc,clc0およびclc1を追加した.この3つの条件は,現在の周期と前回の周期の閉盘価格の大きさの関係,および現在の周期の閉盘価格と開盤価格の大きさの関係を判断し,同時に満たされれば,信号を生成することを許可した.

最後に,価格が再び上位に転落したり,下位に突破したりすると,それぞれ,相応の多ポジションまたは空ポジションを平らげる.

戦略的優位性

  • 戦略はシンプルで理解しやすい.
  • 平均線システムのトレンド追跡機能を利用して,価格の中間短期トレンドを効果的に捉えることができる.
  • フィルタリング条件を追加することで,無効信号の干渉を減らすことができます.
  • 固定ストップ・損失退出メカニズムを使用すると,単一損失をうまく制御できます.

戦略リスク

  • 双均線交差策は,波動的な市場において偽信号を生じやすいため,過剰取引は追加取引手数料と滑り点の損失をもたらします.
  • 固定周期のパラメータ設定は平均線長のようなもので,市場の各段階の特徴に適応できない可能性があり,最適化スペースを生成する.
  • 固定ストップは,市場の波動に応じてストップを調整することができない.ストップポイントより大きい単一大行情では,早すぎるストップが発生する可能性がある.

リスクを軽減するために,市場の変動率の動向に応じて平均線パラメータを調整することを考えることができます.また,離散ストップまたはパーセントストップを採用して,ストップポイントを柔軟に調整できるようにすることもできます.

戦略の最適化

この戦略は以下の点で最適化できます.

  1. 平均線システムのパラメータを最適化します.例えば,市場変動率などの指標の動態に応じて平均線長さを調整します.

  2. 信号品質を向上させるために,交差量急増などの追加フィルタリング条件を追加する.

  3. 浮動式止損またはパーセント止損などの止損戦略を最適化して,早期止損の可能性を減らす.

  4. MACD,RSIなどの他の指標と組み合わせて,多要素検証を行い,信号の有効性を高めます.

  5. 自動リスク管理策の追加,例えば,ポジションの規模を動的に調整し,単一損失を制御する.

  6. 購入・販売のシグナルに対して,機械学習の手法を加え,より正確なシグナル判断モデルを構築する.

要約する

双均線交差ショートライン戦略は,全体として非常に実用的なショートライン取引戦略であり,操作が簡単で,実行しやすいという利点があります.しかし,揺れ動いている市場の偽信号を制御することに注意し,ダイナミックパラメータの最適化などの改善を行うことが必要で,この戦略を最大限に活用することができます.ストップマネジメントとリスク管理手段を組み合わせて,戦略の安定性をさらに向上させることができます.

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

//@version=4
strategy("MovingAvg Cross", overlay=true)
length = input(50)
confirmBars = input(2)
price = close

ma = sma(price, length)

bcond = price > ma

bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0

clc=close[0]>close[1]
clc0=close[0]>open[0]
clc1=close[1]>open[1]

if clc and clc0 and clc1 and (bcount == confirmBars)
    strategy.entry("buy", strategy.long)


scond = price < ma
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0

csc=close[0]<close[1]
csc0=close[0]<open[0]
csc1=close[1]<open[1]

if csc and csc0 and csc1 and (scount == confirmBars)
    strategy.entry("sell", strategy.short)

strategy.close("buy", when=scond)
strategy.close("sell",when=bcond)
    
plot(ma, color=color.red)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)