FRAMA インジケーターに基づく MA 移動平均クロスオーバー戦略


作成日: 2024-01-15 14:38:48 最終変更日: 2024-01-15 14:38:48
コピー: 1 クリック数: 691
1
フォロー
1617
フォロワー

FRAMA インジケーターに基づく MA 移動平均クロスオーバー戦略

概要

この戦略は,まず,速動平均マ_ファストと遅動平均マ_スローを計算し,FRAMAと適応移動平均を組み合わせ,マ_スローをマ_ファストで,平仓をマ_スローで,またはFRAMAをクローズオフ価格で穿越する.

戦略原則

  1. 13日間の単純移動平均をma_fastと26日間の単純移動平均をma_slowで計算する.

  2. FRAMAを計算するには,自律的に移動平均を計算する.FRAMAの計算式はより複雑であり,主な考えは,価格の最高値,最低値,波動的な動向に基づいて平均を調整する平滑度である.

  3. ma_fastでma_slowを着るときはもっとする。これは,短期平均線が上昇し始め,長期平均線に勝って走行する,傾向の特徴に適合する。

  4. ma_slowでma_fastを突破したり,FRAMAで閉店価格を突破したりする際に平仓する。これはトレンドの逆転信号を示す。

優位分析

  1. 双均線システムと自己適応均線システムの組み合わせの優点。双均線システムはトレンドを捉えるのに優れ,自己適応均線システムは,より良く波の騒音をフィルターすることができる。

  2. FRAMA指標は,人工的に選択されたパラメータの主観性を避けるため,パラメータを自動的に調整できます.

  3. 2つの退出シグナルが同時に使用され,トレンドの逆転をタイムリーに捉えることができます.

リスク分析

  1. 双均線交差点の誤位置が起こり,中断的な損失が生じることがあります.

  2. 移動平均に適応すると,戦略のパラメータが増加し,過度に最適化される可能性があります.

  3. 価格のみを考慮し,取引量に合わせてフィルターを付けずに,機会を逃す可能性があります.

最適化の方向

  1. 異なる周期の均線組合せをテストして,最適なパラメータを探せます.

  2. 取引量の確認を添加して,無効信号を避ける.例えば,取引量の急増の条件を増加させる.

  3. ポジション開設とポジション条件を最適化して,戦略をより安定させることができる.例えば,継続形状の突破時にのみポジションを開く.

要約する

この戦略は双均線交差とFRAMA自適応均線を組み合わせ,動的にパラメータを調整することで,市場環境に自動的に適応する.双均線はトレンドを捉えるのに優れているが,FRAMAはノイズをフィルムすることができます.同時に2つの平仓信号を使用することで,戦略をより安定的にします.次のステップは,パラメータをさらに最適化し,交付量確認を加え,戦略をより完善化することができます.

ストラテジーソースコード
/*backtest
start: 2023-01-14 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
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())