Стратегия обратной логики для последних N свечей


Дата создания: 2023-12-26 11:00:29 Последнее изменение: 2023-12-26 11:00:29
Копировать: 1 Количество просмотров: 696
1
Подписаться
1623
Подписчики

Стратегия обратной логики для последних N свечей

Обзор

Основная идея этой стратегии заключается в том, чтобы решить, делать ли больше или делать пустое в зависимости от цвета последней N K-линии. Если в конце N только K-линии все зеленые, то делать больше; если в конце N только K-линии все красные, то делать пустое.

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

Эта стратегия основана на нескольких важных параметрах:

  1. numCandlesToCheck: используется для указания количества K-строков, которые необходимо проверить
  2. numCandlesToExit: укажите количество K-линий, которые необходимо выйти из позиции после удержания позиции
  3. inverseLogic: параметр обратной логики, который в режиме реального времени противопоставляет оригинальную многопространственную логику

Ключевая логика состоит в том, чтобы проходить по последним K-линиям numCandlesToCheck только с помощью цикла for и в режиме реального времени оценивать количество последовательно появляющихся зеленых K-линий и красных K-линий. Если последовательность красных K-линий ≥numCandlesToCheck, то lastNCandlesRed отмечается как истинная. Если последовательность зеленых K-линий ≥numCandlesToCheck, то lastNCandlesGreen отмечается как истинная.

Если lastNCandlesGreen - истинно, то если inverseLogic - неверно, то сделайте больше; если истинно, то сделайте пусто. Напротив, если lastNCandlesRed - истинно, то если inverseLogic - неверно, то сделайте пусто; если истинно, то сделайте больше.

Независимо от того, сколько времени будет сделано, счетчик barsSinceEntry будет перенастроен на 0 после открытия позиции. Когда barsSinceEntry больше, чем равно numCandlesToExit, текущая позиция будет уравнена.

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

Это интересная стратегия, которая использует решение о цвете K-линии, добавляет параметры встроенной реверсивной логики встроенной логики, которая позволяет гибко адаптировать логику множественного просчета. Основные преимущества:

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

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

В этой стратегии также есть некоторые риски, о которых следует помнить:

  1. Цвета K-линий не полностью отражают ситуацию, отслеживая вероятность ошибочного сигнала.
  2. Не удалось определить оптимальное значение параметра numCandlesToCheck
  3. Не удалось определить оптимальное значение параметра numCandlesToExit
  4. Неправильная настройка параметров обратной логики может привести к увеличению потерь
  5. Проблема неэффективного контроля за одиночными остановками

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

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

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

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

  1. Увеличение определения параметров дисконтирования, чтобы избежать подставки
  2. Значения оптимальных параметров numCandlesToCheck и numCandlesToExit
  3. Фильтрация ошибочного сигнала в сочетании с индикатором тенденции большого цикла
  4. Присоединение к стратегии стоп-лосс и стоп-стоп
  5. Проверка эффективности стратегий проверки различных сортов
  6. Сравнение доходности с оригинальной и обратной логикой

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

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

Исходный код стратегии
/*backtest
start: 2022-12-25 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Last Number of  Candles", overlay=true)

// Define the condition for a green candle
isGreenCandle(candle) =>
    close[candle] > open[candle]

// Define the condition for a red candle
isRedCandle(candle) =>
    close[candle] < open[candle]

// Input to specify the number of candles to check
numCandlesToCheck = input(5, title="Number of Candles to Check")
numCandlesToExit = input(2, title="Number of Candles To Exit")  // Corrected the input title

// Initialize variables to count consecutive green and red candles
var int consecutiveGreenCandles = 0
var int consecutiveRedCandles = 0

// Initialize barsSinceEntry outside the loop
var int barsSinceEntry = 0

// Loop through the last "numCandlesToCheck" candles
for i = 0 to numCandlesToCheck - 1
    if isGreenCandle(i)
        consecutiveGreenCandles := consecutiveGreenCandles + 1
        consecutiveRedCandles := 0 // Reset the count for consecutive red candles
    else if isRedCandle(i)
        consecutiveRedCandles := consecutiveRedCandles + 1
        consecutiveGreenCandles := 0 // Reset the count for consecutive green candles

// Check if the last "numCandlesToCheck" candles are green or red
lastNCandlesGreen = consecutiveGreenCandles >= numCandlesToCheck
lastNCandlesRed = consecutiveRedCandles >= numCandlesToCheck

// Calculate the quantity based on the investment value and current asset price
investmentValue = input(10000, title="Investment Value")
var assetPrice = close
var quantity = investmentValue / assetPrice


inverseLogic = input(false, title="inverseLogic")

// Entry condition: Open a buy order if the last "numCandlesToCheck" candles are green
if lastNCandlesGreen
    if inverseLogic
        strategy.entry("Short", strategy.long, qty = quantity)
    else 
        strategy.entry("Buy", strategy.long, qty = quantity)// Reset barsSinceEntry when entering a trade
    barsSinceEntry := 0

// Entry condition: Open a short order if the last "numCandlesToCheck" candles are red
if lastNCandlesRed
    if inverseLogic
        strategy.entry("Buy", strategy.long, qty = quantity)

    else 
        strategy.entry("Short", strategy.short, qty = quantity)
    // Reset barsSinceEntry when entering a trade
    barsSinceEntry := 0

// Increment barsSinceEntry
barsSinceEntry := barsSinceEntry + 1

// Exit condition: Close the position after 2 bars
if barsSinceEntry >= numCandlesToExit
    strategy.close("Buy")
    strategy.close("Short")