二重移動平均金十字量的な戦略

作者: リン・ハーンチャオチャン開催日:2023年12月26日17時02分29秒
タグ:

img

概要

双向移動平均金十字定量戦略 (Dual Moving Average Golden Cross Quantitative Strategy) は,技術指標に基づく定量的な取引戦略である.異なる期間の2つの移動平均を計算することによって市場動向を決定し,低リスク取引が可能である.短期間移動平均が長期間移動平均を上回ると,ロングに行くためのゴールデンクロス信号が生成される.短期間移動平均が長期間よりも下回ると,ショートに行くためのデスクロス信号が生成される.この戦略には,誤ったブレイクを避けるために価格チャネル指標も含まれている.

戦略原則

双動平均金十字定量戦略は,移動平均理論に基づいている. 移動平均は,市場のノイズを効果的にフィルタリングし,長期的な傾向の方向性を示すことができる. 短期の移動平均が長期の移動平均を超えると,市場の上向きの逆転を示し,購入信号である. 短期の移動平均が長さの下を横切ると,下向きの逆転を示し,販売信号である. この戦略は,移動平均の2つのグループを設定します. 第一は2日間の移動平均と3日間の移動平均,第二は420日間の移動平均です. 2日間の購入が3日間の移動平均を超えると,2日間の購入が3日間の移動平均を超えると,販売信号が生成されます. 420日間の移動平均は,短期的な引き下げを避けるために長期的トレードトレンドを決定するために使用されます.

戦略コードの主な論理は

  1. 2 日,3 日,420 日移動平均を計算する
  2. 2日間の移動平均値と 3日間の移動平均値の間の黄金十字と死十字を判断します
  3. 信号をフィルタリングし,誤差を避けるために420日移動平均を使用します
  4. 購入・販売信号を生成する

具体的原則は次のとおりです.

  1. 2日間の単純な移動平均 n2ma と 3日間の単純な移動平均 nma を過去 3 日間の閉値に基づいて計算する.
  2. 過去420日間の閉場価格の420日間の重度の移動平均値を計算する.
  3. n2ma が nma を越えると買い信号が生成されます.
  4. n2maがnmaを下回ると売り信号が生成される.
  5. rvwma を使ってシグナルをフィルターし,n2ma が rvwma 以下のときにのみ購入信号と,n2ma が rvwma 以上のときにのみ販売信号を生成します

短期調整後のトレンド逆転の機会を,二重移動平均の交差点を持つターニングポイントを決定し,誤った取引を避けるためにパラメータフィルターを設定することによって捉える.この戦略は,比較的高い利益因数で短期調整後のトレンド逆転の機会を効果的に捉える.

利点分析

二重移動平均金十字量的な戦略は以下の利点があります.

  1. シンプルで信頼できる: 短期的な価格動向を決定するために,二重移動平均の交差点を利用し,直接的で明確な信号を生成します
  2. 高い感度: 2日および3日移動平均のパラメータは,短期間の価格変動を迅速に把握するのに十分敏感に設定されています.
  3. 騒音フィルター: 騒音を効果的にフィルタリングし,誤った取引を避けるために価格チャネル指標を組み込む
  4. 適応力: 二重移動平均の交差点理論は,異なる製品と時間枠に適応し,実装を容易にする
  5. 楽に最適化できる: 移動平均パラメータの組み合わせを変更し,フィルターパラメータを調整することによって,大きな最適化空間
  6. リアル取引の検証: 2つの移動平均のクロスオーバー戦略は,比較的安定したパフォーマンスを示すライブ取引で検証されています.

リスク分析

双向移動平均金十字定量戦略には,次のリスクもあります.

  1. 引き戻しリスク: 短期的なリバウンドはストップを誘発する可能性があります
  2. トレンド逆転リスク: 長期的トレンド逆転を招く突然の出来事が損失を引き起こす可能性があります.
  3. パラメータ最適化リスク: 不適切なパラメータは戦略の業績を悪化させる
  4. 過剰最適化リスク: 過剰なパラメータ最適化によりオーバーフィッティングが発生する
  5. 直接取引の偏差リスク: バックテストとライブ取引の差異は業績に影響を与える可能性があります

リスクを減らすために,次の方法が使用できます.

  1. 単一の損失を制御するために合理的なストップ損失を設定する
  2. 市場に反する取引を避けるために基本要素を組み合わせる
  3. 最適化のための適切な製品と期間を選択
  4. 適切なパラメータ感度テストを行う
  5. ライブ取引の検証を追加する

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

二重移動平均金十字量的な戦略は,次の側面でも最適化できます.

  1. パラメータ最適化: 最適なパラメータ組み合わせを選択するために移動平均値とチャネル指標パラメータを調整します.遺伝子アルゴリズムは最適化を支援することができます.

  2. タイミング選択: 異なる製品特性に基づいて最も適した移動平均パラメータを選択します.例えば,利息関連商品の短期移動平均を設定します.

  3. ストップ損失戦略の最適化: 動的ストップを設定し,後押しストップを設定し,後押しストップを避ける.

  4. 方向的な取引の最適化: トレンドインジケーターを組み込み,反トレンド取引を防ぐためにトレンドをフォローするオペレーションを採用する.

  5. 機械学習の組み合わせ: LSTM,RNN,その他のディープラーニングモデルを使用して,信号品質を判断し,入力タイミングを決定します.

結論

双動平均金十字定量戦略は,移動平均クロスオーバーの単純な原則を通じて短期間の価格傾向を決定する.チャネル指標を設定することで,誤った信号を効果的にフィルターする.この戦略はシンプルな論理を持ち,実装が容易である.リライブ・トレーディングで検証された比較的良いパフォーマンスで柔軟なパラメータ調整が可能である.これはパラメータ最適化,ストップ損失最適化,機械学習などにより,さらに優れたパフォーマンスを達成するためにアップグレードできる推奨量的な戦略である.この戦略は,暗号通貨や株式などの製品全体でアルゴリズム的な取引に適している.


/*backtest
start: 2023-12-24 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//                                                Indicator420 by SeaSide420
strategy("Indicator420 strategy", overlay=true)
q=input(title="HullMA",defval=420)
z=input(title="HullMA cross",defval=3)
a=input(title="VWMA",defval=14)
rvwma=vwma(close,round(a))
rvwma2=vwma(close,round(a*2))
rvwma3=vwma(close,round(a*3))
n2ma=2*wma(close,round(z/2))
nma=wma(close,z)
diff=n2ma-nma
sqn=round(sqrt(z))
n2ma1=2*wma(close[1],round(z/2))
nma1=wma(close[1],z)
diff1=n2ma1-nma1
sqn1=round(sqrt(z))
n2ma2=2*wma(close[2],round(q/2))
nma2=wma(close[2],q)
diff2=n2ma2-nma2
sqn2=round(sqrt(q))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
n3=wma(diff2,sqn)
b=n1>n2?red:lime
c=n1>n2?green:red
d=n3>rvwma3?red:green
e=rvwma2>rvwma3?green:red
f=n1>n2?red:green
//plot(rvwma3, color=e, linewidth=1)
plot(cross(rvwma, rvwma2) ? rvwma : na, style = line,color=e, linewidth = 1)
plot(cross(n1, n2) ? n1 : na, style = line,color=b, linewidth = 3)
plot(cross(n1, n2) ? n1 : na, style = circles,color=c, linewidth = 4)
closelong = n1<n2
if (closelong)
    strategy.close("Long")
closeshort = n1>n2
if (closeshort)
    strategy.close("Short") 
longCondition = n1>n2 and strategy.opentrades<1 and n1<rvwma3
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and strategy.opentrades<1 and n1>rvwma3
if (shortCondition)
    strategy.entry("Short",strategy.short)

もっと