
Основная идея этой стратегии заключается в том, чтобы решить, делать ли больше или делать пустое в зависимости от цвета последней N K-линии. Если в конце N только K-линии все зеленые, то делать больше; если в конце N только K-линии все красные, то делать пустое.
Эта стратегия основана на нескольких важных параметрах:
Ключевая логика состоит в том, чтобы проходить по последним K-линиям numCandlesToCheck только с помощью цикла for и в режиме реального времени оценивать количество последовательно появляющихся зеленых K-линий и красных K-линий. Если последовательность красных K-линий ≥numCandlesToCheck, то lastNCandlesRed отмечается как истинная. Если последовательность зеленых K-линий ≥numCandlesToCheck, то lastNCandlesGreen отмечается как истинная.
Если lastNCandlesGreen - истинно, то если inverseLogic - неверно, то сделайте больше; если истинно, то сделайте пусто. Напротив, если lastNCandlesRed - истинно, то если inverseLogic - неверно, то сделайте пусто; если истинно, то сделайте больше.
Независимо от того, сколько времени будет сделано, счетчик barsSinceEntry будет перенастроен на 0 после открытия позиции. Когда barsSinceEntry больше, чем равно numCandlesToExit, текущая позиция будет уравнена.
Это интересная стратегия, которая использует решение о цвете K-линии, добавляет параметры встроенной реверсивной логики встроенной логики, которая позволяет гибко адаптировать логику множественного просчета. Основные преимущества:
В этой стратегии также есть некоторые риски, о которых следует помнить:
В связи с вышеуказанными рисками можно принять следующие меры для их контроля и оптимизации:
Эта стратегия может быть оптимизирована в следующих направлениях:
Общая концепция стратегии ясна и понятна, используя простой цвет 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")