Стратегия ловца трендов

Автор:Чао Чжан, Дата: 2024-04-26 11:48:28
Тэги:М.А.SMA

img

Обзор

Стратегия Trend Catcher - это стратегия, которая обнаруживает формирование тренда, используя свой собственный уникальный метод и открывает позиции в направлении тренда. Она вычисляет процентное значение, называемое limit, путем деления разницы между самыми высокими и самыми низкими ценами в определенном диапазоне на сумму длин свечей в этом диапазоне. Чем ближе это значение к 100, тем сильнее тренд. Когда это значение превышает установленный предел, и скользящая средняя растет, стратегия открывает длинную позицию; когда это значение превышает установленный предел, и скользящая средняя падает, стратегия открывает короткую позицию. После открытия позиции стратегия закрывает часть позиции, когда цена достигает определенного уровня и перемещает оставшуюся позицию в точку, где считает, что тенденция закончилась.

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

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

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

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

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

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

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

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

Резюме

Стратегия Trend Catcher использует уникальный метод для обнаружения формирования тренда и открытия позиций в направлении тренда. Она рассчитывает предельное значение для определения силы тренда и использует пересечение скользящей средней для определения конца тренда. Стратегия контролирует риск, закрывая часть позиции и перемещая уровень стоп-лосса после открытия позиции. Однако стратегия может столкнуться с определенными рисками при открытии позиций в начале тренда, использование фиксированных уровней прибыли и стоп-лосса может быть недостаточно гибким, и использование только скользящей средней для определения трендов может упустить некоторые возможности. В будущем мы можем рассмотреть возможность внедрения других индикаторов, динамического корректирования уровней прибыли и стоп-лосса и открытия позиций только после подтверждения тренда для оптимизации стратегии.


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 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/
// © faytterro

//@version=5
strategy("Trend Catcher Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
len = input.int(10)
tp = input.float(2.5, step = 0.1)
sl = input.float(2.5, step = 0.1)
malen = input.int(5)
limit = input.int(50)
ma = ta.sma(close,malen)
sum = 0.0
for i = 0 to len-1
    sum := sum + high[i]-low[i]
frs = 100*(ta.highest(high,len)-ta.lowest(low,len))/sum
//hline(50)
//plot(frs, color = color.white)
l = ta.crossover(frs,limit) and ma>ma[1]
s = ta.crossover(frs,limit) and ma<ma[1]
cl = ma<ma[1]
cs = ma>ma[1]
qty_balance=input.int(50, maxval = 100)
if (l)
    strategy.entry("My Long Entry Id", strategy.long)
    strategy.exit("exit long", "My Long Entry Id", qty_percent = qty_balance, limit = close*(100+tp)/100, stop = close*(100-sl)/100)

if (s)
    strategy.entry("My Short Entry Id", strategy.short)
    strategy.exit("exit short", "My Short Entry Id", qty_percent = qty_balance, limit = close*(100-tp)/100, stop = close*(100+sl)/100)

if (cl)
    strategy.close("My Long Entry Id")
if (cs)
    strategy.close("My Short Entry Id")

l:= l and strategy.opentrades<1
s:= s and strategy.opentrades<1
transp = strategy.opentrades>0? 0 : 100
pma=plot(ma, color = ma<ma[1]? color.rgb(255, 82, 82, transp) : color.rgb(76, 175, 79, transp))
price = open/2+close/2
pprice = plot(price, display = display.none)
fill(pma,pprice, color = ma<ma[1]? color.rgb(255, 82, 82, transp+90) : color.rgb(76, 175, 79, transp+90))

spm=plot(ta.valuewhen(s,close,0), color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.white : color.rgb(1,1,1,100), offset=1)
lpm=plot(ta.valuewhen(l,close,0), color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.white : color.rgb(1,1,1,100), offset=1)

ltp=plot(ta.valuewhen(l,close,0)*(100+ta.valuewhen(l,tp,0))/100,  color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.green : color.rgb(1,1,1,100), offset=1)
lsl=plot(ta.valuewhen(l,close,0)*(100-ta.valuewhen(l,sl,0))/100,  color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.red : color.rgb(1,1,1,100), offset=1)

stp=plot(ta.valuewhen(s,close,0)*(100-ta.valuewhen(s,tp,0))/100, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.green : color.rgb(1,1,1,100), offset=1)
ssl=plot(ta.valuewhen(s,close,0)*(100+ta.valuewhen(s,sl,0))/100, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.red : color.rgb(1,1,1,100), offset=1)
fill(stp,spm, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.rgb(76, 175, 79, 90) : color.rgb(1,1,1,100))
fill(ssl,spm, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.rgb(255, 82, 82, 90) : color.rgb(1,1,1,100))
fill(ltp,lpm, color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.rgb(76, 175, 79, 90) : color.rgb(1,1,1,100))
fill(lsl,lpm, color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.rgb(255, 82, 82, 90) : color.rgb(1,1,1,100))

Связанные

Больше