複合的なブレークスルー戦略に基づく


作成日: 2024-02-29 14:07:54 最終変更日: 2024-02-29 14:07:54
コピー: 0 クリック数: 546
1
フォロー
1617
フォロワー

複合的なブレークスルー戦略に基づく

概要

この戦略は,最近のN根K線の最高値と最低値を計算し,移動平均指標と組み合わせて,二重突破条件を設定し,低価格,高価格の取引戦略を実現する.

戦略原則

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

  1. 最新の7Kラインの最低価格minLowを計算し,突破買い条件を決定する
  2. 突破セール条件を決定するために,最新の7つのKラインの最高値maxHighを計算します.
  3. 単純移動平均のmmaを200で計算し,mma指標と組み合わせてトレンドの方向を判断する
  4. 購入条件:閉店価格がminLowを突破し,mmaより高い
  5. 販売条件: 閉店価格がmaxHighを突破するか,またはmaxHighよりも高い

最近のN根K線の極値を計算して,市場が超売りまたは超買い状態にあるかどうかを判断する.移動平均と組み合わせてトレンドの方向を決定し,二重条件を設定し,低買い高売りの突破取引戦略を実現する.

優位分析

この戦略の利点は以下の通りです.

  1. 双重条件設定により,戦略的な取引信号がより信頼される.
  2. K線極値で超売り状態を判断し,逆転のチャンスを掴む
  3. 移動平均と組み合わせてトレンドの方向を判断し,逆転操作を避ける
  4. 低価格で高価格で買えるという考えが実現し,ほとんどのトレーダーの取引心理に合致します.
  5. 戦略の論理はシンプルで明快で,理解し,実行しやすい.

双重条件確認により,戦略信号の質が高く,パラメータの最適化スペースが広く,異なる市場環境に適しています.

リスク分析

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

  1. 双重条件により信号の頻度が制限され,一部の取引機会が失われる可能性がある.
  2. K線極値計算周期設定が不適切で,過売状態を正確に判断できない
  3. 移動平均のパラメータが正しく設定されず,トレンドの方向を誤って判断する可能性があります.
  4. 複数のパラメータを同時に最適化する必要があります.パラメータの最適化はより困難です.

これらのリスクは,計算周期の調整,パラメータの組み合わせの最適化などの方法によって軽減できます.さらに,他の指標と組み合わせた最適化を考慮することもできます.

最適化の方向

この戦略は以下の方向から最適化できます.

  1. K線極値計算周期を最適化して,超買超売を判断するのに最も適した周期パラメータを見つける
  2. 異なる長さの移動平均の効果をテストする
  3. BOLL通道,KD指標などの他の指標の結合を追加します.
  4. ストップ・ストップ戦略を高め,単発ストップをコントロールする
  5. 信号の質を向上させるための入場・出場条件の最適化

参数最適化,指標最適化,風制御最適化などの手段によって,戦略のprofit因子を大幅に向上させることができる.

要約する

この戦略は,全体的に非常に実用的な突破戦略である. 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)