複合的な脱出戦略

作者: リン・ハーンチャオチャン開催日:2024年2月29日 (火) 14:07:54
タグ:

img

概要

この戦略では,最近のNバーの最高価格と最低価格を計算し,低買いと高売りの取引戦略を実行するために移動平均線と組み合わせたダブルブレイクアウト条件を設定します.

戦略の原則

この戦略は主に以下の原則に基づいています.

  1. 最低低価格minLowを計算し,ブレイクアウト購入条件を決定します.
  2. 最低高値maxHighを計算して,ブレイクアウトセール条件を決定します.
  3. 200期間の単純な移動平均線 mma を計算し,mma と組み合わせたトレンド方向を決定します.
  4. 購入条件: 閉じる価格がminLowを突破し mmaより高い
  5. 売り条件:閉じる価格がmaxHighを突破するか,maxHighを上回る

最近のNバーの極限を計算することで,市場は極端に過売れているか過買いされているか判断します.トレンド方向を決定するために移動平均線と組み合わせると,低価格購入と高価格販売のブレイクアウト取引戦略を達成するための2つの条件を設定します.

利点分析

この戦略には以下の利点があります.

  1. 二重条件設定により,戦略の取引信号はより信頼性があります.
  2. K線の極限を使って 過売りと過買い状態を判断すると,逆転のチャンスを掴むことができます.
  3. 移動平均線を組み合わせてトレンド方向を決定することで,逆転操作を避ける.
  4. 低価格で購入し,高価格で販売するという考えを実装しています. これはほとんどのトレーダーの取引心理と一致しています.
  5. 戦略の論理は単純で明確で,理解し実行しやすい

双重確認により,戦略の信号品質は比較的高く,パラメータ最適化スペースは大きく,異なる市場環境に適しています.

リスク分析

この戦略にはいくつかのリスクもあります:

  1. 双重条件は信号の頻度を制限し,おそらくいくつかの取引機会を逃す
  2. K線極度の計算サイクルの誤った設定は,過剰販売および過剰購入状態を正確に決定できない可能性があります.
  3. 移動平均線の誤ったパラメータ設定は,トレンド方向を誤って決定する可能性があります.
  4. パラメータの最適化が難しくなります

これらのリスクは,計算サイクルを調整し,パラメータ組み合わせを最適化し,その他の方法によって軽減できます.さらに,最適化のために他の指標と組み合わせることを検討します.

オプティマイゼーションの方向性

戦略は主に以下の方向で最適化することができる:

  1. 過剰購入と過剰販売を決定するために最も適切なサイクルパラメータを見つけるためにK線極端の計算サイクルを最適化
  2. 異なる長さの移動平均線の効果をテストする
  3. BOLLチャンネル,KD指標など他の組み合わせた指標を増やす.
  4. 単一のストップ損失を制御するためのストップ損失戦略を増やす
  5. シグナル品質を向上させるために入口と出口条件を最適化

パラメータ最適化,指標最適化,リスク管理最適化などを通じて 戦略の利益因子を大幅に向上させることができる.

概要

一般的には,これは非常に実用的なブレイクアウト戦略である.過剰販売および過剰購入状態を決定するためにK線の極限を計算し,トレンド方向を決定するために移動平均線を使用し,偽信号をフィルタリングするためにダブルフィルタリング条件を設定し,高品質の低購入および高販売戦略を実装する. 計算サイクルを最適化し,他の指標やその他の手段を追加することで,戦略効果はさらに強化することができます. 戦略は初心者にとっても,プロトレーダーにとっても学習し,最適化し,使用するのに適しています.


/*backtest
start: 2023-02-22 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Larry Connors por RON", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

value1 = input(7, title="Quantity of day low")
value2 = input(7, title="Quantity of day high")
entry = lowest(close[1], value1)
exit = highest(close[1], value2)

lengthMMA = input(200, title="Length of SMA", minval=1)
mma = sma(close, lengthMMA)

// Calcular el mínimo de los precios bajos de las últimas 'value1' velas
minLow = lowest(low, value1)

// Calcular el máximo de los precios altos de las últimas 'value2' velas
maxHigh = highest(high, value2)

// Test 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

if testPeriod()
    // Condiciones de entrada
    conditionMet = (close > mma) and (close < entry) and (low == minLow)
    strategy.entry("Buy", strategy.long, when=conditionMet)
    
    if conditionMet
        label.new(bar_index, entry, text="↑", style=label.style_arrowup, color=color.green, size=size.small, yloc=yloc.belowbar)
    
    // Condiciones de salida
    conditionExit = close > exit or close > maxHigh
    strategy.close("Buy", when=conditionExit)


もっと