Стратегия отслеживания трендов для максимизации прибыли

Автор:Чао Чжан, Дата: 2023-10-11 14:38:40
Тэги:

Обзор

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

Логика стратегии

  1. Вычислить 20-дневную простую скользящую среднюю величину закрытия в качестве основы для средней ссылки
  2. Вычислить 20-дневный стандартный отклонение близкого как основу для расстояния между верхней и нижней рельсы и средней рельсы
  3. Основа средней рельсы ± 2*dev определяет верхнюю верхнюю и нижнюю нижнюю рельсы.
  4. Вычислить среднее значение наивысшей верхней2 и наименьшей нижней2 цен за последние 20 дней в качестве основы2 для второй средней рельсы
  5. Примите среднее значение MB двух вышеперечисленных средних рельсов как окончательную среднюю рельс
  6. Когда ближайшее больше среднего рельса MB, это длинный сигнал. Когда MB больше ближайшего, это короткий сигнал
  7. Определить длинное и короткое направление в соответствии с сигналом для отслеживания тенденции и прибыли

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

  1. Использование динамического стандартного отклонения Канал может быстро улавливать изменения ценового тренда
  2. Объединяя информацию о самых высоких и самых низких ценах, средний рельс является более значимым
  3. Дизайн двойной средней рельсы делает сигнал более точным и надежным
  4. Идея стратегии проста и понятна, легко понять и реализовать
  5. Есть несколько параметров, подходящих для различных рыночных условий

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

  1. При торговле при прорыве верхней или нижней рельсы необходимо рассмотреть стратегии стоп-лосса для контроля одиночных потерь.
  2. Частота торговли может быть высокой, и необходимо учитывать влияние комиссий
  3. Параметры, такие как параметры периода должны быть тщательно оптимизированы, чтобы избежать перенапряжения
  4. Когда тенденция меняется, есть возможность неправильных торговых сигналов
  5. Требуется надлежащее управление капиталом, не следует использовать чрезмерный кредитный кредит

Руководство по оптимизации

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

Резюме

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


/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 4h
basePeriod: 15m
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/
// © ErdemDemir

//@version=4
strategy("Lawyers Trend Pro Strategy", shorttitle="Lawyers Trend Pro Strategy", overlay=true)

src = close
mult = 2.0
basis = sma(src, 20)
dev = mult * stdev(src, 20)
upper = basis + dev
lower = basis - dev
offset = 0


lower2 = lowest(20)
upper2 = highest(20)
basis2 = avg(upper2, lower2)


MB= (basis+basis2)/2





col1=close>MB
col3=MB>close
colorE = col1 ? color.blue : col3 ? color.red : color.yellow
p3=plot(MB, color=colorE, linewidth=3)

// Deternine if we are currently LONG
isLong = false
isLong := nz(isLong[1], false)

// Determine if we are currently SHORT
isShort = false
isShort := nz(isShort[1], false)

// Buy only if the buy signal is triggered and we are not already long
buySignal = not isLong and crossover(close,MB)

// Sell only if the sell signal is triggered and we are not already short
sellSignal= not isShort and crossover(MB,close)
if (buySignal)
    isLong := true
    isShort := false

if (sellSignal)
    isLong := false
    isShort := true







/// LONG
strategy.entry("long", true , when = buySignal, comment="Open Long")

strategy.close("long", when=sellSignal, comment = "Close Long")

/// SHORT
strategy.entry("short", false,  when = sellSignal, comment="Open Short")

strategy.close("short", when=buySignal, comment = "Close Short")



Больше