Стратегия длинного прорыва, основанная на K-линии


Дата создания: 2024-01-05 12:37:46 Последнее изменение: 2024-01-05 12:37:46
Копировать: 0 Количество просмотров: 368
1
Подписаться
1166
Подписчики

Стратегия длинного прорыва, основанная на K-линии

Обзор

Эта стратегия имеет преимущества в виде простоты, логической ясности и простоты понимания.

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

Основная логика решения стратегии основана на следующих 4 правилах K-линейной формы:

  1. Текущая минимальная цена K-линии ниже цены открытия
  2. Низкая цена на текущую K-линию ниже, чем на предыдущую
  3. Текущая цена закрытия линии K выше, чем цена открытия
  4. Текущая цена закрытия линии K выше цены открытия и закрытия предыдущей линии K

При одновременном выполнении вышеуказанных 4 правил, проводится многосторонняя операция по открытию позиции.

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

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

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

  1. Правило определения K-линии очень простое и прямое, легко понятное и практическое.
  2. Показатели, используемые для определения стоимости, не слишком сложны, и результаты измеряются непосредственно.
  3. Реализация с небольшим количеством кода, высокая эффективность работы, легкость оптимизации и улучшения.
  4. Можно регулировать параметры, свободно устанавливать условия остановки убытков, контролировать риск.

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

Основные риски, о которых следует помнить:

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

Риски можно снизить следующими способами:

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

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

Оптимизируемые направления стратегии включают:

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

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

Эта стратегия позволяет совершать много прорывных сделок с помощью простых правил определения формы K-линии. Несмотря на то, что существует определенная возможность для улучшения, с точки зрения простоты и непосредственности эта стратегия является очень подходящей для понимания и использования новичками.

Исходный код стратегии
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
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/
// © TheQuantScience

//@version=5
strategy("SimpleBarPattern_LongOnly", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.EUR, initial_capital = 1000, commission_type = strategy.commission.percent, commission_value = 0.03)

// Make input options that configure backtest date range
startDate = input.int(title="Start Date",
     defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month",
     defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year",
     defval=2017, minval=1800, maxval=2100)

endDate = input.int(title="End Date",
     defval=8, minval=1, maxval=31)
endMonth = input.int(title="End Month",
     defval=3, minval=1, maxval=12)
endYear = input.int(title="End Year",
     defval=2022, minval=1800, maxval=2100)
     
// Look if the close time of the current bar
// Falls inside the date range
inDateRange = true

// Setting Conditions 
ConditionA = low < open 
ConditionB = low < low[1]
ConditionC = close > open
ConditionD = close > open[1] and close > close[1]

FirstCondition = ConditionA and ConditionB 
SecondCondition = ConditionC and ConditionD
IsLong = FirstCondition and SecondCondition

TakeProfit_long = input(4.00)
StopLoss_long = input(4.00)
Profit = TakeProfit_long*close/100/syminfo.mintick
Loss = StopLoss_long*close/100/syminfo.mintick

EntryCondition = IsLong and inDateRange

// Trade Entry&Exit Condition 
if EntryCondition and strategy.opentrades == 0
    strategy.entry(id = 'Open_Long', direction = strategy.long)
    strategy.exit(id = "Close_Long", from_entry = 'Open_Long', profit = Profit, loss = Loss)