移動平均クロスオーバートレンドフォロー戦略


作成日: 2024-01-03 17:01:38 最終変更日: 2024-01-03 17:01:38
コピー: 0 クリック数: 588
1
フォロー
1621
フォロワー

移動平均クロスオーバートレンドフォロー戦略

概要

この戦略は,双均線の交差を計算して価格トレンドを判断し,一定のパラメータ制限と組み合わせて,買入と売却のシグナルを発出する.主に3つの部分に分かれています. 第一に,急速平均線と遅い平均線の交差を計算して価格トレンドを判断する. 第二に,一定のパラメータ制限と組み合わせて,誤った取引を避ける. 第三に,ストップ・ロストを利用してリスクを制御する.

戦略原則

この戦略の核心は,急速平均線と遅い平均線を計算することにある. 急速平均線のパラメータは,平均線周期の半分であり,反応価格の変動により敏感である. 遅い平均線のパラメータは,平均線周期であり,反応価格の変動はより平穏である. 急速平均線上を通過すると,価格が上昇傾向に入ると考えられる. 急速平均線下を通過すると,価格が低下傾向に入ると考えられる.

さらに,策略は,誤った取引を避けるために一定のパラメータを設定している.決定値が設定されている場合,平均線差が一定幅を超えた場合にのみ取引シグナルを発信する.信頼パラメータは波動フィルターに使用され,価格変動が一定程度に達した場合にのみシグナルを発信する.

最後に,戦略は,ストップ・ストップ・ロスを採用してリスクを制御する. openprofitは,ストップ・ロスの値を下回るとポジションを退出し,ストップ・ロスの値を超えるとポジションを退出し,単一損失を効果的に制御する.

優位分析

この戦略の最大の利点は,価格の傾向と波動の特徴を判断する均線指標を組み合わせることにある.双均線交差判断価格の傾向は,パラメータを最適化した後に正確にトレンドを捉えるクラシックな効果的な技術指標方法である.波動性指標confidenceは,波動的な市場を効果的にフィルターし,頻繁に誤った取引を避ける.

また,決定値,ストップ・ストップ・損失などのパラメータ設定は,取引リスクを大幅に軽減し,高殺低を追求するのを防ぐことができます.

リスク分析

この戦略の主なリスクは,双均線指標が誤信号を発する可能性があることにある. 急速平均線と遅い平均線は,重み付けの移動平均線であり,突発的な出来事に対する反応は遅い,短期価格の反転を逃す可能性がある. このとき,パラメータの信頼に依存して二重フィルタリングを行う必要がある.

また,ストップ・ストップ・ペアの設定が不適切であることもリスクを増大させる.ストップ・ペアの設定があまりにも高く,ストップ・ペアの設定があまりにも低く,予想以上の損失を引き起こす可能性がある.これは,異なる品種の特徴と変動率に応じて合理的なパラメータを設定する必要がある.

最適化の方向

この戦略は以下の点で最適化できます.

  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