KDJ RSI クロスオーバー 買い売るシグナル戦略

作者: リン・ハーンチャオチャン,日付: 2023年11月27日 10:57:16
タグ:

img

概要

この戦略は,KDJインジケーターとRSIインジケーターを組み合わせて,購入と売却のタイミングを決定します.KDJインジケーターとRSIインジケーターが購入/売却のシグナルを発行したとき,取引信号を生成します.

戦略原則

この戦略は,KDJ指標とRSI指標のクロスオーバーを用いて,購入と売却のタイミングを判断する.

具体的には,KDJのJ線がK線の上を下から上へと横切ると,それは買い信号とみなされます.そしてJ線がK線下を上から下へと横切ると,それは売り信号です.これは,株が過売れから過買いに変わるときに買い,過買いから過売れに変わるときに売りという意味です.

同時,戦略は信号の強さを判断するためにRSIインジケーターを組み込む.RSIが30未満は過売れ,RSIが70を超えると過買いである.KDJが購入信号を発行すると,RSIインジケーターが過売れを示しても,購入信号の信頼性が向上する.逆に,KDJが販売信号を発行すると,RSIが過買いを示しても,販売信号の信頼性が向上する.

この戦略は,以下のような状況で取引信号を生成します.

購入信号:

  1. KDJのJ線がK線とRSIの上に横切る (6) < RSIの"2
  2. KDJのJ線がK線上を横切る そしてRSI(6) がRSI上を横切る
  3. RSI (※6) は RSI (※24) と RSI (※6) < 40 を横切る

売り信号:

  1. KDJのJ線がK線とRSIの下に交差する (6) >RSIの"2
  2. KDJのJ線がK線以下を横切る AND RSI(6) RSI以下を横切る(24)
  3. RSI (※6) は RSI (※24) と RSI (※6) > 60 を切る

利点

  1. KDJインジケーターとRSIインジケーターを組み合わせることで,取引シグナルがより信頼性が高まります.

  2. KDJ指標は過買い/過売り状態を判断し,RSI指標は強さを判断します.両方を組み合わせることで,ターニングポイントをよりよく把握できます.

  3. 複数の購入/売却条件は,単一の指標による理由による機会の逃れを回避する.

  4. RSI パラメータは 6,12 と 24 期間に設定されており,異なるサイクルレベルに適しており,戦略をより汎用化しています.

リスク分析

  1. KDJとRSIの両方の指標は 間違った信号を与え,不必要な取引につながる可能性があります.

  2. 多様な取引条件により戦略操作の複雑性が高まり,慎重に検証する必要がある.

  3. 戦略は様々な市場でテストされ 最適化され パラメータは調整されなければなりません

改善 の 方向

  1. 取引信号を強化するためにボリンジャー帯のような他の指標を追加します

  2. KDJとRSIのパラメータを最適化して,異なるサイクルレベルに適合させる.

  3. リスクをコントロールするためにストップ・ロスの基準を高めること

  4. 価格が逆転するときに損失を止めるための自動ストップロスのメカニズムを追加します.

結論

この戦略は,KDJ指標とRSI指標の利点を組み合わせ,両指標のクロスオーバーを使用して購入と売却のタイミングを決定し,取引シグナルの正確性を向上させる.異なるパラメータを持つRSI指標を使用することで,戦略もより汎用化される.この戦略は,単一の指標で発生する偽信号のリスクを効果的に回避する.パラメータを改善し,補助指標,ストップ損失メカニズムなどを追加することで,この戦略のパフォーマンスをさらに向上させることができる.


/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 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/
// © innocentChart76064

//@version=5
strategy(title = "buy/sell KDJ RSI", overlay=true)

//Define KDJ parameter
kdj_length = input(9, title = "KDJ length")
signal = input(3,title="signal")

// Calculate KDJ values
bcwsma(s,l,m) => 
    _bcwsma = float(na)
    _s = s
    _l = l
    _m = m
    _bcwsma := (_m*_s+(_l-_m)*nz(_bcwsma[1]))/_l
    _bcwsma

c = close
h = ta.highest(high, kdj_length)
l = ta.lowest(low,kdj_length)
RSV = 100*((c-l)/(h-l))
kdj_k = bcwsma(RSV, signal, 1)
kdj_d = bcwsma(kdj_k, signal, 1)
kdj_j = 3 * kdj_k-2 * kdj_d

//Define RSI parameter 
rsi_length_1 = input(6)
rsi_length_2 = input(12)
rsi_length_3 = input(24)
price = close 

//Calculate RSI values
rsi_1 = ta.rsi(price, rsi_length_1)
rsi_2 = ta.rsi(price, rsi_length_2)
rsi_3 = ta.rsi(price, rsi_length_3)

// Trading conditions
longCondition = ta.crossover(kdj_j,kdj_k) and rsi_1 > rsi_2 or ta.crossover(kdj_j,kdj_k) and ta.crossover(rsi_1,rsi_3) or ta.crossover(rsi_1,rsi_3) and rsi_1<40
shortCondition = ta.crossunder(kdj_j,kdj_k) and rsi_1 < rsi_2 or ta.crossunder(kdj_j,kdj_k) and ta.crossunder(rsi_1,rsi_3) or ta.crossunder(rsi_1,rsi_3) and rsi_1>60
// Enter long trade
strategy.entry("Long", strategy.long, when=longCondition)

// Enter short trade
strategy.entry("Short", strategy.short, when=shortCondition)


もっと