指数平滑法ストキャスティクス指標アノマリー戦略


作成日: 2024-01-18 15:53:41 最終変更日: 2024-01-18 15:53:41
コピー: 0 クリック数: 646
1
フォロー
1617
フォロワー

指数平滑法ストキャスティクス指標アノマリー戦略

概要

指数平滑ランダム指数異動戦略は,従来のランダム指数の基礎に,指数重量参数を加え,ランダム指数の感性を調整して取引信号を生成する.指数が超買区から反転したときには多し,超売区から反転したときには空になる.この戦略を最適化すると,非常に安定したトレンド追跡戦略になることができる.

戦略原則

指数平滑ランダム指数異動策の核心は,指数重量参数exである.従来のランダム指数の計算式は:

s=100 * (close - 最低价) / (最高价 - 最低价) 

指数関数を追加すると,計算式は次のようになります.

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

s=100 * (close - 最低价) / (最高价 - 最低价)

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の値を調整すると,sksに対する影響力が変化し,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))