指数関数式スムーズストカスティックオシレーター戦略

作者: リン・ハーンチャオチャン開催日:2024年1月18日 15:53:41
タグ:

img

概要

指数式スムーズストコスタスティックオシレーター戦略は,指数式の敏感性を調整し,取引信号を生成するために指数式重量パラメータを追加することによって,伝統的なストコスタスティック指標の修正バージョンである.指数が過剰購入レベルから横切ったとき長くなって,指数が過剰販売レベルから下を通ったとき短くなってしまいます.最適化された戦略は,トレンドに従う非常に安定した戦略になり得ます.

戦略の論理

指数式スムーズストカスティック戦略の核心は指数式重量パラメータである.従来のストカスティックは以下のように計算される:

s = 100 * (close - lowest low) / (highest high - lowest low)

式は次のようになります

exp = ex<10? (ex)/(10-ex) : 99   

s = 100 * (close - lowest low) / (highest high - lowest low)  

ks = s>50? math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50   
       :-math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50  

exp を調整することで,s が k に及ぼす影響は変更できる.exp を増加させるとインジケーターがより敏感になり,exp を減少させるとより敏感になる.

ks が過買いレベルから越えるときに買い信号が生成される. ks が過売りレベルから下を越えるときに売り信号が生成される.

利点

従来のストキャスティック戦略と比較して,指数式スムーズストキャスティックオシレーター戦略は以下の利点があります.

  1. ストカスティックの感度は,取引頻度を制御するために指数重量を変更することによって自由に調整できます.
  2. 増加した指数関数重量はノイズをフィルタリングして より安定した取引信号を生成します
  3. 異なるタイムフレームからの指標を組み合わせることで,複数のタイムフレームの確認が得られ,信号の信頼性が向上します.

リスク

また,指数式スムーズストカスティックオシレーター戦略には以下のリスクがあります.

  1. 過剰なシグナルフィルタリングにより,過剰な指数関数重量により,いくつかの取引機会が逃れることがあります.
  2. インジケーターは騒音や誤ったクロスオーバーに易くなります.信頼性の高いクロスオーバー信号を確保するためにパラメータを調整する必要があります.
  3. 異なる市場に対して最適なパラメータ範囲を特定する必要がある.パラメータの設定が正しくない場合,戦略のパフォーマンスに影響を与える可能性があります.

強化 分野

指数関数式スムーズストカスティックオシレーター戦略は,次の側面から最適化することができる:

  1. MACDや移動平均値などの他の指標と組み合わせることで フィルター信号をフィルタリングし 誤った信号を減らすことができます
  2. リスクを効果的にコントロールするためにストップ・ロスのメカニズムを追加します.
  3. 最適なパラメータ組み合わせを見つけるために指数的な重量パラメータを最適化します.異なるパラメータは異なる市場で使用できます.
  4. 季節指標や市場構造指標と組み合わせて 安定性をさらに高めます

結論

ストーカスティック・オシレーター戦略は,ストーカスティック・インディケーターの感度調整によりより信頼性の高い取引信号を生成する.中長期トレンドを効果的に追跡することができ,短期戦略にも最適化することができる.さらなる構成性とパラメータ最適化により,より一貫した収益性を得る可能性がある.


/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © faytterro

//@version=5
strategy("Exponential Stochastic Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
len=input.int(14, "length") 
ex=input.int(2, title="exp", minval=1, maxval=10)
exp= ex<10? (ex)/(10-ex) : 99
s=100 * (close - ta.lowest(low, len)) / (ta.highest(high, len) - ta.lowest(low, len))
ks=s>50? math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50 :
 -math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50
plot(ks, color= color.white)
bot=input.int(20)
top=input.int(80)
longCondition = ta.crossover(ks, bot) and bar_index>0
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = ta.crossunder(ks, top) and bar_index>0
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)
//    strategy.close("My Long Entry Id")
alertcondition(longCondition, title = "buy")
alertcondition(shortCondition, title = "sell")
h1=hline(top)
h2=hline(bot)
h3=hline(100)
h4=hline(0)
fill(h1,h3, color= color.rgb(255,0,0,200-top*2))
fill(h2,h4, color= color.rgb(0,255,0,bot*2))

もっと