Стратегия следования за трендом


Дата создания: 2023-12-08 12:05:17 Последнее изменение: 2023-12-08 12:05:17
Копировать: 0 Количество просмотров: 1241
1
Подписаться
1621
Подписчики

Стратегия следования за трендом

Обзор

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

Стратегический принцип

  1. Используйте среднюю линию EMA для определения направления большого тренда, EMA12 больше EMA144 для определения большого тренда вверх
  2. Положите больше только в случае большой тенденции вверх
  3. Размер сетки по умолчанию 1xATR, можно настроить кратность
  4. Создание сетки 1, 2, 3 для отслеживания цен вниз, открытие дополнительных позиций
  5. График 5 Установка стоп-стоп
  6. Установка стоп-постов и стоп-стопов после открытия позиции
  7. Когда цены выросли, и они преодолели остановку.
  8. Когда падение цены вызывает остановку на убыточном уровне
  9. После того, как все позиции были ликвидированы, если цена вновь прорвет последнюю сетку, пересчитайте местоположение и количество сетки и отслеживайте вверх

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

Анализ преимуществ

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

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

Анализ рисков

  1. “Тенденции могут быть неправильными, они могут двигаться в неправильном направлении”
  2. “Сегодня мы увидим, как будет развиваться экономическая ситуация в стране.
  3. Потери достигли точки остановки слишком быстро, и все позиции были сброшены.
  4. Невозможность вернуться в лучшую точку входа после отскока

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

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

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

Эта стратегия также может быть оптимизирована в следующих направлениях:

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

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

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © zxcvbnm3260

//@version=5
strategy("grid strategy long", overlay=true)


// 版本更新记录:
// v1.0 2021/11/09 只做多、不做空,选择大趋势向上的时间段。网格大小默认为1倍ATR,往下1、2、3个网格吃单,第5个网格止损。空仓时到达往上一个网格则网格整体抬升。(Only go long, not short, choose a time period when the general trend is up. The default grid size is 1x ATR, the next one, two, and three grids will take orders, and the fifth grid will stop loss. When the empty position reaches the upper grid, the grid as a whole rises.)


X_ATR = input.float(title='网格大小是多少倍ATR?', defval = 1)


// 1.基础变量
ema169 = ta.ema(close, 169)
ema144 = ta.ema(close, 144)
ema12 = ta.ema(close, 12)

ema576 = ta.ema(close, 576)
ema676 = ta.ema(close, 676)

plot(ema169, color=color.new(color.orange, 0), linewidth=2)
// plot(ema144, color=color.orange)
plot(ema12,  color=color.blue)
// plot(ema676, color=color.orange, linewidth=1)

mtr = math.max(high - low, math.abs(close[1] - high), math.abs(close[1] - low))
atr = ta.ema(mtr, 30)

is_0930 = hour(time, 'GMT-4') == 9  and minute(time, 'GMT-4') == 30
is_1500 = hour(time, 'GMT-4') == 15 and minute(time, 'GMT-4') == 00
is_1530 = hour(time, 'GMT-4') == 15 and minute(time, 'GMT-4') == 30

is_yangxian = close>open
is_yinxian = close<open

// 2.基本趋势标记

big_trend  = ema12 >= ema169 ? 1 : 0
big_trend2 = ema12 <= ema169 ? 1 : 0

// 背景的变色处理:
bgcolor(big_trend == 1 ? color.new(color.green, 90) : color.new(color.red, 90) )

// 3.网格点位初始化

grid_size = atr * X_ATR // 网格大小
        
price_entry1 = open - grid_size*1
price_entry2 = open - grid_size*2
price_entry3 = open - grid_size*3
price_stop_loss = open - grid_size*5

price_exit1 = price_entry1 + grid_size*1
price_exit2 = price_entry2 + grid_size*1
price_exit3 = price_entry3 + grid_size*1

qty1 = int(1000/price_entry1)
qty2 = int(1000/price_entry2)
qty3 = int(1000/price_entry3)


// 标出各种点位
slm_lines_time(time, price_entry1, price_entry2, price_entry3, price_stop_loss, price_exit1)=>
    time2 = time + 1000*3600*24*5
    line.new(time, price_stop_loss, time2, price_stop_loss, color=color.red, xloc = xloc.bar_time, width=2)  // 止损位
    line.new(time, price_entry1, time2, price_entry1, color=color.green, xloc = xloc.bar_time)  // 
    line.new(time, price_entry2, time2, price_entry2, color=color.green, xloc = xloc.bar_time)  // 
    line.new(time, price_entry3, time2, price_entry3, color=color.green, xloc = xloc.bar_time)  // 
    line.new(time, price_exit1,  time2, price_exit1,  color=color.green, xloc = xloc.bar_time, width=2)  // 

slm_lines(time, price_entry1, price_entry2, price_entry3, price_stop_loss, price_exit1)=>
    line.new(bar_index, price_stop_loss, bar_index[5], price_stop_loss, color=color.red, xloc = xloc.bar_index, width=2)  // 止损位
    line.new(bar_index, price_entry1, bar_index[5], price_entry1, color=color.green, xloc = xloc.bar_index)  // 
    line.new(bar_index, price_entry2, bar_index[5], price_entry2, color=color.green, xloc = xloc.bar_index)  // 
    line.new(bar_index, price_entry3, bar_index[5], price_entry3, color=color.green, xloc = xloc.bar_index)  // 
    line.new(bar_index, price_exit1,  bar_index[5], price_exit1,  color=color.green, xloc = xloc.bar_index, width=2)  // 


// 4.网格点位更新和下单

is_entry0 = big_trend==1 and year>=2020

var is_entry = false

// 未进场时:
if is_entry0 and not is_entry
    is_entry := true
    
    grid_size := atr * X_ATR // 网格大小
    
    price_entry1 := close - grid_size*1
    price_entry2 := close - grid_size*2
    price_entry3 := close - grid_size*3
    price_stop_loss := close - grid_size*5
    
    price_exit1 := price_entry1 + grid_size*1
    price_exit2 := price_entry2 + grid_size*1
    price_exit3 := price_entry3 + grid_size*1
    
    qty1 := int(1000/price_entry1)
    qty2 := int(1000/price_entry2)
    qty3 := int(1000/price_entry3)
    
    // slm_lines(time, price_entry1, price_entry2, price_entry3, price_stop_loss, price_exit1)
    
    strategy.entry("open1", strategy.long, qty1, limit = price_entry1)
    strategy.entry("open2", strategy.long, qty2, limit = price_entry2)
    strategy.entry("open3", strategy.long, qty3, limit = price_entry3)
    
    strategy.exit("close1", qty = qty1, limit = price_exit1, stop = price_stop_loss)
    strategy.exit("close2", qty = qty2, limit = price_exit2, stop = price_stop_loss)
    strategy.exit("close3", qty = qty3, limit = price_exit3, stop = price_stop_loss)

// 已进场的各类情况

// 1.止损
if is_entry and close <= price_stop_loss
    strategy.close_all()
    is_entry := false

// 2.网格抬升
if is_entry and close >= price_exit1
    is_entry := false