K-Linie kontinuierliche Nummer Bull und Bear Beurteilungsstrategie

EMA ATR
Erstellungsdatum: 2024-05-17 13:54:06 zuletzt geändert: 2024-05-17 13:54:06
Kopie: 1 Klicks: 339
1
konzentrieren Sie sich auf
1166
Anhänger

K-Linie kontinuierliche Nummer Bull und Bear Beurteilungsstrategie

Überblick

Die Strategie basiert auf der Anzahl der aufeinanderfolgenden Auf- oder Abstiege der K-Linie, um den Markt zu beurteilen und entsprechend zu handeln. Wenn der Schlusskurs kontinuierlich höher ist als der Schlusskurs der vorherigen K-Linie und eine bestimmte Anzahl erreicht wird, wird eine Positionsüberschreitung eröffnet.

Strategieprinzip

  1. Erfassen Sie die Anzahl der Fälle, in denen sich die Bedingungen für mehrere und leere Köpfe in Folge erfüllen. Wenn der Schlusskurs höher als die vorherige K-Linie ist, wird der Schlusskurs plus 1 und der Leerwert auf 0 umgesetzt. Wenn der Schlusskurs niedriger als die vorherige K-Linie ist, wird der Leerwert plus 1 und der Mehrwert auf 0 umgesetzt.
  2. Wenn die Mehrkopfanzahl die angegebene Anzahl k erreicht, eröffnen Sie die Mehrkopfposition und setzen Sie Stop-Loss und Stop-Stop.
  3. Bei mehrköpfigen Positionen wird der höchste Preis nach dem Eröffnen der Position erfasst, wenn der höchste Preis die iTGT-Einheit der geringsten Veränderung des Eröffnungspreises übersteigt und der Schlusskurs sich auf iPcnt% unter dem höchsten Preis zurückzieht.
  4. Wenn die Leerköpfe-Zählung die angegebene Anzahl k2 erreicht, wird die Leerköpfe-Position eröffnet und Stop-Loss und Stop-Stop eingestellt.
  5. Bei einer leeren Position wird der niedrigste Preis nach dem Eröffnen der Position erfasst, wenn der niedrigste Preis unter der niedrigsten Einheit der geringsten Veränderung des Eröffnungspreises iTGT liegt und der Schlusskurs auf iPcnt% oberhalb des niedrigsten Preises reagiert.

Strategische Vorteile

  1. Einfach zu verstehen, auf der K-Linie basierende Transaktionsentscheidungen, klare Logik.
  2. Ein Mechanismus der mobilen Stopps wurde eingeführt, um Profite nach einer gewissen Strecke in der günstigen Richtung des Preises aktiv zu schützen.
  3. Die Einstellung von Stop-Loss und Stop-Stop ermöglicht eine effektive Risikokontrolle und Gewinnsperre.
  4. Die Parameter sind anpassbar für verschiedene Märkte und Handelsstile.

Strategisches Risiko

  1. Häufige Positionseröffnungen können zu hohen Slippage-Kosten führen.
  2. Die Beurteilung der Anzahl der K-Linien in Folge wird durch Marktgeräusche beeinflusst, wobei häufige Signale möglich sind.
  3. Die festen Stop-Loss- und Stop-Out-Punkte sind möglicherweise nicht an die Volatilität des Marktes angepasst.

Richtung der Strategieoptimierung

  1. Die Einführung weiterer technischer Indikatoren, wie der Durchschnittslinie, der Schwankungsrate usw., um die Stärke und Richtung von Trends zu beurteilen.
  2. Optimierung der Triggerbedingungen für die Mobilstopper, wie z. B. der Prozentsatz der Anpassung und Rücknahme nach ATR.
  3. Es werden dynamische Stopps und Stopps verwendet, wie Tracking Stops, Steppschritte usw.
  4. Optimierung der Parameter, um die optimale Kombination für verschiedene Märkte und Sorten zu finden.

Zusammenfassen

Die Strategie erfasst die bullish-bearish-Trend durch die Kontinuität der K-Linie, während die Einführung von Stop-Loss-Stopps, um das Risiko zu kontrollieren. Die Einführung von beweglichen Stopps kann besser zu schützen, um die Gewinne. Aber in den bewegten Märkten kann es häufige Signale, die weitere Optimierung der Reliabilität der Signal.

Strategiequellcode
/*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]))