
Эта стратегия используется для определения направления будущей K-линии, анализируя ценовые показатели закрытия в прошлом, когда N корневой K-линии была выше / ниже цены открытия. В зависимости от того, насколько свободна направленность K-линии, принимаются операции по увеличению или уменьшению пробела.
Основная логика этой стратегии заключается в следующем:
Параметр NUM_CANDLES определяет количество K-линий, которые необходимо проанализировать.
Определяет функцию candle_dir, которая определяет направление одной K-линии. close>open - многоголовый, close
Функция count_candles определяет количество K-линий в разных направлениях в прошедших K-линиях с корнем NUM_CANDLES.
Подсчитать количество многоголовых, пустых и колеблющихся K-линий в прошлых K-линиях корня NUM_CANDLES, хранящихся в ups, dns, neu.
Определите индикатор indic, его значение равно ups-dns плюс положительное и отрицательное значение neu。
Показатели indic показывают, когда нужно делать больше, а когда меньше.
Стратегия принимает торговые решения, оценивая вероятность будущего направления K-линий путем статистики определенного количества K-линий. С помощью параметра NUM_CANDLES можно контролировать количество статистических K-линий и регулировать чувствительность стратегии.
Стратегические идеи понятны, легко интерпретируются и проверяются.
Не требуется вычислять сложные показатели, требуются только данные K-линий, снижаются расходы на вычисления.
Количество статистических K-линий может быть скорректировано с помощью параметров, контролирующих чувствительность стратегии.
Используется в любых сортах и в любом цикле, имеет высокую пригодность для применения.
Легкая оптимизация параметров, поиск оптимальных комбинаций параметров.
Невозможность урегулировать колебания рынка может привести к частому открытию и закрытию позиций.
Неправильный статистический цикл может привести к задержке сигнала, требуя разумной настройки параметров.
Невозможность справиться с обратным трендом может привести к риску неудач.
Необходимо учитывать влияние стоимости транзакций, чтобы предотвратить их чрезмерную частоту.
Необходимо обратить внимание на проблему оптимизации параметров, которая должна быть подтверждена многократным рыночным отзывом.
Можно рассмотреть возможность включения логики стоп-лосса, чтобы снизить риск потерь.
Это может быть связано с трендовыми показателями, чтобы избежать обратных операций.
Можно увеличить статистический цикл или использовать низкий цикл, оптимизировать параметры для повышения стабильности стратегии.
Можно рассмотреть возможность комбинирования различных сортов, чтобы повысить вероятность победы в стратегии.
Параметры автоматической оптимизации могут быть объединены с методами машинного обучения.
Эта стратегия основана на анализе K-линейной направленности, определяет направление торговли, понятна и понятна, а также может контролировать чувствительность стратегии с помощью параметров. Преимущества стратегии заключаются в простоте логики, низких требованиях к использованию и широком диапазоне применения, но также существуют определенные риски, требующие дальнейшей оптимизации для повышения стабильности стратегии. В целом, эта стратегия предоставляет простую и практичную торговую идею для количественной торговли.
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Refined CandleCounter Strategy by origo", overlay=true)
// how many candles to count
NUM_CANDLES = 7
// determine candle direction
candle_dir = close > open ? 1 : (round(close-open) == 0 ? 0 : -1)
// return # of candles with a given direction
count_candles(dir, max) =>
count = 0
for i = 0 to max
if candle_dir[i] == dir
count := count + 1
count
ups = count_candles(1, NUM_CANDLES)
dns = count_candles(-1, NUM_CANDLES)
neu = count_candles(0, NUM_CANDLES)
indic = ups-dns
if indic > 0
indic := indic+neu
else
indic := indic-neu
plotarrow(neu, title="UP vs DN")
longCondition = (indic) > 0
shortCondition = (indic) <= 0
strategy.entry("buy", strategy.long, 1, when = longCondition and not shortCondition)
strategy.entry("sell", strategy.short, 1, when = shortCondition and not longCondition)