エラーズストカスティック・サイバー・サイクルの戦略

作者: リン・ハーンチャオチャン開催日:2024年01月17日16時03分30秒
タグ:

img

概要

エーラーズストカスティック・サイバー・サイクルの戦略は,エーラーズストカスティック・サイクルの指標を使用して取引信号を生成する定量的な取引戦略である.この戦略は,ストカスティック・インディケーターとサイクルのインディケーターの利点を組み合わせ,市場の周期的な機会を把握することを目的としている.

戦略の論理

この戦略では,まずスムーズサイクルの指標を構築し,その指標に基づいてストキャスト指標値を構築する.取引シグナル生成は,このストキャスト指標値の移動平均線のクロスオーバーによって決定される.

具体的には,平滑サイクル指標は以下のように計算されます.

smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6

この指標は,現在の価格と前回の3つの時間の価格を組み合わせて,円滑なサイクル信号を構築します.

この滑らかな指標に基づいて,ストカスティックサイクルのサイクルを計算できます.

cycle := (1 - .5 * alpha) * (1 - .5 * alpha) *  
           (smooth - 2 * smooth[1] + smooth[2]) +  
           2 * (1 - alpha) * cycle[1] -  
           (1 - alpha) * (1 - alpha) * cycle[2]

この計算式には,平滑周期信号の二次順位差と前2サイクルの値が含まれています. αは,新しい周期値と古い周期値の重さを調整する平滑因数です.

最後に,このサイクルの指標に基づいて0-100のランダム値値1が計算され,シグナル値信号は10日間の移動平均値1に基づいて構築されます.シグナルの移動平均線が上下を横断するときに取引信号が発行されます.

戦略 の 利点

この戦略は,ストカスティック指標とサイクルの指標を組み合わせて,両方の利点を統合します.移動平均値などの単純なトレンド戦略と比較して,この戦略はサイクリック機会をよりうまく把握し,より良い結果を達成することができます.

主な利点は以下の通りです.

  1. サイクル指標は周期的なパターンを特定し,ストカストティック指標は取引機会を提供します
  2. 二重表示装置の設計は,誤った信号を効果的にフィルターすることができます.
  3. 調整可能なパラメータは,異なる市場環境に適しています.

戦略 の リスク

この戦略の主なリスクは,

  1. パラメータの設定が正しくない場合,取引が頻繁になり,取引コストやスライプコストが増加する可能性があります.
  2. 大幅な損失を招く可能性がある激烈な価格変動の市場を効果的に処理できない
  3. サイクルの指標は,曲線のフィッティングに大きく依存しており,不適切なフィッティングは間違った信号を生成する可能性があります

パラメータ設定を最適化し,ストップ・ロストポイントを設定し,他のフィルタリング指標を組み合わせることでリスクを制御できます.

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

この戦略は,次の側面でも最適化できます.

  1. 偽信号を減らすために,ボリンジャー帯,RSIなど,シグナルフィルタリングのための他の技術指標と組み合わせる.
  2. 適応可能な退出メカニズムを追加し,市場の変動に応じてストップ・ロスのポイントを動的に調整します
  3. 機械学習方法を使用して,パラメータを自動的に最適化し,市場に動的に適応します
  4. リベアリング,複合金等を通じて資本利用を最適化する

結論

エーラーズのストカスティック・サイバー・サイクルの戦略は,リスクを効果的に制御するための二重信号設計を通じてストカスティック・サイクルの指標の利点を統合し,強いサイクリティのある市場で良い収益を達成することができます.さらなる最適化により,この戦略は推奨する価値のある定量的な取引戦略になり得ます.


/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ehlers Stochastic Cyber Cycle Strategy",overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 1, commission_type = strategy.commission.percent, commission_value = 0.1)
src = input(hl2, title = "Source") 
alpha = input(.07, title = "Alpha")
lag = input(9, title = "Lag")
smooth = (src + 2 * src[1] + 2 * src[2] + src[3]) / 6
len = input(8, title = "Stochastic len")
cycle = na
if na(cycle[7])
    cycle := (src - 2 * src[1] + src[2]) / 4
else
    cycle := (1 - .5 * alpha) * (1 - .5 * alpha) * (smooth - 2 * smooth[1] + smooth[2]) + 2 * (1 - alpha) * cycle[1] - (1 - alpha) * (1 - alpha) * cycle[2]

value1 = stoch(cycle, cycle, cycle, len) / 100
value2 = 2 * ((4 * value1 + 3 * value1[1] + 2 * value1[2] + value1[3]) / 10 - 0.5)

signal = value2
oppositeTrade = input(true)
barsSinceEntry = 0
barsSinceEntry := nz(barsSinceEntry[1]) + 1
if strategy.position_size == 0
    barsSinceEntry := 0
if (crossover(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossunder(signal, signal[1]))
    strategy.entry("Long", strategy.long)
    barsSinceEntry := 0
if (crossunder(signal, signal[1]) and not oppositeTrade) or (oppositeTrade and crossover(signal, signal[1]))
    strategy.entry("Short", strategy.short)
    barsSinceEntry := 0
if strategy.openprofit < 0 and barsSinceEntry > 8
    strategy.close_all()
    barsSinceEntry := 0
    
    
plot(0, title="ZeroLine", color=gray) 
plotSrc = signal
cyclePlot = plot(plotSrc, title = "CyberCycle", color = blue)
triggerPlot = plot(plotSrc[1], title = "Trigger", color = green)
fill(cyclePlot, triggerPlot, color = plotSrc < plotSrc[1] ? red : lime, transp = 50)

もっと