
双均線金十字量化戦略 (Dual Moving Average Golden Cross Quantitative Strategy) は,技術指標の量化取引戦略である.これは,2つの異なる周期の均線を計算して,市場動向を判断し,低リスク取引を実現する.短周期平均線上より長い周期平均線を穿越すると,金十字信号を生じ,多作する.短周期平均線下より長い周期平均線を穿越すると,死十字信号を生じ,空作る.この戦略は,同時に価格チャネル指標を組み合わせて,偽突破を避ける.
双均線金十字量化戦略は均線理論に基づいている。均線は市場騒音を効果的に波させ,長期トレンドの方向を指示できる。短周期平均線を長い周期平均線に穿越すると,下から上向きを反転させ,買入信号である.短周期平均線を長い平均線に穿越すると,上から下向きを反転させ,売出信号である。この戦略は2日平均線と3日平均線を2日平均線と420日平均線を2日平均線に3日平均線を穿越すると,買入信号と売出信号を生成する。420日平均線を穿越すると,長期トレンドを判断し,取引前の短期回調を避けるために使用される。
この戦略の核心となるコードロジックは,
具体的にはこうです
双均線交差によって短期トレンド反転点を判断し,パラメータフィルターを設定して誤取引を避ける.この戦略は,短期調整後のトレンド反転の機会を効果的に捕捉し,profit因子が高い.
双均線ゴールドクロス量化戦略は以下の利点がある.
双均線金十字量化策には以下のリスクもあります.
リスクは以下の方法で軽減できます.
双均線ゴールドクロス量化戦略は,以下の点で最適化できる.
パラメータ最適化: 平均線パラメータと通路指標パラメータを調整し,最適のパラメータ組み合わせを選択する. 遺伝的アルゴリズムなどのツールを使用して補助的な最適化を行うことができる.
選択する際には: 異なる品種の特性に応じて,最もマッチする平均線パラメータを選択する.例えば,興味のある品種は,より短い周期平均線を設定する.
ストップ・ローズ戦略の最適化: float 動的ストップを設定し,ストップを追跡するなどストップ方式を設定し,リコールストップを回避する.
同方向操作最適化: トレンド指数と組み合わせて,トレンド同方向操作を行い,逆向きの取引を避ける.
機械学習の組み合わせ: 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)