複数の指標を組み合わせた取引戦略


作成日: 2023-10-26 15:22:28 最終変更日: 2023-10-26 15:22:28
コピー: 0 クリック数: 693
1
フォロー
1617
フォロワー

複数の指標を組み合わせた取引戦略

概要

この戦略は,CCI,ADX,AOの3つの指標を組み合わせて多空判断を実現し,取引信号を生成する.CCIは,市場が過買過売かどうかを判断するために使用され,ADXはトレンド方向を判断するために使用され,AOは,震動市場を決定するのに役立つ.複数の指標の組み合わせは,取引システムの安定性と効率性を向上させることができる.

戦略原則

  1. CCI指標は,市場が過買過売であるかどうかを判断するために使用される.CCIが-100未満であるときは過売であり,100以上であるときは過買である.CCIが0未満である場合は,この戦略が多すぎる.

  2. ADXはトレンドの強さを判断する指標である。DI+は上昇トレンドの強さを,DI-は下落トレンドの強さを意味する。ADXは平均トレンドの強さを意味する。この戦略はDI+が25を下回ったときに多く行う。

  3. AO指数は多空運動力を判断する。AOは,高速SMA減慢速SMAから構成されている。AOの上昇は,現在の多頭力の増強を表し,AOの低下は空頭力の増強を表している。この戦略は,AOが0未満であるときに多行する。

  4. 上記の複数の指標を統合して,取引戦略を形成します.CCI < 0でDI+ < 25でAO < 0で多めに;DI+ > 25で平仓.

  5. ダイナミック計算 注文数 口座権益 割る クローズ 価格と 引き直し, 口座権益の変化に調整された注文数を実現する。

  6. strategy.entryで複数のシグナルを発信し,strategy.closeで平仓のシグナルを発信する.

優位分析

  1. CCIは,超買いと超売りを判断するために使用され,波動的な状況から来る偽信号を効果的にフィルターすることができます.

  2. ADX指標は,トレンドの存在と強さを判断し,より強いトレンド信号を捉えることができる.

  3. AO指標はトレンドの熱さと動力を判断し,波動的な状況で取引を避けるのに役立ちます.

  4. 複数の指標の組み合わせにより,相互に信号を検証し,信号の信頼性を高め,偽信号を効果的に減らすことができる.

  5. ダイナミックな計算の注文数は,口座の権利利害の変化に合わせてポジションの規模を調整することができ,資金管理の意識が強い.

  6. 戦略の論理は明確でシンプルで,理解し,追跡しやすい.

リスク分析

  1. CCI指標はvsdkの振動動態を認識する能力が弱く,誤った信号を発生させる可能性がある.

  2. ADXは後退しており,トレンドの転換点を逃している可能性がある.

  3. AO指数は曲折収算の判断に悪影響を与える.

  4. 複数の指標の組み合わせは,信号の信頼性を向上させるが,指標の設定が不適切である場合,過度のフィルタリングにより,誤った取引機会を引き起こす可能性があります.

  5. DYNAMICAORは市場の変動に関連しており,異なる品種と市場環境に応じてパラメータを調整する必要があります.

  6. 戦略的撤退は大きく,リスクをコントロールするために厳格な資金管理が必要です.

最適化の方向

  1. CCIパラメータを最適化して,異なる市場における超買超売領域を識別する.

  2. ADXパラメータを最適化して,異なる品種と市場環境におけるトレンド変換を捉える.

  3. AOパラメータを調整して,異なる波動環境下での実際のトレンドを識別する.

  4. 異なる指標の重量組み合わせをテストし,最適なパラメータを探します.

  5. 撤退を制御するストップダスト戦略を追加する.

  6. 取引量指数と組み合わせて,偽の突破を避ける.

  7. 固定ポジションを異なる品種特性に合わせて調整する.

要約する

この戦略は,CCI,ADX,AOの3つの指標の組み合わせによって,比較的に信頼性の高い多行シグナルを形成する.同時に,動的に計算された注文数とポジション管理を組み合わせて,リスクを効果的に制御することができる.戦略の理念は,シンプルで明確で,容易に理解し,初心者の追跡学習に適している.しかし,この戦略は,震動の動きの認識能力が弱い,最適化の余地はまだ十分であり,異なる品種と市場環境に適応するためにさらなるテスト調整が必要である.

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

//@version=3
strategy("Strategy Niel", shorttitle="Strategy Niel", max_bars_back=2000, initial_capital=1000)

//Input variables
buywhenadxabove = input(25)
buywhendiplusbelow = input(10)
buywhenccibelow = input(0)
buywhenawesomeoscillatorbelow = input(0)
sellwhendiplusabove = input(25)

//CCI script
numberofbarsforcci = input(20)
CCI = cci(close,numberofbarsforcci)

//+DI and ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) => 
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

//plot(sig, color=red, title="ADX")
//plot(up, color=blue, title="+DI")
//plot(down, color=orange, title="-DI")


//Awesome Oscillator
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
cClr = xSMA1_SMA2 > xSMA1_SMA2[1] ? blue : red
//plot(xSMA1_SMA2, style=histogram, linewidth=1, color=cClr)

buy = sig > buywhenadxabove and up < buywhendiplusbelow  and CCI < buywhenccibelow and xSMA1_SMA2 < buywhenawesomeoscillatorbelow 

ordersize=floor(strategy.equity/close) // Floor returns largest integer, strategy.equity gives total equity remaining - allows to dynamically calculate the order size as the account equity increases or decreases.
strategy.entry("long",strategy.long,ordersize,when= buy) //strategy.entry let's you enter the market variables id ("long"), strategy.long (long position entry), size of the order and when the order should happen
bought = strategy.position_size[0] > strategy.position_size[1]
entry_price = valuewhen(bought, open, 0)
sell = up > sellwhendiplusabove 
strategy.close("long", when=sell ) //strategy.close let's you close your position with variables id ('long') and when this should happen