ダブル移動平均クロスオーバーゴールデンクロスオーバー定量戦略


作成日: 2023-12-26 15:52:13 最終変更日: 2023-12-26 15:52:13
コピー: 0 クリック数: 562
1
フォロー
1623
フォロワー

ダブル移動平均クロスオーバーゴールデンクロスオーバー定量戦略

概要

この戦略は,双均線の交差を計算することによって,価格の傾向と取引の機会を判断する.快線上をゆっくりと通過すると,黄金の交差とみなされ,多額の取引を行う.快線下をゆっくりと通過すると,死の交差とみなされ,空きをする.同時に,量指標を組み合わせて,真の交差を判断し,偽の信号を避ける.

戦略原則

この戦略は以下の原則に基づいています.

  1. 2組の異なるパラメータの平均線を計算し,一組は価格変化に迅速に反応し,一組は比較的ゆっくりである. 速線上を横切ると,価格が上昇傾向を開始することを示す. 速線下を横切ると,価格が低下し始めることを示す.

  2. 均線が交差するときは,また,計量能指数の変化を検出する.計量能指数が同期突破するならば,交差信号が信頼できることを示し,計量能指数が対照突破しないならば,偽信号である可能性がある.

  3. 交差方向と量によって判断し,多行または空行のポジションに入ります. そして,利益が一定比率に達したときに停止する停止条件を設定します.

具体的には,戦略は,7日間の双平均線の交差を計算して価格の傾向を判断する.計算量変化指標を計算して交差信号の信頼性を判断する.信頼性の高い信号を決定する際には,SIGNALで多かれ少なかれ実行する.

優位分析

この戦略の主な利点は

  1. 双均線でトレンドの方向を判定し,量で偽信号をフィルタリングし,被套を避ける.
  2. 合格率を上げるには,合格の基準が確認された場合にのみ入学する.
  3. 停止条件を設定し,時間内に停止し,お金を稼いだとしてもお金を失うのを避ける.

リスク分析

この戦略の主なリスクは

  1. 均線交差の遅延,価格変化のベストチャンスポイントを容易に見逃す.適正にパラメータを最適化して均線をより敏感にすることができる.
  2. 量能指標が分かれるときは判断が難しい. 確認のためにより多くの補助指標を導入することができる.
  3. 停止点の不合理な設定は,超短線または超長線操作を引き起こす可能性があります.停止パラメータをテストし,最適化する必要があります.

最適化の方向

この戦略は以下の方向から最適化できます.

  1. 平均線周期パラメータを最適化して,価格の変化をより敏感に,及ばなく捉える.
  2. MACD,KDなど,信号確認のためのより多くの指標を追加し,量能指標の誤判を避ける.
  3. 移動停止,比率停止,振動停止などのより多くの停止戦略を組み合わせて,動的な停止を実現します.
  4. 自動ストップ戦略を追加し,単発損失を制御する.
  5. ポジション管理の最適化,異なる市場環境で戦略的ポジションの調整.

要約する

この戦略全体として,核心構想は双均線交差判断傾向であり,量能指標のフィルタリング信号である.効果は安定し,容易に実施できる.パラメータをさらに最適化し,信号フィルタリングと停止/止損戦略を追加することで,戦略をより信頼性と知能化し,実戦価値が高くすることができる.

ストラテジーソースコード
/*backtest
start: 2022-12-19 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("ZendicatoR", overlay=true, calc_on_order_fills= true, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15, pyramiding=0)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
keh=input(title="Double HullMA Cross",defval=7, minval=1)
che1=input(title="MA 1",defval=34,minval=1)
che2=input(title="MA 2",defval=144,minval=1)
che3=input(title="MA 3",defval=377,minval=1)
amnt=input(title="TP ($)",defval=4200,minval=1)
wma1=wma(close,che1)
wma2=wma(close,che2)
wma3=wma(close,che3)
sma1=sma(close,11)
tms=10000000000000
A=request.security(syminfo.tickerid, 'D', close)*tms
B=request.security(syminfo.tickerid, 'D', close[1])*tms
C=A>B?green:red
D=wma2>wma3?green:red
plot(wma1,style=line,color=C,linewidth=4)
p1=plot(wma2,style=line,color=D)
p2=plot(wma3,style=line,color=D)
fill(p1, p2, color=D, transp=75)
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma,sqn=round(sqrt(keh))
n2ma1=2*wma(close[2],round(keh/2))
nma1=wma(close[2],keh)
diff1=n2ma1-nma1,sqn1=round(sqrt(keh))
n1=wma(diff,sqn)*tms
n2=wma(diff1,sqn)*tms
Q=n1>n2?blue:yellow
plot(sma1,style=line,color=Q,linewidth=4)
closelong = A*tms<B*tms and n2*tms>n1*tms and strategy.openprofit>amnt
if (closelong)
    strategy.close("Long")
closeshort = A*tms>B*tms and n1*tms>n2*tms and strategy.openprofit>amnt
if (closeshort)
    strategy.close("Short") 
longCondition = A*tms>B*tms and n1*tms>n2*tms
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = A*tms<B*tms and n1*tms<n2*tms
if (shortCondition)
    strategy.entry("Short",strategy.short)