Прогрессивная стратегия тренда BB KC


Дата создания: 2024-01-26 15:10:41 Последнее изменение: 2024-01-26 15:10:41
Копировать: 0 Количество просмотров: 725
1
Подписаться
1617
Подписчики

Прогрессивная стратегия тренда BB KC

Обзор

Эта стратегия использует комбинацию сигналов Брин-Бенда и Кэйт-Лайн для идентификации рыночных тенденций. Брин-Бенд - это инструмент технического анализа, который определяет каналы в зависимости от диапазона ценовых колебаний; Кэйт-Лайн - это технический индикатор, который объединяет ценовую волатильность и тенденциозность для определения поддержки или давления.

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

  1. Расчет 20-циклических средних, верхних и нижних путей Блинна с пропускной способностью в два раза больше стандартной разницы.
  2. Расчет 20-циклических средних, верхних и нижних колебаний Кэйт, пропускная способность которой в 2,2 раза превышает реальный диапазон колебаний.
  3. Делайте больше, когда Кейт онлайн на трассе на трассе через Брин-полосу, и количество сделок больше, чем среднее количество за 10 циклов.
  4. При переходе Кейт под линией через подвесную полосу Брин и при переходе больше среднего значения за 10 циклов, пустота.
  5. Если после открытия позиции 20 K-линий не вышли, то принудительный стоп-лосс выходит.
  6. Стойкость после лизинга - 1,5%, после лизинга - 1,5%; отслеживаемая потеря - 2% после лизинга, отслеживаемая потеря - 2% после лизинга.

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

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

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

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

  1. Полосы Бринна и линии Кейт - это индикаторы, основанные на движущихся средних и в сочетании с волатильными расчетами, которые могут создавать ошибочные сигналы в условиях шока.
  2. Необходимо учитывать, что в некоторых странах существуют механизмы безвозмездной прибыли, которые могут привести к чрезмерным потерям.
  3. Обратные сигналы более распространены, и после корректировки параметров легко потерять возможность тренда. Для уменьшения риска ошибочных сигналов можно отпустить стоп-лосс или включить дополнительные фильтрующие сигналы, такие как MACD.

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

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

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

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

Исходный код стратегии
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © jensenvilhelm

//@version=5
strategy("BB and KC Strategy", overlay=true)

// Define the input parameters for the strategy, these can be changed by the user to adjust the strategy
kcLength = input.int(20, "KC Length", minval=1) // Length for Keltner Channel calculation
kcStdDev = input.float(2.2, "KC StdDev") // Standard Deviation for Keltner Channel calculation
bbLength = input.int(20, "BB Length", minval=1) // Length for Bollinger Bands calculation
bbStdDev = input.float(2, "BB StdDev") // Standard Deviation for Bollinger Bands calculation
volumeLength = input.int(10, "Volume MA Length", minval=1) // Length for moving average of volume calculation
stopLossPercent = input.float(1.5, "Stop Loss (%)") // Percent of price for Stop loss 
trailStopPercent = input.float(2, "Trail Stop (%)") // Percent of price for Trailing Stop
barsInTrade = input.int(20, "Bars in trade before exit", minval = 1) // Minimum number of bars in trade before considering exit

// Calculate Bollinger Bands and Keltner Channel
[bb_middle, bb_upper, bb_lower] = ta.bb(close, bbLength, bbStdDev) // Bollinger Bands calculation
[kc_middle, kc_upper, kc_lower] = ta.kc(close, kcLength, kcStdDev) // Keltner Channel calculation

// Calculate moving average of volume
vol_ma = ta.sma(volume, volumeLength) // Moving average of volume calculation

// Plotting Bollinger Bands and Keltner Channels on the chart
plot(bb_upper, color=color.red) // Bollinger Bands upper line
plot(bb_middle, color=color.blue) // Bollinger Bands middle line
plot(bb_lower, color=color.red) // Bollinger Bands lower line
plot(kc_upper, color=color.rgb(105, 255, 82)) // Keltner Channel upper line
plot(kc_middle, color=color.blue) // Keltner Channel middle line
plot(kc_lower, color=color.rgb(105, 255, 82)) // Keltner Channel lower line

// Define entry conditions: long position if upper KC line crosses above upper BB line and volume is above MA of volume
// and short position if lower KC line crosses below lower BB line and volume is above MA of volume
longCond = ta.crossover(kc_upper, bb_upper) and volume > vol_ma // Entry condition for long position
shortCond = ta.crossunder(kc_lower, bb_lower) and volume > vol_ma // Entry condition for short position

// Define variables to store entry price and bar counter at entry point
var float entry_price = na // variable to store entry price
var int bar_counter = na // variable to store bar counter at entry point

// Check entry conditions and if met, open long or short position
if (longCond)
    strategy.entry("Buy", strategy.long) // Open long position
    entry_price := close // Store entry price
    bar_counter := 1 // Start bar counter
if (shortCond)
    strategy.entry("Sell", strategy.short) // Open short position
    entry_price := close // Store entry price
    bar_counter := 1 // Start bar counter

// If in a position and bar counter is not na, increment bar counter
if (strategy.position_size != 0 and na(bar_counter) == false)
    bar_counter := bar_counter + 1 // Increment bar counter

// Define exit conditions: close position if been in trade for more than specified bars
// or if price drops by more than specified percent for long or rises by more than specified percent for short
if (bar_counter > barsInTrade) // Only consider exit after minimum bars in trade
    if (bar_counter >= barsInTrade)
        strategy.close_all() // Close all positions
    // Stop loss and trailing stop
    if (strategy.position_size > 0)
        strategy.exit("Sell", "Buy", stop=entry_price * (1 - stopLossPercent/100), trail_points=entry_price * trailStopPercent/100) // Set stop loss and trailing stop for long position
    else if (strategy.position_size < 0)
        strategy.exit("Buy", "Sell", stop=entry_price * (1 + stopLossPercent/100), trail_points=entry_price * trailStopPercent/100) // Set stop loss and trailing stop for short position