複数のタイムフレームストーカスティック・クロスオーバー戦略

作者: リン・ハーンチャオチャン開催日:2023年10月24日 14:44:00
タグ:

img

概要

マルチタイムフレームストーカスティッククロスオーバー戦略は,典型的なトレンドフォロー戦略である.それは異なるタイムフレーム (例えば,日,週,月,など) の標準偏差値を計算し,複数のKとDラインを構築し,これらのラインの平均を移動平均を構築するために取り,高速線がスローラインを越えると長行し,高速線がスローラインを下回ると短行する.複数のタイムフレームに標準偏差ラインを組み合わせることで,この戦略は効果的に市場のノイズをフィルタリングし,支配的なトレンドを捉える.

戦略の論理

この戦略の基本的な論理は,複数のタイムフレームで標準偏差を計算し,その後平均を取って取引信号を生成することです.

まず,この戦略は,日,週,月間の時間枠に対応する5つのグループにおける異なるパラメータで標準偏差のK値を計算します.

smoothK = input(55)
SMAsmoothK = input(13)  
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)

smoothK1 = input(89) 
SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1) 

...

smoothK4 = input(377)
SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)

異なるパラメータを計算します

smoothD = input(34)
d = sma(k, smoothD)  

...

smoothD4 = input(233) 
d4 = sma(k4, smoothD4)

次に,KとD線の平均を計算し,高速線 Kavgと遅い線 Davg を得ます.

Kavg = avg(k,k1,k2,k3,k4)
Davg = avg(d,d1,d2,d3,d4)

最後に,Kavg が Davg の上を横切ると長くなって,Kavg が Davg の下を横切ると短くなります:

long = crossover(Kavg, Davg)  
short = crossunder(Kavg, Davg)

この戦略は,複数の時間枠に標準偏差線を組み合わせることで,より大きな時間枠で市場のノイズをフィルタリングし,支配的なトレンド方向を把握することができます.

利点

  • 複数のタイムフレームにおける標準偏差の予測力を活用し,ノイズをフィルタリングし,トレンドを把握します
  • 時間枠のパラメータを調整することによって保持期間を調整する柔軟性
  • 標準偏差そのものは,次の特徴に強い傾向があります.
  • 移動平均のクロスオーバーは,単一の偽のブレイクによって誤導されるのを避ける
  • 安定性のために移動平均期を最適化するのが簡単です

リスク と 解決策

  • 複数のタイムフレーム移動平均のクロスオーバーは多くの偽信号を生成し,移動平均期間を最適化することができます
  • 標準偏差は変動動向によるエラーに易く,フィルターを追加することを検討する
  • 固定期間が市場の変化に適応できないので,適応期間を採用します
  • 長期保持期間は上下を追うリスクで,利益を固定するために後退停止を使用します
  • KDJ指標だけに依存することは制限されます.他の指標と組み合わせます.

解決策:

  1. 偽の突破信号を避けるためにフィルターを追加します.

  2. 市場変動に基づく適応期間を使用する

  3. トレーリングストップを活用して取引をタイムリー終了します

  4. 最適なバランスを確保するために移動平均期を最適化

  5. 安定性を高めるためにより多くの指標を組み込む

増進 の 機会

この戦略は,次の分野においてさらに改善することができる.

  1. 信号の質を改善するために,MACD,ボリンジャーバンドなどの他の指標信号を組み込む

  2. 逆トレンド取引を避けるために,SMA方向,ADXなどのトレンドフィルターを追加します.

  3. 市場変動に基づいて適応期間を利用する

  4. トレーリングストップを戦略パラメータに基づいて実行する

  5. 最適なパラメータのために,高速と遅い移動平均期を最適化

  6. 短期間のノイズからの誤った信号を避けるために入力フィルターを追加します.

  7. 移動平均値のクロスオーバー後の試験突破エントリ

  8. 出口を最適化するためにチェンデリア出口のような異なる出口戦略を評価します

結論

マルチタイムフレームストーカスティッククロスオーバー戦略は,ストーカスティック指標のトレンドフォロー能力と移動平均戦略の安定性を組み合わせます.複数の期間の標準偏差K線とD線の平均を取って信号を生成することで,異なるタイムフレームの標準偏差の予測力を効果的に活用し,市場のノイズをフィルタリングし,支配的なトレンドを捕捉します.この戦略にはパラメータチューニングやフィルター,ストップなどのさらなる強化の余地があります.全体として,複数の技術分析ツールの強みを統合し,調査と最適化に値する効率的なトレンドフォロー戦略です.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="Slow Stochastic Multi K&D Average Crossover Strategy", overlay=false, pyramiding=0, calc_on_order_fills=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100)


price = input(close)

///////////////////////////////
smoothK = input(55) 

SMAsmoothK = input(13)
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)



smoothD = input(34)
d = sma(k, smoothD)


///////////////////////////

smoothK1 = input(89) 

SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1)

smoothD1 = input(55)
d1 = sma(k1, smoothD1)

//////////////////////////////////////

smoothK2 = input(144) 

SMAsmoothK2 = input(5)
k2 = sma(stoch(price, high, low, smoothK2), SMAsmoothK2)

smoothD2 = input(89)
d2 = sma(k2, smoothD2)

/////////////////////////////////////

smoothK3 = input(233) 

SMAsmoothK3 = input(3)
k3 = sma(stoch(price, high, low, smoothK3), SMAsmoothK3)

smoothD3 = input(144)
d3 = sma(k3, smoothD3)

////////////////////////////////////////////////

smoothK4 = input(377) 

SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)

smoothD4 = input(233)
d4 = sma(k4, smoothD4)

/////////////////////////////////////////////////

Kavg = avg(k,k1,k2,k3,k4, k4)
plot(Kavg, color=green)

Davg = avg(d,d1,d2,d3,d4, d4)
plot(Davg, color=red)


///////////////////////////////////////
hline(50, color=gray)


long = crossover(Kavg, Davg)// and d < 50
short = crossunder(Kavg, Davg)// and d > 50


last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short) 
short_signal = crossover(last_short, last_long)



strategy.entry("Long", strategy.long, when=long_signal)
strategy.entry("Short", strategy.short, when=short_signal) 

//len1 = input(3)

//closelong = d[1] < k[len1]
//closeshort = d[1] > k[len1]

//strategy.close("Long", when=closelong)
//strategy.close("Short", when=closeshort)



もっと