В процессе загрузки ресурсов... загрузка...

K Последовательные свечи Стратегия быка-медведя

Автор:Чао Чжан, Дата: 2024-05-17 13:54:06
Тэги:ЕМАATR

img

Обзор

Эта стратегия определяет бычьи или медвежьи рынки на основе количества последовательных свечей вверх или вниз и выполняет сделки соответственно. Когда цена закрытия последовательно выше, чем предыдущие свечи закрываются на определенное количество раз, он входит в длинную позицию; когда цена закрытия последовательно ниже, чем предыдущие свечи закрываются на определенное количество раз, он входит в короткую позицию.

Принцип стратегии

  1. Запишите количество раз, когда последовательные бычьи и медвежие условия выполняются. Если закрытие выше, чем предыдущая свеча, то подсчет бычьих увеличивается на 1, а подсчет медвежьих сбросится на 0, если закрытие ниже, то подсчет медвежьих увеличивается на 1 и подсчет бычьих сбросится на 0, в противном случае оба подсчета сбросят на 0.
  2. Когда бычье число достигнет указанного числа k, введите длинную позицию с остановкой потери и получите прибыль.
  3. Для длинных позиций записывать самую высокую цену после входа. Когда самая высокая цена превышает цену входа на единицы минимальной колебания цены iTGT, а закрытие снижается ниже самой высокой цены на iPcnt%, закрыть позицию.
  4. Когда медвежий показатель достигнет указанного числа k2, введите короткую позицию со стоп-лосом и получите прибыль.
  5. Для коротких позиций записывать самую низкую цену после вступления. Когда самая низкая цена ниже цены вступления на единицы минимальной колебания цены iTGT и близкие отскоки выше самой низкой цены на iPcnt%, закрыть позицию.

Преимущества стратегии

  1. Простые и понятные, принимающие торговые решения на основе непрерывности свечей с четкой логикой.
  2. Вводит механизм остановки, чтобы активно защищать прибыль после того, как цена движется на определенное расстояние в благоприятном направлении.
  3. Установка стоп-лосса и прибыли может эффективно контролировать риски и блокировать прибыль.
  4. Параметры регулируемые для различных рынков и стилей торговли.

Стратегические риски

  1. На нестабильных рынках частое открытие и закрытие позиций может привести к большим расходам на скольжение.
  2. На суждение о последовательных числах свечей влияет шум рынка, который может привести к частым сигналам.
  3. Фиксированные уровни стоп-лосса и прибыли могут не адаптироваться к изменениям волатильности рынка.

Направления оптимизации стратегии

  1. Ввести более технические показатели, такие как скользящие средние и волатильность, чтобы помочь оценить силу и направление тенденций.
  2. Оптимизировать условия запуска для задержки, например, корректировать процент оттягивания на основе ATR.
  3. Использовать более динамичные методы стоп-лосса и прибыли, такие как последующие стопы и шаговые прибыли.
  4. Оптимизировать параметры для поиска оптимальной комбинации для различных рынков и инструментов.

Резюме

Эта стратегия улавливает бычьи и медвежьи тенденции через непрерывность свечей, устанавливая стоп-лосс и прибыль для контроля рисков. Введение последующей остановки может лучше защитить прибыль. Однако это может генерировать частые сигналы на нестабильных рынках, что требует дальнейшей оптимизации надежности сигнала. Кроме того, установка стоп-лосса и прибыли может быть более гибкой для адаптации к динамическим изменениям рынка. В целом стратегия имеет простую и четкую идею, подходящую для трендовых рынков, но все еще есть место для оптимизации.


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






Связанные

Больше