資源の読み込みに... 荷物...

双重ストカスティックオシレーター戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-17 18:26:16
タグ:

概要

この戦略は,異なるパラメータを持つ2つのストカスティックオシレーターを使用して,牛/熊条件を決定する.これは典型的な移動平均クロスオーバーシステムである.より速いオシレーターは短期的なトレンドとエントリー信号を判断し,遅いものは全体的なトレンド方向性を確認する.信号は組み合わせから生成される.

戦略の論理

  1. 速 %K は短期的なトレンド方向を示します.%K がスムーズライン SM1 を横断すると入口信号が生成されます.

  2. スロー %K は全体的なトレンド条件を反映します.高速振動器が逆転信号を出したとき,トレンドの有効性についてスロー振動器を確認します.

  3. SM1 の上の%K の高速クロスオーバーは上昇信号を示します.50 の下の%K の遅さは上昇傾向であり,ロング条件を満たします.

  4. SM1を下回る%Kの高速クロスオーバーは下落シグナルを示します.50を下回る%Kの遅さは下落傾向であり,ショート条件を満たします.

  5. 利益とストップロスのポイントを固定した割合で設定します

利点分析

  1. 双重ストカスティックフィルターは 騒音をフィルターし 精度を向上させます 速くゆっくりと組み合わせることで 閉じ込められるリスクが減ります

  2. SM1パラメータが小さいので,短期的な機会を捉えるのに %K が敏感になります.

  3. 長いサイクルは全体的なトレンドを判断し,短いサイクルは逆転を記録します. 双重の長/短戦略はほとんどの市場環境に適しています.

  4. 固定利益とストップ・ロスのポイントにより リスクは大きな変動なく 制御できます

リスク分析

  1. インディケーター間の差異は,見逃した取引や間違った信号を引き起こす可能性があります.

  2. 固定利益採取とストップ・ロスは 市場への適応に柔軟性がない.

  3. ストカスト的パラメータは 繰り返し最適化が必要で 不適切な設定は失敗につながる

  4. 短期取引による高い取引頻度は取引コストを増加させる.

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

  1. 信号の質を確保するために他の指標やフィルターを追加します.

  2. 最適な設定を見つけるために異なるパラメータの組み合わせをテストします

  3. 波動性対策を導入し,収益とストップ損失のレベルをダイナミックにする.

  4. 重要な出来事や不合理な価格変動を避けるために 時間のフィルターを使用します

  5. 資本の効率を向上させるために ポジションサイズなどの資本管理戦略を最適化します

概要

この戦略は,高速および遅いストキャストスティックオシレーターを二方向システムに統合する.さらなるパラメータ最適化およびトレンドおよび変動指標などのフィルターを追加することで改善することができます.適切なリスク制御により,この戦略は比較的安定した過剰収益を達成することができます.


/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Double Stochastic", overlay=true)

//-----------------------Stochastics------------------------//

c= security(syminfo.tickerid,timeframe.period , close)  
h= security(syminfo.tickerid, timeframe.period, high)  
l= security(syminfo.tickerid, timeframe.period, low)  

c1= security(syminfo.tickerid, timeframe.period, close)  
h2= security(syminfo.tickerid, timeframe.period, high)  
l1= security(syminfo.tickerid, timeframe.period, low)  

K1 = input(5, title="K", minval=1, title="Leading K")
SM1 = input(2, title="Smooth", minval=1, title="Leading Smooth ")
k = ema(stoch(c, h, l, K1), SM1)

K2 = input(97, title="K", minval=1, title="Lagging K")
D2 = input(3, title="D", minval=1, title="Lagging D")
SM2 = input(1, title="Smooth", minval=1, title="Lagging Smooth")
k1 = ema(stoch(c1, h2, l1, K2), SM2)

// buy ((k[2] < 40 and k > 40) and bars_up > 0 and k1 > 50) 
// sell (k[2] > 60 and k < 60) and bars_down > 0 and k1 < 50

//-----------------------Mechanics------------------------//

buy = k1 > 50 and k < 30 and k > k[1] ? 1 : 0
sell = k1 < 50 and k > 70 and k < k[1] ? 1 : 0

buy_val = valuewhen(buy == 1, close, 1)
sell_val = valuewhen(sell == 1, close, 1)

buy_close = buy_val * input(1.20, minval=0.1)
sell_close = sell_val / input(1.20, minval=0.1)

//------------------------Buy/Sell-------------------------//

longCondition = buy == 1
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

close_long = close >= buy_close
if (close_long)
    strategy.close("My Long Entry Id")
    
sellCondition = sell == 1
if (sellCondition)
    strategy.entry("My Short Entry Id", strategy.short)

close_short = close <= sell_close
if (close_short)
    strategy.close("My Short Entry Id")    

もっと