Стратегия двойной тяги на базе тела свечи

Автор:Чао Чжан, Дата: 2023-11-16 17:14:48
Тэги:

img

Обзор

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

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

Эта стратегия сначала рассчитывает длину тела свечей и среднюю длину тела последних 30 свечей.

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

Когда сегодняшний свечник является бычьим (бар==1) и длина тела больше средней длины тела, он открывает короткую позицию (dn1).

После длинного открытия, если сегодняшний свечник является бычьим (бар==1) и текущая позиция является прибыльной, он закрывает длинную позицию.

После открытия короткой позиции, если сегодняшняя свеча является медвежьей (бар==-1) и текущая позиция является прибыльной, она закрывает короткую позицию.

Стратегия просто и эффективно использует длину тела свечи для определения рыночной тенденции. Чем длиннее тело, тем сильнее тренд. Поэтому она использует длину тела в качестве критерия для длинного и короткого.

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

Преимущества этой стратегии:

  1. Логика проста и понятна, легко понять и реализовать.

  2. Используя длину тела свечи для определения тренда, избегайте помех шума.

  3. Принять динамический средний расчет, может адаптироваться к изменениям рынка.

  4. Установите условия выхода, чтобы повысить прибыльность.

  5. Конфигурируемые параметры, адаптируемые к различным рыночным условиям.

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

Риски этой стратегии:

  1. Длинное тело не обязательно представляет собой сильную тенденцию, может быть нормальным колебанием.

  2. Неправильное время средней длины тела может упустить торговые возможности.

  3. Чёрный лебедь может привести к потерям.

  4. Слишком длительное удержание позиций может увеличить убытки.

Решения:

  1. Сочетайте с другими индикаторами, чтобы определить тенденцию, избегайте неправильных сделок.

  2. Испытывайте различные значения параметров, оптимизируйте расчет средней длины тела.

  3. Установите стоп-потерю для контроля одиночных потерь.

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

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

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

  1. Объедините MACD, RSI для определения тренда, избегайте неправильных сигналов от нормальных колебаний.

  2. Испытать различные параметры средней длины тела временного окна, чтобы найти оптимальный набор параметров.

  3. Добавьте логику управления размером позиции, постепенно уменьшайте размер позиции при появлении потерь.

  4. Установите цель остановки потери или прибыли для контроля процента одиночных потерь.

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

  6. Избегайте торговли в определенные периоды или во время выпуска важных данных для контроля потерь от волатильности.

Заключение

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


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

//Noro
//2018

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

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usebody = input(true, defval = true, title = "Use body")
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(12, defval = 12, 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")

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

up1 = bar == -1 and (body > sbody or usebody == false)
dn1 = bar == 1 and (body > sbody or usebody == false)

plus = (close > strategy.position_avg_price and strategy.position_size > 0) or (close < strategy.position_avg_price and strategy.position_size < 0)
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and plus

if up1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))

if dn1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
    
if time > timestamp(toyear, tomonth, 31, 00, 00) or exit
    strategy.close_all()

Больше