Стратегия серфа

Автор:Чао Чжан, Дата: 2023-10-17 15:30:18
Тэги:

img

Обзор

Стратегия Surf Rider - это комбинационная стратегия, которая объединяет в себе различные трендовые стратегии для создания более надежных торговых сигналов. Она объединяет в себе стратегию 123 Reversal и стратегию ECO и направлена на создание более точных торговых сигналов после подтверждения тренда.

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

Стратегия Surf Rider объединяет два различных типа стратегий: стратегию обратного движения и стратегию следующего тренда.

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

Во-вторых, стратегия ECO - это стратегия, следующая за трендом. Она использует размер и направление ценовых свечей для расчета импульса и определения направления тренда.

Стратегия Surf Rider объединяет сигналы обеих стратегий. Она будет входить в позиции только тогда, когда обе стратегии генерируют сигналы в одном направлении, например, когда ECO показывает тенденцию к росту, а стратегия 123 Reversal также дает сигнал к покупке. Это позволяет избежать потери сделок из-за неправильных суждений из одной стратегии.

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

По сравнению с единой стратегией, стратегия Surf Rider имеет следующие преимущества:

  1. Сочетание стратегий перехода и тренда дополняет их сильные и слабые стороны, делая торговые сигналы более надежными.

  2. Стратегия 123 Reversal использует стохастический индикатор для выявления перекупленных и перепроданных областей, в то время как стратегия ECO оценивает направление динамики цен.

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

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

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

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

Несмотря на использование нескольких стратегий для снижения рисков отдельной стратегии, стратегия Surf Rider по-прежнему содержит следующие риски в торговле:

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

  2. В условиях низкой ликвидности стратегия ECO неэффективна, поэтому ее следует избегать.

  3. Фильтр двойной стратегии может пропустить некоторые сигналы прибыли, которые отдельные стратегии могли бы поймать отдельно.

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

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

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

Существует дополнительное пространство для оптимизации стратегии Surf Rider:

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

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

  3. Попробуйте адаптивную оптимизацию параметров на основе машинного обучения для динамической настройки параметров.

  4. Добавьте дополнительные стратегии для дальнейшего улучшения точности сигнала.

  5. Испытать стабильность в различных рыночных условиях и соответственно корректировать параметры.

  6. Разработка автоматизированных систем обратного тестирования и исполнения для более строгой оптимизации стратегии.

Заключение

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


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 16/04/2020
// 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
// We call this one the ECO for short, but it will be listed on the indicator list 
// at W. Blau’s Ergodic Candlestick Oscillator. The ECO is a momentum indicator. 
// It is based on candlestick bars, and takes into account the size and direction 
// of the candlestick "body". We have found it to be a very good momentum indicator, 
// and especially smooth, because it is unaffected by gaps in price, unlike many other 
// momentum indicators.
// We like to use this indicator as an additional trend confirmation tool, or as an 
// alternate trend definition tool, in place of a weekly indicator. The simplest way 
// of using the indicator is simply to define the trend based on which side of the "0" 
// line the indicator is located on. If the indicator is above "0", then the trend is up. 
// If the indicator is below "0" then the trend is down. You can add an additional 
// qualifier by noting the "slope" of the indicator, and the crossing points of the slow 
// and fast lines. Some like to use the slope alone to define trend direction. If the 
// lines are sloping upward, the trend is up. Alternately, if the lines are sloping 
// downward, the trend is down. In this view, the point where the lines "cross" is the 
// point where the trend changes.
// When the ECO is below the "0" line, the trend is down, and we are qualified only to 
// sell on new short signals from the Hi-Lo Activator. In other words, when the ECO is 
// above 0, we are not allowed to take short signals, and when the ECO is below 0, we 
// are not allowed to take long signals. 
//
// 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

ECO(r,s) =>
    pos = 0
    xCO = close - open
    xHL = high - low
    xEMA = ema(ema(xCO, r), s)
    xvEMA = ema(ema(xHL, r), s)
    nRes = 100 * (xEMA / xvEMA)
    pos := iff(nRes > 0, 1,
	         iff(nRes <= 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & ECO Strategy", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
r = input(32, minval=1)
s = input(12, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posECO = ECO(r,s)
pos = iff(posReversal123 == 1 and posECO == 1 , 1,
	   iff(posReversal123 == -1 and posECO == -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 )

Больше