双向移動平均金十字定量戦略 (Dual Moving Average Golden Cross Quantitative Strategy) は,技術指標に基づく定量的な取引戦略である.異なる期間の2つの移動平均を計算することによって市場動向を決定し,低リスク取引が可能である.短期間移動平均が長期間移動平均を上回ると,ロングに行くためのゴールデンクロス信号が生成される.短期間移動平均が長期間よりも下回ると,ショートに行くためのデスクロス信号が生成される.この戦略には,誤ったブレイクを避けるために価格チャネル指標も含まれている.
双動平均金十字定量戦略は,移動平均理論に基づいている. 移動平均は,市場のノイズを効果的にフィルタリングし,長期的な傾向の方向性を示すことができる. 短期の移動平均が長期の移動平均を超えると,市場の上向きの逆転を示し,購入信号である. 短期の移動平均が長さの下を横切ると,下向きの逆転を示し,販売信号である. この戦略は,移動平均の2つのグループを設定します. 第一は2日間の移動平均と3日間の移動平均,第二は420日間の移動平均です. 2日間の購入が3日間の移動平均を超えると,2日間の購入が3日間の移動平均を超えると,販売信号が生成されます. 420日間の移動平均は,短期的な引き下げを避けるために長期的トレードトレンドを決定するために使用されます.
戦略コードの主な論理は
具体的原則は次のとおりです.
短期調整後のトレンド逆転の機会を,二重移動平均の交差点を持つターニングポイントを決定し,誤った取引を避けるためにパラメータフィルターを設定することによって捉える.この戦略は,比較的高い利益因数で短期調整後のトレンド逆転の機会を効果的に捉える.
二重移動平均金十字量的な戦略は以下の利点があります.
双向移動平均金十字定量戦略には,次のリスクもあります.
リスクを減らすために,次の方法が使用できます.
二重移動平均金十字量的な戦略は,次の側面でも最適化できます.
パラメータ最適化: 最適なパラメータ組み合わせを選択するために移動平均値とチャネル指標パラメータを調整します.遺伝子アルゴリズムは最適化を支援することができます.
タイミング選択: 異なる製品特性に基づいて最も適した移動平均パラメータを選択します.例えば,利息関連商品の短期移動平均を設定します.
ストップ損失戦略の最適化: 動的ストップを設定し,後押しストップを設定し,後押しストップを避ける.
方向的な取引の最適化: トレンドインジケーターを組み込み,反トレンド取引を防ぐためにトレンドをフォローするオペレーションを採用する.
機械学習の組み合わせ: 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)