Стратегия количественного прорыва цен на торговлю


Дата создания: 2023-12-22 12:42:15 Последнее изменение: 2023-12-22 12:42:15
Копировать: 0 Количество просмотров: 599
1
Подписаться
1621
Подписчики

Стратегия количественного прорыва цен на торговлю

Обзор

Стратегия - это краткосрочная количественная торговая стратегия, основанная на простых движущихся средних (SMA), индикаторных движущихся средних (EMA), каналах Келтнера, MACD и случайных (Stochastic). Она объединяет многомерные сигналы канала Келтнера, MACD и Stochastic в зависимости от того, будет ли цена преодолевать SMA и EMA, чтобы автоматизировать вход и выход.

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

Эта стратегия использует 25-циклические SMA, 200-циклические EMA для построения двойного движущегося среднего показателя. При этом, когда цена пересекает двойную движущуюся среднюю снизу вверх, создается сигнал покупки. При этом, когда цена пересекает двойную движущуюся среднюю снизу вверх, создается сигнал продажи.

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

В частности, когда цена закрытия выше SMA и EMA, и находится внутри канала Келтнера, MACD-пост имеет отрицательное значение, Stochastic% K-значение ниже 50 дает сигнал покупать, делать больше; когда цена закрытия ниже SMA и EMA, и находится внутри канала Келтнера, MACD-пост имеет положительное значение, Stochastic% K-значение выше 50, дает сигнал продавать, делать пустоту.

Стратегические преимущества

  1. Использование двойных скользящих средних в сочетании с канальными показателями позволяет эффективно отфильтровывать ложные рыночные прорывы.
  2. Синтезирование сигналов различных технических показателей повышает их надежность.
  3. Правила многопространственного сигнала ясны, а программное исполнение эффективно.
  4. Количественная стратегия, применяемая к часто совершаемым сделкам на коротких линиях.

Стратегические риски и оптимизация

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

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

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

Исходный код стратегии
/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
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/
// © exlux99

//@version=5
strategy(title="Scalping Trading System Crypto and Stocks", overlay=true)
src = input(low, title="Source")

//sma and ema
len = input.int(25, minval=1, title="Length SMA" , group="Moving Averages")
len2 = input.int(200, minval=1, title="Length EMA", group="Moving Averages")

out = ta.sma(src, len)
out2 = ta.ema(src, len2)


//keltner
lengthk = input.int(10, minval=1, title="Length Keltner Channel",group="Keltner")
mult = input(2.0, "Multiplier",group="Keltner")
BandsStyle = input.string("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style",group="Keltner")
atrlength = input(14, "ATR Length",group="Keltner")

ma = ta.sma(src, lengthk)
rangema = BandsStyle == "True Range" ? ta.tr(true) : BandsStyle == "Average True Range" ? ta.atr(atrlength) : ta.rma(high - low, lengthk)
upper = ma + rangema * mult
lower = ma - rangema * mult

//stoch
periodK = input.int(10, title="%K Length", minval=1,group="Stochastic")
smoothK = input.int(1, title="%K Smoothing", minval=1,group="Stochastic")
periodD = input.int(1, title="%D Smoothing", minval=1,group="Stochastic")
k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)

//macd 1
fast_length = input(title="Fast Length MACD", defval=4,group="MACD Fast")
slow_length = input(title="Slow Length MACD", defval=34,group="MACD Fast")
signal_length = input.int(title="Signal Smoothing MACD",  minval = 1, maxval = 50, defval = 5,group="MACD Fast")
sma_source = input.string(title="Oscillator MA Type MACD",  defval="EMA", options=["SMA", "EMA"],group="MACD Fast")
sma_signal = input.string(title="Signal Line MA Type MACD", defval="EMA", options=["SMA", "EMA"],group="MACD Fast")

fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal




long= close > out and close < upper and close > lower and hist < 0 and k < 50 and close > out2 

short= close < out and close < upper and close > lower and hist > 0 and k > 50 and close < out2 

strategy.entry("long",strategy.long,when= long)

strategy.entry("short",strategy.short,when=short)