二重移動平均とFRAMA指標に基づくロングショートクロスオーバー取引戦略


作成日: 2023-12-22 16:08:23 最終変更日: 2023-12-22 16:08:23
コピー: 0 クリック数: 801
1
フォロー
1621
フォロワー

二重移動平均とFRAMA指標に基づくロングショートクロスオーバー取引戦略

概要

この戦略は,まず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())