Непрерывная положительная линия краткосрочная разворотная стратегия


Дата создания: 2023-10-08 13:56:39 Последнее изменение: 2023-10-08 13:56:39
Копировать: 1 Количество просмотров: 767
1
Подписаться
1617
Подписчики

Обзор

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

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

Основная логика этой стратегии заключается в следующем:

  1. Высота объекта K-линии измеряется на уровне, превышающем минимальную высоту, чтобы отфильтровать небольшие диаметрические и диаметрические колебания.

  2. Определите, одинаковы ли цвета первых двух K-линий, и если да, то это может создать возможность для краткосрочного переворота цены.

  3. После определения того, что первые две K-линии одинакового цвета, если текущая K-линия отличается от цвета предыдущих двух K-линий, то образуется торговый сигнал. То есть, после двух последовательных отрицательных линий появляется одна положительная линия, чтобы сделать больше; после двух последовательных отрицательных линий появляется одна отрицательная линия, чтобы сделать пустой.

  4. После входа в торговлю, направление позиции определяется с помощью многополосного пересечения RVI-индикатора. RVI-индикатор может определить кратковременную обратную точку.

  5. В целом, эта стратегия учитывает характеристики K-линии и RVI-индикатора, формируя систему торговли с краткосрочным обратным движением. Используйте возможность обратного движения, чтобы получить прибыль при краткосрочном аномальном ценовом поведении.

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

Основные преимущества этой стратегии:

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

  2. Показатели RVI помогают в определении. Показатели RVI могут эффективно определять кратковременные переломные моменты, взаимодействуют с характеристикой K-линии и повышают стабильность системы.

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

  4. Контролируемый риск. Устанавливается количество торгов и устанавливается стоп-стоп.

  5. Логика ясна и проста. Легко понять и реализовать, операционная сложность реального диска не велика.

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

В этой стратегии также есть некоторые риски, о которых следует помнить:

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

  2. RVI-индикатор может подавать ошибочный сигнал. RVI-индикатор может не работать из-за особых обстоятельств.

  3. Неправильное установление стоп-паража может увеличить потери. Необходимо разумно установить стоп-параж.

  4. Слишком жесткий стандарт для последовательных одноцветных K-линий. Можно рассмотреть оптимизацию на соотношение X% одноцветных K-линий, появляющихся в N-корневых K-линиях.

  5. Необходимо обращать внимание на размер торгуемых рук. Фиксированные ручки не могут контролировать общий риск, а крупные сделки подвержены взрыву.

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

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

  1. Оптимизация логики одноцветного определения последовательных K-линий с использованием статистических методов, а не фиксированного корневого числа.

  2. Оптимизация RVI-параметров, поиск оптимального сочетания параметров.

  3. Добавлена мобильная стоп-стратегия, которая может быть использована в зависимости от рыночных колебаний.

  4. Добавление модуля управления позициями, динамическая корректировка количества сделок в зависимости от уровня использования средств.

  5. Добавление дополнительных условий фильтрации, повышение стабильности системы, такие как сочетание показателей, таких как каналы, тенденции и т. д.

  6. Оптимизация параметров для различных сортов, повышение адаптации.

  7. Внедрение машинного обучения для обучения историческим данным, динамическая оптимизация системных параметров.

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

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

Исходный код стратегии
/*backtest
start: 2022-10-07 00:00:00
end: 2023-10-07 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//This is part of a series of strategies developed automatically by a online software. I cannot share the site url, which is not related to me in any way, because it is against the TV reules.
//
//This strategy was optimized for GBPUSD, timeframe 1D, fixed lots 0.1, initial balance 1000€
//LOGIC:
//- LONG ENTRY when previous candle is bear
//- LONG EXIT: RVI > signal line
//- SHORT ENTRY when previous candle is bull
//- SHORT EXIT: RVI <  signal line
//
//NOTE: I considered the open of actual candle instead of close otherwise there will be a back shift of 1 candle in pine script
//
//Take profit = no
//Stop loss = no

// strategy("Expert studio strategy 1 - GBPUSD", overlay=false, precision=6, initial_capital=1000,calc_on_every_tick=true, pyramiding=0, default_qty_type=strategy.fixed, default_qty_value=10000, currency=currency.EUR)

//INPUTS
src = input(close, "source")
min_body_height = input(42, "Minimum body height", type=input.float)
//bars_back=input(2, "Consecutive bars of same color")
rvi_period = input(55, "RVI period")

//CALCULATIONS_____________________________
//candle color
body_height = abs(open - close) / syminfo.mintick
body_color = open > close ? color.red : color.green

//da migliorare for i=0 to bars_back-1

//RVI -------- thanks to hecate
p = rvi_period

CO = close - open
HL = high - low

value1 = (CO + 2 * CO[1] + 2 * CO[2] + CO[3]) / 6
value2 = (HL + 2 * HL[1] + 2 * HL[2] + HL[3]) / 6

num = sum(value1, p)
denom = sum(value2, p)

RVI = denom != 0 ? num / denom : 0

RVIsig = (RVI + 2 * RVI[1] + 2 * RVI[2] + RVI[3]) / 6

plot(RVI, color=color.green, style=plot.style_line, linewidth=1)
plot(RVIsig, color=color.red, style=plot.style_line, linewidth=1)

//----------------------------------

longCondition = body_height[1] >= min_body_height and body_color[1] == color.red and 
   body_height[0] >= min_body_height and body_color[0] == color.red and 
   RVIsig > RVI
exitLong = RVI > RVIsig

shortCondition = body_height[1] >= min_body_height and body_color[1] == color.green and 
   body_height[0] >= min_body_height and body_color[0] == color.green and 
   RVIsig < RVI
exitShort = RVI < RVIsig

if longCondition and strategy.opentrades == 0
    strategy.entry("Long", strategy.long)

strategy.close("Long", when=exitLong)

if shortCondition and strategy.opentrades == 0
    strategy.entry("Short", strategy.short)

strategy.close("Short", when=exitShort)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2011, "Backtest Start Year")
testStartMonth = input(10, "Backtest Start Month")
testStartDay = input(7, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()