
Эта стратегия объединяет два фактора - 123 reversal и positive oscillation, чтобы обеспечить количественную торговлю, управляемую двумя факторами. Эта стратегия, одновременно с тем, чтобы улавливать краткосрочные возможности для реверса, также позволяет идентифицировать более длительные тенденции, чтобы обеспечить низкий риск избыточного возврата.
Первая часть - стратегия 123 reversals. Эта стратегия использует характеристики обратного ценового обращения в течение 2 дней для определения точки купли-продажи. Когда цена закрытия поднимается на 2 дня подряд и медленная линия K ниже 50, считается, что переоценка была неправильной, создавая точку покупки; когда цена закрытия падает на 2 дня подряд и быстрая линия K выше 50, считается, что она перескочила, создавая точку продажи.
Вторая часть - это стратегия индикатора колебания множественных чисел. Этот индикатор рассчитывает множество чисел, наиболее близких к текущей цене в указанном ценовом диапазоне, и выводит разницу с текущей ценой. Положительная величина означает, что текущая цена близка к верхней части множественного числа, а отрицательная величина означает, что текущая цена близка к нижней части множественного числа.
Принцип объединения торговых сигналов двух подстратегий заключается в следующем: в случае синхронного сигнала производится фактический торговый сигнал, а в случае иноверсионного сигнала не открывается позиция.
Стратегия сочетает в себе двойные факторы, учитывая как краткосрочные обратные эффекты, так и долгосрочные трендовые характеристики, оценивая рынок с разных точек зрения и повышая устойчивость стратегии к риску.
В отличие от одной стратегии импульса, эта стратегия может использовать обратный фактор для своевременного остановки или обратного открытия позиции, чтобы эффективно контролировать внутридневный риск, когда внезапные события вызывают краткосрочный скачок цены.
В отличие от одиночной стратегии реверса, эта стратегия вводит простые количественные колебания, чтобы определить направление тенденции, что позволяет избежать переплаты из-за частого реверса.
Наибольший риск этой стратегии заключается в том, что существует конфликт сигналов между двумя факторами. Если прямой обратный курс может привести к убыткам, когда 123 обратный показывает признаки перекупа и перепродажи, создавая обратный сигнал, а индекс платового колебания показывает, что он все еще в тренде.
Чтобы контролировать этот риск, в стратегию добавлена дополнительная логика суждения, фактический торговый сигнал производится только при синхронизации двухфакторных сигналов. Однако это также может пропустить некоторые торговые возможности.
Оптимизация параметров стохастического показателя для поиска наиболее подходящей комбинации обратных параметров для конкретного показателя
Оптимизация параметров пропускной способности в процентах от качественного показателя колебаний, снижение шума в сделках
Увеличение стратегий по сдерживанию убытков, чтобы предотвратить увеличение убытков в одностороннем движении
Добавление модуля управления позициями, регулирование позиций в различных рыночных условиях
Включение модели машинного обучения для определения двухфакторной надежности сигнала снижает вероятность конфликта сигнала
Эта стратегия успешно сочетает в себе краткосрочные обратные факторы с долгосрочными трендовыми факторами для достижения количественных сделок с низким риском. Эффективное использование двойных факторов фильтрации шума сделок и установка дополнительных суждений логического контроля риска является практической стратегией для стабильного дохода. Впоследствии будет проводиться постоянная оптимизация параметров и расширение функций, чтобы стратегия была более адаптирована к характеристикам реального рынка.
/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 28/04/2021
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
// The strategy sells at market, if close price is lower than the previous close price
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Determining market trends has become a science even though a high number or people
// still believe it’s a gambling game. Mathematicians, technicians, brokers and investors
// have worked together in developing quite several indicators to help them better understand
// and forecast market movements.
//
// Developed by Modulus Financial Engineering Inc., the prime number oscillator indicates the
// nearest prime number, be it at the top or the bottom of the series, and outlines the
// difference between that prime number and the respective series.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
vFast = sma(stoch(close, high, low, Length), KSmoothing)
vSlow = sma(vFast, DLength)
pos = 0.0
pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0)))
pos
PrimeNumberOscillator(price, percent) =>
res = 0.0
res1 = 0.0
res2 = 0.0
for j = price to price + (price * percent / 100)
res1 := j
for i = 2 to sqrt(price)
res1 := iff(j % i == 0 , 0, j)
if res1 == 0
break
if res1 > 0
break
for j = price to price - (price * percent / 100)
res2 := j
for i = 2 to sqrt(price)
res2 := iff(j % i == 0 , 0, j)
if res2 == 0
break
if res2 > 0
break
res := iff(res1 - price < price - res2, res1 - price, res2 - price)
res := iff(res == 0, res[1], res)
res
PNO(percent) =>
pos = 0.0
xPNO = PrimeNumberOscillator(close, percent)
pos:= iff(xPNO > 0, 1,
iff(xPNO < 0, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Prime Number Oscillator", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Prime Number Oscillator ----")
percent = input(5, minval=0.01, step = 0.01, title="Tolerance Percentage")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posPNO = PNO(percent)
pos = iff(posReversal123 == 1 and posPNO == 1 , 1,
iff(posReversal123 == -1 and posPNO == -1, -1, 0))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1 , 1, pos))
if (possig == 1 )
strategy.entry("Long", strategy.long)
if (possig == -1 )
strategy.entry("Short", strategy.short)
if (possig == 0)
strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )