軌道平均振幅に基づくマルチタイムIGKEIT取引戦略


作成日: 2023-11-24 17:29:39 最終変更日: 2023-11-24 17:29:39
コピー: 2 クリック数: 586
1
フォロー
1617
フォロワー

軌道平均振幅に基づくマルチタイムIGKEIT取引戦略

概要

この戦略は,軌道平均振幅に基づく多時間取引戦略と呼ばれています.その主な考えは,粒子と価格の間の平均振幅に基づいて,価格軌道に適合する粒子を導入することによって取引信号を構築することです.

戦略原則

この戦略は,まず,価格軌道に適合する粒子を定義する. この粒子は重力と慣性の影響を受け,その運動軌道は価格の振動に左右される. そして,粒子と価格の平均偏差距離を計算し,それにより上下軌道を構築する. 価格が上下軌道に突入するときに,取引信号を発する.

具体的には,策略で定義された粒子位置公式は:

pos:=if pos<close 
     nz(pos[1])+grav+traj  
else 
     nz(pos[1])-(grav)+traj

ここにgrav粒子に重力を加えることで 価格に近づけますtraj慣性項を代表し,粒子が運動傾向を維持する.この2つの組み合わせは粒子が価格の周りに振動する.

価格と粒子の平均偏差の距離を計算します.avgdist道路の建設には,

bbl=pos-sma(avgdist,varb) 
bbh=pos+sma(avgdist,varb)

最後に,価格が上線より高く,下線より低い場合は空きをする.

戦略的優位性

移動平均策には,従来の移動平均策と比べて,以下の利点があります.

  1. 粒子軌道を利用して価格の変動を模倣する.
  2. 上下軌道は,歴史平均の振幅に基づいて自律的に調整され,突破を捕捉するのに役立ちます.
  3. 複数のタイムフレームを設計し,高低タイムフレームを切り替え,より多くの取引機会を捉えることができます.

戦略リスク

この戦略にはいくつかのリスクがあります.

  1. 粒子運動パラメータの不適切な設定は,偽信号または欠陥信号を引き起こす可能性があります.
  2. 複数の時間枠を切り替えるときに信号の衝突が起こる可能性があります.
  3. 軌道上下信号を突破すると,停止の危険が増加する可能性がある.

対応するリスク管理策には,偽信号を減らすためにパラメータを最適化し,明確な時間枠の選択時のルールを定義し,適切な停止位置を設定するなどが含まれます.

戦略最適化の方向性

この戦略は以下の点で最適化できます.

  1. 粒子運動に関するパラメータを最適化し,価格の軌道を調整する.
  2. タイムフレームの層数を増加させ,信号をより上級なタイムフレームで確認する.
  3. 市場が激しく波動する時にシグナルを生成しないように,波動率指数判断に加入する.
  4. ストップ・ロスの戦略を最適化し,単発ストップ・ロスを減らす.

要約する

この策略は,価格軌道の適合を導入することによって,移動平均策略を改良し,パラメータ自在化,多時間枠,ストップ損失最適化などの特性を有する.その鍵は,適切な粒子の運動方程式を見つけ,価格を模擬することにある.さらにテストと最適化が必要であるにもかかわらず,基本的な考え方は実行可能であり,さらなる研究に値する.

ストラテジーソースコード
/*backtest
start: 2022-11-17 00:00:00
end: 2023-11-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//2 revert
strategy("Jomy's Gyroscopic Bands",precision=8,commission_value=.03,overlay=true,initial_capital =10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100,  pyramiding=0)//,calc_on_order_fills= true, calc_on_every_tick=false) 
leverage=input(1,"leverage")
a=0
a:= if volume > -1
    nz(a[1])+1
else
    nz(a)
    
vara=input(4.0,"variable a (10 to the power of __ ",step=.5)
vara:=pow(10,vara)
varb=input(12,"variable b")
pos=0.0
pos:=if a<=5
    close
else
    nz(pos[1])
grav=1/sqrt((close*close))*vara
traj=0.0
traj:=(nz(close[1])-nz(close[2])+nz(traj[1])*varb)/(varb+1)
pos:=if pos<close
    nz(pos[1])+grav+traj
else
    nz(pos[1])-(grav)+traj

plot(pos,color=color.white)
plot(close)

avgdist=abs(close-pos)
bbl=pos-sma(avgdist,varb)
bbh=pos+sma(avgdist,varb)

plbbh=plot(bbh,color=color.red)
plbbl=plot(bbl,color=color.red)

long = close>pos
short = close<pos

fill(plbbh,plbbl,color=long?color.lime:color.red)
//bgcolor(close>bbh?color.lime:close<bbl?color.red:na,transp=90)

strategy.entry("Long1",strategy.long,when=long,qty=(strategy.equity*leverage/open)) 
strategy.close("Long1",when=not long)
strategy.entry("Short1",strategy.short,when=short,qty=(strategy.equity*leverage/open)) 
strategy.close("Short1",when=not short)


//plot(strategy.equity,color=color.lime,linewidth=4)