ラリー・コナーズの古典的な戦略に基づく


作成日: 2023-10-27 16:32:19 最終変更日: 2023-10-27 16:32:19
コピー: 0 クリック数: 426
1
フォロー
1217
フォロワー

ラリー・コナーズの古典的な戦略に基づく

概要

この戦略は,ラリー・コノスの古典的な戦略思想に基づいている.この戦略は,市場の中間短線振動を捕捉し,超買い超売り区域で安価な操作策を実現するために,双均線システムを利用している.

戦略原則

  1. 2サイクルRSI指標を用いて,株価が超売り領域にあるかどうかを判断する.

  2. 長期周期平均線 ((200周期) を用いて大トレンドの方向を判断する.価格が長期周期平均線より高い場合にのみ,ポジションを考慮する.

  3. 価格が長期平均線より高く,RSI指標が超売り線より低いとき,市場価格で単発ポジションを多めに開きます.

  4. 価格上昇が短周期平均線 ((5周期) を突破したとき,市場価格の平らで多一止する.

ポリシーは,以下のような設定オプションも提供しています.

  • RSIパラメータ:周期長さ,超買い超売りライン位置.

  • 平均線参数: 長短平均線周期。

  • RSI平均線フィルター:RSI平均線判断を追加し,RSI指標の過剰な振動を避ける.

  • ストップダメージ設定: ストップダメージを追加するかどうかを選択します.

優位分析

  1. 双均線システムを使用し,中長線トレンドを効果的に追跡できます.

  2. RSI指標は,激しい震動の中で最高の入場時間を逃さないようにする.

  3. 柔軟に構成され,異なるパラメータの最適化に適しています.

  4. ランダウンの突破策は, 逃がしやすいものではありません.

リスク分析

  1. 双均線策略はパラメータに敏感であり,最適な効果を得るためにはパラメータを最適化する必要があります.

  2. 止損設定には損失拡大のリスクがある.慎重に資金管理し,単一のポジションの規模をコントロールする必要がある.

  3. 振動的な状況で偽突破は損失のリスクがあるかもしれない.平均線周期を最適化したり,フィルターとして他の条件を追加することを考えることができる.

  4. データを復元する 適合リスク 複数の市場で長期間,戦略の健全性を検証する

最適化の方向

  1. RSIと平均線のパラメータを組み合わせて最適化するパラメータをテストします.

  2. 偽信号を減らすために,取引量急増などの異なる入場フィルタリング条件をテストします.

  3. 単一損失を制御するために追跡停止を追加する. 停止の設定が全体的な利益に与える影響を評価する必要がある.

  4. ポジションを保持する時間の違いが収益に与える影響を評価し,最適なポジション保持周期を探します.

  5. より長い時間周期で (日線レベルなど) 戦略の安定性をテストする.

要約する

この戦略は,双均線トレンド追跡と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()