Estrategia de juicio alcista y bajista con números continuos de línea K

EMA ATR
Fecha de creación: 2024-05-17 13:54:06 Última modificación: 2024-05-17 13:54:06
Copiar: 1 Número de Visitas: 682
1
Seguir
1617
Seguidores

Estrategia de juicio alcista y bajista con números continuos de línea K

Descripción general

La estrategia determina el bull o el bear en función de la cantidad de subidas o bajadas consecutivas de la línea K y, de acuerdo con ello, se realiza la operación. Se abren posiciones de más cabeza cuando el precio de cierre es consecutivamente superior al precio de cierre de la línea K anterior y cuando el precio de cierre es consecutivamente inferior al precio de cierre de la línea K anterior y cuando el precio de cierre es consecutivamente inferior al precio de cierre.

Principio de estrategia

  1. Registre el número de veces que se cumplen las condiciones de más cabeza y más cabeza vacía consecutivas. Si el precio de cierre es superior a la línea K anterior, el conteo de más cabeza, más 1, el conteo de cabeza vacía se restablece a 0, si el precio de cierre es inferior a la línea K anterior, el conteo de cabeza vacía, más 1, el conteo de más cabeza se restablece a 0, o bien ambos contos se restablecen a 0.
  2. Cuando el conteo de más de una cabeza alcance el número k indicado, abra la posición de más de una cabeza y establezca el stop loss y el stop stop.
  3. Para posiciones múltiples, el precio más alto registrado después de la apertura de la posición, cuando el precio más alto excede el precio de apertura iTGT una unidad mínima de cambio, y el precio de cierre se retira al iPcnt% por debajo del precio más alto, la posición está cerrada.
  4. Cuando el recuento de cabezas vacías alcance el número k2 indicado, abra la posición de cabezas vacías y establezca el stop loss y el stop stop.
  5. Para las posiciones de cabeza vacía, el precio mínimo registrado después de la apertura de la posición, cuando el precio mínimo es inferior al precio de apertura iTGT una unidad mínima de cambio, y el precio de cierre rebota hasta el iPcnt% por encima del precio mínimo, la posición llena.

Ventajas estratégicas

  1. Es fácil de entender, toma decisiones de transacciones basadas en la continuidad de la línea K, tiene una lógica clara.
  2. Se ha introducido un mecanismo de suspensión móvil, que protege activamente las ganancias después de que el precio se ejecute en una dirección favorable.
  3. La configuración de stop loss y stop stop puede controlar el riesgo y bloquear las ganancias.
  4. Los parámetros son ajustables para diferentes mercados y estilos de negociación.

Riesgo estratégico

  1. En situaciones de crisis, la apertura frecuente de posiciones abiertas puede generar un mayor costo de deslizamiento.
  2. La determinación de la cantidad de líneas K consecutivas está influenciada por el ruido del mercado, y puede haber señales frecuentes.
  3. Los puntos fijos de stop loss y stop loss pueden no adaptarse a los cambios volátiles del mercado.

Dirección de optimización de la estrategia

  1. La introducción de más indicadores técnicos, como la media, la tasa de fluctuación, etc., para ayudar a determinar la fuerza y la dirección de la tendencia.
  2. Optimización de las condiciones de activación de la pared móvil, como el porcentaje de retiro ajustado según la adaptación ATR.
  3. El uso de métodos más dinámicos para detener y detener el daño, como el seguimiento del daño, la parada escalonada, etc.
  4. Optimizar los parámetros para encontrar la combinación óptima de parámetros para diferentes mercados y variedades.

Resumir

La estrategia capta las tendencias alcistas y bajistas a través de la continuidad de la línea K, al tiempo que establece un stop loss para controlar el riesgo. La introducción de un stop loss móvil puede proteger mejor las ganancias. Sin embargo, puede haber señales frecuentes en mercados inestables y se necesita una mayor optimización de la fiabilidad de la señal. Además, la configuración del stop loss puede ser más flexible para adaptarse a los cambios dinámicos en el mercado.

Código Fuente de la Estrategia
/*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]))