
この策略は,RSI指標の超買超売原理を適用し,多周期RSIと組み合わせて判断し,跨周期操作を実現する.策略は,RSIの周期設定に基づいて超買超売信号を判断し,RSIの移動平均を利用してフィルターし,誤った信号を避ける.RSIが上を移動平均線を横切るときに買い信号を生じ,下を横切るときに売り信号を生じ,典型的な均線交差操作方法を形成する.
この戦略は,主にRSI指標の超買い超売り判断によって取引シグナルを生成する.RSI指標は,相対的に強いインデックスを表す.計算式は,RSI = 100 - (100 / (1 + RS) で,RSは,期間中の平均クローズアップの値と平均クローズアップの値の比率に等しい.RSI指標は0から100の範囲で,一般的に30を下回ると超売り,70を下回ると超買いとみなされる.
この戦略は,高パラメータのsobrecompraと低パラメータのsobreventaを設定し,RSIがsobrecompraより高いときは超買いと判断し,RSIがsobreventaより低いときは超売りと判断する.戦略のsobrecompraのデフォルト値は70,sobreventaのデフォルト値は30である.
買入と売却のシグナルを生成するために,策略はRSI指標の移動平均を利用してフィルタリングする.RSI指標の上の移動平均を穿越すると買入のシグナルEs_compraを生成し,移動平均を横切ると売り出せのシグナルEs_ventaを生成する.移動平均のパラメータperiodos_mediaはデフォルトで14周期である.
買入と売却のシグナルを生成した後に,戦略は多頭または空頭取引のためにポジションを開きます. さらに,戦略は,損失を拡大させ,利益をロックするのを防ぐために,ストップ・ロスとストップ・フード,“%“を設定します.
RSI指標で超買いと超売りを判断し,高殺低を追うのを避ける.
RSI指数の移動平均をフィルターして,偽信号を避ける.
RSIの多周期設定と組み合わせることで,より安定した取引信号が得られます.
危険を効果的に制御する止損防止機構を設定する.
戦略の論理はシンプルで明快で,理解し,修正しやすい.
異なる品種と周期に適用できるカスタマイズ可能なパラメータ.
RSIは遅滞しており,価格の逆転の最適なタイミングを逃している可能性があります.
移動平均は取引信号を遅らせ,トレンドの逆転を間に合うように捉えられない.
固定された超買超売パラメータの設定は柔軟性がないため,周期や品種によって調整する必要がある.
ストップ・ロスの設定が不適切である場合,損失を招くか,利益を逃す可能性があります.
多頭空頭ポジションは1人しか持たないため,差値取引に資金が充分利用できない.
MACD,KDなどの他の指標と組み合わせて取引信号を判断する.
移動平均のトレンド追跡を自作的に適用する.
ダイナミックな超買超売のパラメータを設定し,市場の変動に応じて調整する.
ストップ・ストップ・ストップアルゴリズムを最適化します.
ポジション管理機構の追加,資金規模に応じてポジションの動的調整.
傾向フィルターを追加して,波動的な市場での頻繁な取引を避ける.
最適なパラメータの組み合わせを選択します.
この戦略は,RSI指標の超買超売を基礎として,移動平均を活用して,波を生成する取引信号を生成し,典型的なクロンサイクル取引方法を実現する.戦略は,明確な論理構造とパラメータ設定を有し,パラメータを異なる品種と周期に適用することで,信頼性の高い効果的なクロンサイクル取引戦略である.しかし,RSI指標と移動平均などのツールにも一定の限界があり,戦略パラメータをより自律的に,フィルタリング効果を向上させ,リスクを最大限に軽減し,収益を高めるためにさらなる最適化が必要である.
/*backtest
start: 2023-09-01 00:00:00
end: 2023-09-30 23:59:59
period: 3m
basePeriod: 1m
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/
// © samuelkanneman
//@version=4
strategy("RSI KANNEMAN")
//////Entrada///////
i_startTime = input(title="Start Date Filter", defval=timestamp("01 Nov 2020 13:30 +0000"), type=input.time, tooltip="Date & time to begin trading from")
i_endTime = input(title="End Date Filter", defval=timestamp("1 Nov 2022 19:30 +0000"), type=input.time, tooltip="Date & time to stop trading")
sobrecompra= input(70, title="Sobre Compra", type=input.integer ,minval=50, maxval=100 )
sobreventa= input(30, title="Sobre Venta", type=input.integer ,minval=0, maxval=50 )
l1=hline(sobrecompra)
l2=hline(sobreventa, color=color.purple)
periodos= input(14, title="Periodos", type=input.integer ,minval=1, maxval=50 )
periodos_media= input(14, title="Logintud media movil", type=input.integer ,minval=1, maxval=200 )
var SL =0.0
var TP=0.0
StopLoss = input(2.0, title="SL %", step=0.2)
TakeProfit = input(5.0, title="TP %", step=0.2)
//////Proceso///////
mi_rsi=rsi(close,periodos)
mm_rsi=sma(mi_rsi,periodos_media)
Es_compra= crossover(mm_rsi,sobreventa)
Es_venta= crossunder(mm_rsi,sobrecompra)
comprado= strategy.position_size > 0
vendido = strategy.position_size < 0
//time to test
dateFilter = true
//timePeriod = time >= timestamp(syminfo.timezone, 2020, 11, 1, 0, 0)
// long
if (not comprado and Es_compra and dateFilter )
// realizar long
cantidad = strategy.equity/hlc3
strategy.entry ("compra", strategy.long , cantidad)
SL := close*(1-(StopLoss/100))
TP := close*(1+(TakeProfit/100))
if close >= TP
strategy.close ("compra" , comment="Salto TP")
if (comprado and Es_venta )
strategy.close ("compra" , comment="Sobre Venta")
if close <= SL
strategy.close ("compra" , comment="Salto SL")
// short
if (not vendido and Es_venta and dateFilter )
// realizar short
cantidad = strategy.equity/hlc3
strategy.entry ("venta", strategy.short , cantidad)
SL := close*(1+(StopLoss/100))
TP := close*(1-(TakeProfit/100))
if close <= TP
strategy.close ("venta" , comment="Salto TP")
if (vendido and Es_compra )
strategy.close ("venta" , comment="Sobre Compra")
if close >= SL
strategy.close ("venta" , comment="Salto SL")
///////Salida//////
fill(l1,l2)
plot(mi_rsi)
plot(mm_rsi, color=color.yellow)
bgcolor(Es_compra ? color.blue : na , transp=0)
bgcolor(Es_venta ? color.red : na , transp=0)
// 1d 70 22 5 4 3 15 6 meses
//1h 70 20 6 4 5 7 1 mese
//15m 70 20 5 4 4 7 1 semana