ラゲールRSI取引戦略


作成日: 2023-12-19 14:04:46 最終変更日: 2023-12-19 14:04:46
コピー: 0 クリック数: 1317
1
フォロー
1621
フォロワー

ラゲールRSI取引戦略

概要

ラゲールRSI取引戦略は,ジョン・エヘルズのラゲールフィルターに基づくRSI指標である.この戦略は,RSI指標の滞りや滑り方を増やしたり減らすためにα係数を調整することで,RSI指標のノイズをフィルターして,より明確な買入シグナルを発信する.

戦略原則

この戦略の核心指標はラゲールRSIである.その計算式は次のとおりである.

L0 = (1-γ)*Src + γ*L0[1] L1 = -γ*L0 + L0[1] + γ*L1[1]
L2 = -γ*L1 + L1[1] + γ*L2[1] L3 = -γ*L2 + L2[1] + γ*L3[1]

ここでγ=1-α,αは調整可能な係数で,Srcは価格を表している。L0からL3は,推移関係を含む4つの指標である。これに基づいて,現在の上昇積分cuと下降積分cdを計算できる:

cu = (L0>L1 ? L0-L1 : 0) + (L1>L2 ? L1-L2 : 0) + (L2>L3 ? L2-L3 : 0) cd = (L0

グラフのRSIを cu と cd で計算する.

LaRSI = cu / (cu + cd)

ここで,RSIはRSIのトレンド認識能力を維持しながら,リケージフィルターの構造によって,大量のランダムなノイズをフィルターし,より鮮明でスムーズな取引信号を生成します.

特定の取引規則: ラガエルがRSI上20を打ったとき,多めに; ラガエルがRSI下80を打ったとき,空いてください.

優位分析

ラガエルのRSI戦略の主な利点は以下の通りです.

  1. ラゲールフィルター構造によってRSI指標のノイズを効率的にフィルターし,取引信号をより明確かつ信頼性のあるものにします.

  2. α係数の調整により,戦略のパラメータを柔軟に最適化し,より広範な市場環境に対応できます.

  3. RSIの長期有効性を維持し,フィルターで動態認識,トレンド統合,超買超売りを実現します.

  4. 戦略規則はシンプルで直感的で,簡単に実行でき,多種多様な市場環境でうまく機能します.

リスク分析

この戦略には以下のリスクがあります.

  1. α係数の不適切な設定は,過度の遅滞または過度のフィルタリング,価格の変化を逃す可能性があります.

  2. 波動の激しい市場では,頻繁に取引損失が発生する可能性があります.

  3. 長期にわたる牛市は,上昇の機会を逃しているかもしれない.

最適化の方向

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

  1. 機械学習アルゴリズムを使用してα係数を最適化する設定

  2. 損失を抑える仕組みを増やし,損失のリスクを減らす

  3. 他の指標と組み合わせた誤報信号のフィルタリング

  4. QEの拡大により,特定の段階での収益を固定する

要約する

ラガエルRSI戦略は,フィルターメカニズムによって,オーバーバイオーバーセルの状況を効果的に識別し,取引信号を発信しながら,騒音による干渉を避ける.この戦略は,シンプルで実用的で,パラメータの最適化スペースが広く,さまざまな市場環境に適応する能力があり,推奨される取引戦略である.

ストラテジーソースコード
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 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/
// © mertriver1
// Developer: John EHLERS
//@version=3
// Author:Kıvanç Özbilgiç
strategy("Laguerre RSI", shorttitle="LaRSI", overlay=false)
src = input(title="Source", defval=close)
alpha = input(title="Alpha", type=float, minval=0, maxval=1, step=0.1, defval=0.2)
colorchange = input(title="Change Color ?", type=bool, defval=false)

Date1      = input(true, title = "=== Date Backtesting ===")
FromDay1   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth1 = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear1  = input(defval = 2020, title = "From Year", minval = 2017)

ToDay1     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth1   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear1    = input(defval = 9999, title = "To Year", minval = 2017)

start1     = timestamp(FromYear1, FromMonth1, FromDay1, 00, 00) 
finish1    = timestamp(ToYear1, ToMonth1, ToDay1, 23, 59)        
window1()  => time >= start1 and time <= finish1 ? true : false

gamma=1-alpha
L0 = 0.0
L0 := (1-gamma) * src + gamma * nz(L0[1])
L1 = 0.0
L1 := -gamma * L0 + nz(L0[1]) + gamma * nz(L1[1])

L2 = 0.0
L2 := -gamma * L1 + nz(L1[1]) + gamma * nz(L2[1])

L3 = 0.0
L3 := -gamma * L2 + nz(L2[1]) + gamma * nz(L3[1])

cu= (L0>L1 ? L0-L1 : 0) + (L1>L2 ? L1-L2 : 0) + (L2>L3 ? L2-L3 : 0)

cd= (L0<L1 ? L1-L0 : 0) + (L1<L2 ? L2-L1 : 0) + (L2<L3 ? L3-L2 : 0)

temp= cu+cd==0 ? -1 : cu+cd
LaRSI=temp==-1 ? 0 : cu/temp

Color = colorchange ? (LaRSI > LaRSI[1] ? green : red) : blue
plot(100*LaRSI, title="LaRSI", linewidth=2, color=Color, transp=0)
plot(20,linewidth=1, color=maroon, transp=0)
plot(80,linewidth=1, color=maroon, transp=0)

strategy.entry("Long",   true, when = window1() and crossover(cu, cd))
strategy.entry("Short", false, when = window1() and crossunder(cu, cd))