Стратегия двойной реверсионной торговли "Золотой крест"

Автор:Чао Чжан, Дата: 2023-11-03 15:32:38
Тэги:

img

Обзор

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

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

Стратегия состоит из двух подстратегий:

  1. 123 Стратегия обращения вспять

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

  2. Стратегия диапазонов простых чисел

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

Эти две подстратегии объединяются, чтобы генерировать окончательные торговые сигналы. То есть длинный сигнал генерируется только тогда, когда обе стратегии производят длинные сигналы. Аналогично и для коротких сигналов. Никакая торговля не выполняется, если сигналы из двух стратегий противоречат друг другу.

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

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

  1. Повышение рентабельности за счет интеграции сигналов

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

  2. Высокий показатель выигрыша при обращении 123

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

  3. Полосы простых чисел фиксируют ценовые модели

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

  4. Новая логика стратегии избегает эксплуатации

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

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

Стратегия также несет в себе следующие риски:

  1. Риск неудачной реверсии

    В качестве стратегии обратного движения, неудачное изменение модели 123 может привести к потерям.

  2. Неисправность диапазонов простых чисел

    Диапазоны простых чисел зависят от правильной настройки параметров. Неправильные параметры могут сделать его неэффективным.

  3. Увеличение частоты торговли от нескольких сигналов

    При объединении двух источников сигнала можно генерировать больше сделок.

  4. Сложная оптимизация

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

Советы по оптимизации

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

  1. Включить стоп-лосс в лимит по сделке.

  2. Оптимизировать параметры диапазонов простых чисел для соответствия последним рыночным условиям.

  3. Контроль частоты торговли, чтобы избежать переоценки стоимости торговли.

  4. Внедрение алгоритмов машинного обучения для автоматизации оптимизации параметров стратегии.

  5. Добавьте дополнительные индикаторы подтверждения, такие как индикаторы объема, чтобы еще больше улучшить точность сигнала.

Резюме

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


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/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.
// The Prime Number Bands indicator was developed by Modulus Financial Engineering 
// Inc. This indicator is charted by indentifying the highest and lowest prime number 
// in the neighborhood and plotting the two series as a band.
//
// 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

PrimeNumberUpBand(price, percent) =>
    res = 0.0
    res1 = 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
    res := iff(res1 == 0, res[1], res1)
    res

PrimeNumberDnBand(price, percent) =>
    res = 0.0
    res2 = 0.0
    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(res2 == 0, res[1], res2)
    res

PNB(percent, Length,srcUp,srcDn) =>
    pos = 0.0
    xPNUB = PrimeNumberUpBand(srcUp, percent)
    xPNDB = PrimeNumberDnBand(srcDn, percent)
    xHighestPNUB = highest(xPNUB, Length)
    xLowestPNUB = lowest(xPNDB, Length)
    pos:= iff(close > xHighestPNUB[1], 1,
             iff(close < xLowestPNUB[1], -1, nz(pos[1], 0))) 
    pos


strategy(title="Combo Backtest 123 Reversal & Prime Number Bands", 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 Bands ----")
percent = input(5, minval=0.01, step = 0.01, title="Tolerance Percentage")
Length_PNB = input(5, minval=1)
srcUp = input(title="Source Up Band", type=input.source, defval=high)
srcDn = input(title="Source Down Band", type=input.source, defval=low)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posPNB = PNB(percent, Length_PNB,srcUp,srcDn)
pos = iff(posReversal123 == 1 and posPNB == 1 , 1,
	   iff(posReversal123 == -1 and posPNB == -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 )

Больше