FRAMA と 移動平均のクロスオーバー取引戦略

作者: リン・ハーンチャオチャン開催日:2023年12月22日 16:08:23
タグ:

img

概要

この戦略は,まず13期と26期の単純な移動平均を計算し,その後FRAMA指標を計算します. 速い線がスローラインを下から上へと突破するとロングになり,速い線がスローラインを上から下へと突破したときまたはFRAMA指標が閉値を上から下へと突破したとき,ポジションを終了します.

戦略原則

この戦略は,主に移動平均のクロスオーバーを使用して取引信号を生成する.短期移動平均が長期移動平均を下から上へと突破すると,トレンドが下落から上昇へと転向し,ロングに進むことを示します.短期移動平均が長期平均を下に突破すると,差し迫った逆転を示し,ポジションを閉じる.

一方,FRAMA指標は補助判断として導入されている.FRAMA指標は,フラクタル市場仮説に基づいて改善された適応型移動平均線である.異なる期間の価格変動幅の対数変化率を計算することによって,移動平均のスムーズさを動的に調整するためにリアルタイムで市場のフラクタル次元を推定した.FRAMA指標が閉値を下回ると,トレンド逆転信号を示します.移動平均クロスオーバー信号と組み合わせると,判断の正確性を向上させます.

利点分析

この戦略は,デュアル移動平均クロスオーバーとFRAMA指標を組み合わせ,偽のブレイクアウト信号を効果的にフィルタリングし,取引信号の品質を改善することができます. 双移動平均クロスオーバーは主に主要な取引方向を判断し,補助的なFRAMA判断は振動する市場で逆転タイミングを逃すことを回避することができます.

単一指標とモデルと比較して,この戦略は信号品質を大幅に改善し,誤判の確率を減らすことができます.一方,高速と遅い移動平均を組み合わせることで,罠にはまらないように傾向を追います.

リスク分析

この戦略の主なリスクは,二重移動平均がより多くの誤ったブレイクアウト信号を生む可能性があることであり,FRAMA指標のパラメータ設定も有効性に影響を与える.さらに,高速線と遅い線,FRAMAと特定の市場条件での閉値のクロスオーバーのない長い期間があり,取引機会がない可能性があります.

上記のリスクを制御するために,移動平均期間のようなパラメータは,それに応じて調整され,または他の指標でフィルタリングすることができます.また,長さ,フラクタル因数を含むFRAMA指標のパラメータも,過度にスムーズ化または過度に敏感性を避けるために,異なる市場に応じて適切に設定する必要があります.

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

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

  1. 最適パラメータペアを見つけるために 移動平均の組み合わせと周期をテストします

  2. ストップ・ロスの戦略を追加して 単一の損失を制御します

  3. 取引量指標を組み合わせて,低取引量で誤ったブレイクを回避する.

  4. リアルタイムで市場状況を評価し,パラメータを動的に調整するための機械学習モデルを追加します

  5. 意思決定の質を向上させるために 感情指標,ニュース,その他の多要素を組み合わせます

結論

この予備戦略は,二重移動平均クロスオーバーとFRAMA指標の適用を組み合わせています. 単純性と直感性を保ち,シグナル品質を効果的に改善し,さらなるテストと最適化に値します. パラメータチューニング,新しい指標の導入などの最適化により,この戦略は安定した信頼性の高い取引戦略になることを期待できます.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-16 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Fractal Adaptive Moving Average",shorttitle="FRAMA",overlay=true)


ma_fast = sma(close,13)

ma_slow = sma(close,26)
plot(ma_fast,color = green)
plot(ma_slow, color = yellow)
price = input(hl2)
len = input(defval=16,minval=1)
FC = input(defval=1,minval=1)
SC = input(defval=198,minval=1)
len1 = len/2
w = log(2/(SC+1))
H1 = highest(high,len1)
L1 = lowest(low,len1)
N1 = (H1-L1)/len1
H2 = highest(high,len)[len1]
L2 = lowest(low,len)[len1]
N2 = (H2-L2)/len1
H3 = highest(high,len)
L3 = lowest(low,len)
N3 = (H3-L3)/len
dimen1 = (log(N1+N2)-log(N3))/log(2)
dimen = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1]))
alpha1 = exp(w*(dimen-1))
oldalpha = alpha1>1?1:(alpha1<0.01?0.01:alpha1)
oldN = (2-oldalpha)/oldalpha
N = (((SC-FC)*(oldN-1))/(SC-1))+FC
alpha_ = 2/(N+1)
alpha = alpha_<2/(SC+1)?2/(SC+1):(alpha_>1?1:alpha_)
out = (1-alpha)*nz(out[1]) + alpha*price
plot(out,title="FRAMA",color=purple,transp=0)
entry() => crossover(ma_fast, ma_slow) and (out < close)
exit() => crossover(ma_slow, ma_fast) or crossunder(out, close)

strategy.entry(id= "MA cross", long = true, when = entry())
strategy.close(id= "MA cross", when = exit())

もっと