
この戦略は,OBVとCCIの指数に基づくトレンド追跡戦略である.これは,OBVの指数によって市場の傾向と資金の流れを判断し,CCIの指数を使用して波動をフィルターし,取引信号を生成する.OBVとCCIの指数が現在上昇傾向にあることを確認すると,多額の取引を行う.OBVとCCIの指数が現在下降傾向にあることを確認すると,空白を行う.
この戦略は主にOBVとCCIの2つの指標に依存している.OBV指標は市場の資金流動状況を反映することができる.OBVが緑であるときは,現行の資金流入の傾向を示している.OBVが赤であるときは,現行の資金流出の傾向を示している.CCI指標は波動をフィルターするために使用される.
入力シグナル判断において,前期OBV値が緑で ((資金流入) とCCIが値より高く ((多頭市場属) であると判断すると,OBV線上でそのEMA平均線を穿いて購入シグナルを生成する。
平仓シグナル判断では,前期OBV値が赤で (資金流出) CCIが値より低い場合 (空頭市場属) で,OBV線下はEMA平均線を貫通して,売り込みシグナルを生成する.
このように,OBVによって大方向を判断し,CCI指標は波し,両者は,EMA均線の金叉死叉を組み合わせて具体的な取引信号を生成し,トレンド追跡を実現する.
この戦略の利点は以下の通りです.
短期市場騒音から逃れるために,OBVを使って市場資金の流れとトレンドの方向性を判断する.
CCIのフィルタリングにより,取引信号の信頼性が向上します.
EMA均線金叉デッドフォークを使用し,高品質の具体的な取引信号ポイントを生成する.
規則は明確でシンプルで 分かりやすく実行できます
この戦略にはいくつかの潜在的リスクがあります.
OBVとCCIが誤信号を発する可能性;
取引信号が頻繁で 過剰に取引されやすい.
強制送還の際には刑務所に入れられる可能性もあります.
パラメータの設定を間違えた結果,戦略の効果が悪くなった.
これらのリスクは,最適化パラメータ,取引頻度の調整,ストップロスの設定,フィルターの使用などの方法によって制御および最適化することができます.
この戦略は以下の方向から最適化できます.
異なるパラメータが戦略の効果に与える影響を評価し,最適なパラメータの組み合わせを探します.
取引頻度制限を設け,過剰取引を避ける.
単一損失を抑えるために,損失防止機構を増やすこと.
信号の質を高めるために,他の指標フィルターを追加します.
取引信号の信頼性を高めるため,平和仓庫ロジックへのアクセスを最適化しました.
この戦略は,全体として基本的戦略であり,価格トレンドを効果的に追跡し,ノイズ干渉を避けることができる.しかし,一定のリスクも存在し,パラメータ最適化,ストップ・ロスの設定,取引頻度制御などの手段によって改善する必要がある.パラメータが科学的に選択された場合,反測効果は明らかに改善することができる.この戦略は,より高度な量化トレーダーの学習と実践に適している.
/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//author: SudeepBisht
//@version=3
strategy("SB_CCI coded OBV Strategy", overlay=true)
src = close
length = input(20, minval=1, title="CCI Length")
threshold=input(0, title="CCI threshold for OBV coding")
lengthema=input(13, title="EMA length")
obv(src) =>
cum(change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume)
o=obv(src)
c=cci(src, length)
col=c>=threshold?green:red
chk=col==green?1:0
ema_line=ema(o,lengthema)
//plot(o, color=c>=threshold?green:red, title="OBV_CCI coded", linewidth=2)
//plot(ema(o,lengthema), color=orange, linewidth=2)
if (not na(ema_line))
if (crossover(o, ema_line) and chk[1]==1)
strategy.entry("RsiLE", strategy.long, comment="RsiLE")
if (crossunder(o, ema_line) and chk[1]==0)
strategy.entry("RsiSE", strategy.short, comment="RsiSE")