移動平均を横切る傾向追跡戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-03 17:01:38
タグ:

img

概要

この戦略は,ダブル移動平均の交差値を計算して価格傾向を判断し,特定のパラメータ制限付きの購入・販売シグナルを発行する.主に3つの部分で構成される.第一に,高速・遅い移動平均の交差値を計算して価格傾向を判断し,第二に,間違った取引を避けるために特定のパラメータ制限を設定し,第三に,リスクを制御するためにストップ・プロフィートとストップ・ロスを使用する.

戦略原則

この戦略の核心は,高速移動平均と遅い移動平均の計算にある.高速移動平均は,価格変化により敏感な総移動平均期間の半分の期間を有し,遅い移動平均は,価格変化をよりスムーズに反映する総移動平均期間の期間を有している.高速移動平均がスローを上回ると,価格は上昇すると考えられ,下回ると下がります.

さらに,この戦略は間違った取引を避けるために特定のパラメータを設定する.例えば,決定の値は,2つの移動平均値の差が一定のレベルを超えるとのみシグナルが発行されることを保証する.信頼パラメータは,小さな価格変動をフィルタリングするために使用されます.

最後に,ストップ・プロフィートとストップ・ロスはリスクを制御するために使用されます.オープン・プロフィートがストップ・ロストポイント未満またはストップ・プロフィートポイントより大きい場合,ポジションは閉鎖されます.これは単一の取引の損失を効果的に制限します.

利点分析

この戦略の最大の利点は,移動平均指標を通じて価格動向と変動性の特徴の判断を組み合わせることです.ダブル移動平均のクロスは,価格動向を決定するための古典的な効果的な技術的アプローチです.パラメータ最適化により,トレンドを正確に把握できます.信頼パラメータは,不安定な市場を効果的にフィルタリングし,頻繁な間違った取引を避けることができます.

さらに,意思決定の値,ストップ・プロフィット,ストップ・ロスのようなパラメータは,高値を追いかけて低値を売ることを避けることで,取引リスクを大幅に軽減することができます.

リスク分析

この戦略の主なリスクは,二重移動平均から誤った信号が発信される可能性である. 速いMAsと遅いMAsは,突然の出来事に対してゆっくり反応する重量化された移動平均である.したがって,短期的な価格逆転を逃す. この時点で,信頼パラメータは二重確認を提供することができる.

さらに,ストップ・プロフィートとストップ・ロスの不適切な設定はリスクも増加させる.過度に高い利益目標と低いストップ・ロスのポイントは,期待を超える損失につながる可能性がある.異なる取引製品の特徴と変動に応じて合理的なパラメータを設定する必要があります.

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

戦略は以下の側面で最適化できます.

  1. 移動平均期間を最適化し,異なるサイクルにおける価格変動をモデル化するために適応移動平均を設定する.

  2. ストップ・プロフィートとストップ・ロスの動的追跡メカニズムを設定し,ストップ・ポイントが動的に変化できるように,市場の状況に基づいてリアルタイムで波動性を計算する.

  3. 価格の動向を判断する機械学習モデルを増やし,現在の価格動向を決定するためにより多くの歴史的データを活用し,間違った信号を減らす.

結論

一般的には,これは古典的なシンプルで効果的なトレンドトレーディング戦略である.トレンドを決定するためにダブル移動平均交差を使用し,リスクを制御するためのパラメータを設定し,マルチプロダクトトレーディングのための高度な構成性を有する.機械学習のようなより知的判断手段が導入されれば,全体的な効果はさらなる研究のためにさらに良いかもしれない.


/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// Any timeFrame ok but good on 15 minute & 60 minute , Ichimoku + Daily-Candle_cross(DT) + HULL-MA_cross + MacD combination 420 special blend
strategy("Trade Signal", shorttitle="Trade Alert", overlay=true )
keh=input(title="Double HullMA",defval=14, minval=1)
dt = input(defval=0.0010, title="Decision Threshold (0.001)", type=float, step=0.0001)
SL = input(defval=-10.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=100.00, title="Target Point in $", type=float, step=1)
ot=1
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(close[1],round(keh/2))
nma1=wma(close[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green
confidence=(request.security(syminfo.tickerid, '5', close[1])-request.security(syminfo.tickerid, '60', close[1]))/request.security(syminfo.tickerid, '60', close[1])
conversionPeriods = input(9, minval=1, title="Conversion Line Periods")
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods")
displacement = input(26, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
LS=close, offset = -displacement
MACD_Length = input(9)
MACD_fastLength = input(12)
MACD_slowLength = input(26)
MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength)
aMACD = ema(MACD, MACD_Length)
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and close>n2 and leadLine1>leadLine2 and open<LS and MACD>aMACD
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and close<n2 and leadLine1<leadLine2 and open>LS and MACD<aMACD
if (shortCondition)
    strategy.entry("Short",strategy.short)

//alerts
alertcondition(closelong, title='Close Buy Position', message='Close Buy Position')
alertcondition(closeshort, title='Close Short Position', message='Close Short Position')
alertcondition(longCondition, title='Buy Signal', message='Buy Signal Alert')
alertcondition(shortCondition, title='Sell Signal', message='Sell Signal Alert')

//a1=plot(n1,color=c)
//a2=plot(n2,color=c)plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4)
//plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4)
plot(conversionLine, color=#0496ff, title="Conversion Line")
plot(baseLine, color=#991515, title="Base Line")
plot(close, offset = -displacement, color=#459915, title="Lagging Span")
p1=plot (leadLine1, offset = displacement, color=green,  title="Lead 1")
p2=plot (leadLine2, offset = displacement, color=red,  title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)
// remove the "//" from before the plot script if want to see the indicators on chart

もっと