Die Ressourcen sind geladen. Beförderung...

K Folge-Kerzen Bull-Bär Strategie

Schriftsteller:ChaoZhang, Datum: 2024-05-17 13:54:06
Tags:EMAATR

img

Übersicht

Diese Strategie bestimmt die Bullen- oder Bärenmärkte anhand der Anzahl der aufeinanderfolgenden Auf- oder Abwärtskerzen und macht entsprechend Trades. Wenn der Schlusskurs nach und nach höher ist als die vorherigen Kerzen, die eine bestimmte Anzahl von Malen geschlossen werden, tritt er in eine Long-Position ein; wenn der Schlusskurs nach und nach niedriger ist als die vorherigen Kerzen, die eine bestimmte Anzahl von Malen geschlossen werden, tritt er in eine Short-Position. Stop-Loss und Take-Profit werden festgelegt und ein Trailing-Stop-Mechanismus wird eingeführt, um die Gewinne zu schützen.

Strategieprinzip

  1. Wenn der Abschluss höher als die vorherige Kerze ist, erhöht sich die Aufschlagszahl um 1 und die Aufschlagszahl setzt sich auf 0 zurück; wenn der Abschluss niedriger ist, erhöht sich die Aufschlagszahl um 1 und die Aufschlagszahl setzt sich auf 0 zurück; andernfalls werden beide Aufschlagszahlen auf 0 zurückgesetzt.
  2. Wenn die bullische Anzahl die angegebene Zahl k erreicht, treten Sie eine Long-Position mit Stop-Loss ein und machen Gewinn.
  3. Bei Long-Positionen wird der höchste Kurs nach dem Eintritt aufgezeichnet.
  4. Wenn die Bärenzahl die angegebene Zahl k2 erreicht, treten Sie in eine Shortposition mit Stop-Loss ein und nehmen Sie Gewinn.
  5. Für Short-Positionen wird der niedrigste Kurs nach dem Einstieg aufgezeichnet.Wenn der niedrigste Preis unter dem Einstiegspreis durch iTGT-Mindestpreisvariationseinheiten liegt und der Schlusskurs über dem niedrigsten Preis um iPcnt% zurückfällt, wird die Position geschlossen.

Strategische Vorteile

  1. Einfach und leicht verständlich, Entscheidungen basierend auf der Kontinuität von Kerzen mit klarer Logik.
  2. Einführt einen Trailing-Stop-Mechanismus, um die Gewinne aktiv zu schützen, nachdem sich der Preis eine gewisse Entfernung in günstige Richtung bewegt.
  3. Die Einstellung von Stop-Loss und Take-Profit kann die Risiken effektiv kontrollieren und die Gewinne sichern.
  4. Einstellbare Parameter für verschiedene Märkte und Handelsstile.

Strategische Risiken

  1. In unruhigen Märkten kann häufiges Öffnen und Schließen von Positionen zu hohen Verschiebungskosten führen.
  2. Das Urteilen von aufeinanderfolgenden Kerzenzahlen wird durch Marktlärm beeinflusst, was zu häufigen Signalen führen kann.
  3. Festgelegte Stop-Loss- und Take-Profit-Niveaus können sich möglicherweise nicht an Veränderungen der Marktvolatilität anpassen.

Strategieoptimierungsrichtlinien

  1. Einführung technischer Indikatoren wie gleitender Durchschnitte und Volatilität, um die Stärke und Richtung der Trends zu beurteilen.
  2. Optimierung der Auslöserbedingungen für den Rückhalt, z. B. Anpassung des Rückzugsprozentsatzes auf der Grundlage von ATR.
  3. Einführung dynamischerer Stop-Loss- und Take-Profit-Methoden wie Trailing-Stops und Stepped-Take-Profits.
  4. Optimierung der Parameter, um die optimale Kombination für verschiedene Märkte und Instrumente zu finden.

Zusammenfassung

Diese Strategie erfasst Stier- und Bärentrends durch die Kontinuität von Kerzen, während sie Stop-Loss und Take-Profit festlegt, um Risiken zu kontrollieren. Die Einführung eines Trailing-Stops kann die Gewinne besser schützen. Allerdings kann sie häufige Signale in unruhigen Märkten erzeugen, was eine weitere Optimierung der Signalzuverlässigkeit erfordert. Darüber hinaus kann die Einstellung von Stop-Loss und Take-Profit flexibler sein, um sich an dynamische Marktveränderungen anzupassen. Insgesamt hat die Strategie eine einfache und klare Idee, die für Trending-Märkte geeignet ist, aber es gibt immer noch Raum für Optimierung.


/*backtest
start: 2024-04-16 00:00:00
end: 2024-05-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("K Consecutive Candles 數來寶V2", max_bars_back=300, overlay=true)

// 定義用戶輸入
k = input.int(3, title="Number of Consecutive Candles for Long", minval=1)
k2 = input.int(3, title="Number of Consecutive Candles for Short", minval=1)
stopLossTicks = input.int(500, title="Stop Loss (Ticks)")
takeProfitTicks = input.int(500, title="Take Profit (Ticks)")
iTGT = input.int(200,"iTGT")  // 移動停利點
iPcnt = input.int(50,"iPcnt")  // 移動停利%

var float TrailValue = 0
var float TrailExit = 0
var float  vMP = 0

BarsSinceEntry = ta.barssince(strategy.position_size == 0)

vMP := strategy.position_size

// 创建一个包含键值对的字典
addArrayData(type, value) =>
    alert_array = array.new_string()
    array.push(alert_array, '"timenow": ' + str.tostring(timenow))
    array.push(alert_array, '"seqNum": ' + str.tostring(value))
    array.push(alert_array, '"type": "' + type + '"')
    alertstring = '{' + array.join(alert_array,', ') + '}'


// 定義條件變量
var int countLong = 0  // 記錄連續多頭條件成立的次數
var int countShort = 0 // 記錄連續空頭條件成立的次數

// 計算連續大於或小於前一根的收盤價格的次數
if close > close[1]
    countLong += 1
    countShort := 0 // 重置空頭計數
else if close < close[1]
    countShort += 1
    countLong := 0 // 重置多頭計數
else
    countLong := 0
    countShort := 0

// 開設多頭倉位條件
if countLong >= k
    strategy.entry("Long Entry", strategy.long)
    strategy.exit("Exit Long", "Long Entry", loss=stopLossTicks, profit=takeProfitTicks)
    

if vMP>0
    TrailValue := ta.highest(high,BarsSinceEntry)
    TrailExit := TrailValue - iPcnt*0.01*(TrailValue - strategy.position_avg_price)
    if TrailValue > strategy.position_avg_price + iTGT * syminfo.minmove/syminfo.pricescale and close < TrailExit
        
        strategy.close("Long Entry", comment = "Trl_LX"+ str.tostring(close[0]))
// 開設空頭倉位條件
if countShort >= k2
    strategy.entry("Short Entry", strategy.short)
    strategy.exit("Exit Short", "Short Entry", loss=stopLossTicks, profit=takeProfitTicks)

if vMP<0    
    TrailValue := ta.lowest(low,BarsSinceEntry)
    TrailExit := TrailValue - iPcnt*0.01*(TrailValue - strategy.position_avg_price)
    if TrailValue < strategy.position_avg_price - iTGT * syminfo.minmove/syminfo.pricescale and close > TrailExit
        
        strategy.close("short60", comment = "Trl_SX"+ str.tostring(close[0]))






Verwandt

Mehr