この戦略は,ラリー・コノスの古典的な戦略思想に基づいている.この戦略は,市場の中間短線振動を捕捉し,超買い超売り区域で安価な操作策を実現するために,双均線システムを利用している.
2サイクルRSI指標を用いて,株価が超売り領域にあるかどうかを判断する.
長期周期平均線 ((200周期) を用いて大トレンドの方向を判断する.価格が長期周期平均線より高い場合にのみ,ポジションを考慮する.
価格が長期平均線より高く,RSI指標が超売り線より低いとき,市場価格で単発ポジションを多めに開きます.
価格上昇が短周期平均線 ((5周期) を突破したとき,市場価格の平らで多一止する.
ポリシーは,以下のような設定オプションも提供しています.
RSIパラメータ:周期長さ,超買い超売りライン位置.
平均線参数: 長短平均線周期。
RSI平均線フィルター:RSI平均線判断を追加し,RSI指標の過剰な振動を避ける.
ストップダメージ設定: ストップダメージを追加するかどうかを選択します.
双均線システムを使用し,中長線トレンドを効果的に追跡できます.
RSI指標は,激しい震動の中で最高の入場時間を逃さないようにする.
柔軟に構成され,異なるパラメータの最適化に適しています.
ランダウンの突破策は, 逃がしやすいものではありません.
双均線策略はパラメータに敏感であり,最適な効果を得るためにはパラメータを最適化する必要があります.
止損設定には損失拡大のリスクがある.慎重に資金管理し,単一のポジションの規模をコントロールする必要がある.
振動的な状況で偽突破は損失のリスクがあるかもしれない.平均線周期を最適化したり,フィルターとして他の条件を追加することを考えることができる.
データを復元する 適合リスク 複数の市場で長期間,戦略の健全性を検証する
RSIと平均線のパラメータを組み合わせて最適化するパラメータをテストします.
偽信号を減らすために,取引量急増などの異なる入場フィルタリング条件をテストします.
単一損失を制御するために追跡停止を追加する. 停止の設定が全体的な利益に与える影響を評価する必要がある.
ポジションを保持する時間の違いが収益に与える影響を評価し,最適なポジション保持周期を探します.
より長い時間周期で (日線レベルなど) 戦略の安定性をテストする.
この戦略は,双均線トレンド追跡とRSI指標の超買い超売り特性を統合し,典型的な突破システムである.パラメータ最適化,厳格な資金管理,安定性検証により,この戦略は,取引の量化のための強力なツールになることができます.しかし,トレーダーは,フィットメントの問題を監視し,現実の世界で戦略を調整し,改良し続け,変化する市場環境に適応させる必要があります.
/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("RSI Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
//Starter Parameters
length = input(title="RSI Lenght", defval=2)
overBoughtRSI = input(title="OverBought Level for RSI", defval=10)
shortLength = input(title="Short MA Length", defval=5)
longLength = input(title="Long MA Length", defval=200)
RuleMRSI=input(title="RSI Moving Average Filter", defval= true)
lengthmrsi=input(title="RSI Moving Average Length", defval=4)
overBoughtMRSI=input(title="OverBought Level for the Moving Average of the RSI", defval=30)
Rulestop=input(title="Apply Stop Loss", defval=false)
stop_percentual=input(title="% Stop Loss", defval=10)
//RSI
vrsi = rsi(close, length)
//Moving Averages
longma = sma(close,longLength)
shortma = sma(close,shortLength)
mrsi=sma(vrsi,lengthmrsi)
//Stop Loss
stop_level = strategy.position_avg_price*((100-stop_percentual)/100)
//Backtest Period
testStartYear = input(2009, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true
//Strategy
if testPeriod() and (not na(vrsi))
if (RuleMRSI==false) and (Rulestop==false)
if (vrsi<overBoughtRSI) and (close>longma)
strategy.entry("RsiLE", strategy.long , comment="Open")
if (close>shortma)
strategy.close_all()
if (RuleMRSI==true) and (Rulestop==false)
if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI)
strategy.entry("RsiLE", strategy.long , comment="Open")
if (close>shortma)
strategy.close_all()
if (RuleMRSI==false) and (Rulestop==true)
if (vrsi<overBoughtRSI) and (close>longma)
strategy.entry("RsiLE", strategy.long , comment="Open")
strategy.exit("RsiLE", stop = stop_level)
if (close>shortma)
strategy.close_all()
if (RuleMRSI==true) and (Rulestop==true)
if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI)
strategy.entry("RsiLE", strategy.long , comment="Open")
strategy.exit("RsiLE", stop = stop_level)
if (close>shortma)
strategy.close_all()