ОРИГИНАЛЬНАЯ ПРИМИТИВНАЯ СТРАТЕГИЯ ПРЕДСЛЕДЕНИЯ ТРЕНДОВ, основанная на скользящей средней

Автор:Чао Чжан, Дата: 2023-11-23 15:54:37
Тэги:

img

Обзор

Эта стратегия основана на теле свечи, в сочетании с индикатором EMA для оценки направления тренда рынка, чтобы достичь эффекта ОРИГИНАЛЬНОГО ПРИМИТИВНОГО ТРЕНД-ТРЕКИНГА.

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

  1. Вычислить среднюю длину тела тела последних 30 K-линии свечей
  2. Когда последняя линия К - это линия Ян, а длина тела больше, чем sbody/2, перейдите на длинную.
  3. Когда уже длинная, если последняя K-линия является Yin-линией, длина тела больше, чем sbody/2, и текущая позиция является прибыльной, то закрыть длинную позицию
  4. Когда последняя линия K - это линия Инь, а длина тела больше sbody/2, переходите на короткую.
  5. Когда уже короткий, если последняя K-линия является линия Ян, длина тела больше, чем sbody/2, и текущая позиция является прибыльной, то закрыть короткую позицию

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

Эта стратегия имеет следующие преимущества:

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

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

Эта стратегия также сопряжена с некоторыми рисками:

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

Риски могут быть уменьшены:

  1. Комбинировать с другими индикаторами для фильтрации сигналов
  2. Установка стратегии стоп-лосса
  3. Оптимизация параметров для контроля частоты торговли

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

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

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

Резюме

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


/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Primitive Strategy v1.0", shorttitle = "Primitive str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usebody = input(true, defval = true, title = "Use body")
useus = input(true, defval = true, title = "Use UUP")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(01, defval = 01, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Logic
body = abs(close - open)
sbody = ema(body, 30) / 2
bar = close > open ? 1 : close < open ? -1 : 0

//Signals
up = bar == -1 and (body > sbody or usebody == false) and (close < strategy.position_avg_price or strategy.position_size <= 0 or useus == false)
dn = bar == 1 and (body > sbody or usebody == false) and (close > strategy.position_avg_price or strategy.position_size >= 0 or useus == false)

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00)
    strategy.close_all()

Больше