
Эта стратегия называется количественной торговой стратегией, основанной на сравнении зазоров цен на закрытие K-линии с фильтрацией EMA. Эта стратегия используется для определения зазоров на закрытие K-линии в соответствии с периодом времени торговли, путем статистического определения количества зазоров K-линии и зазоров K-линии, образованных за закрытие K-линии в течение последнего определенного периода времени.
Основная логика этой стратегии состоит в том, чтобы подсчитать количество K-линий, по которым в течение последнего цикла обзора наблюдается повышение закрытия (upCloseCount) и количество K-линий, по которым наблюдается понижение закрытия (downCloseCount), если количество повышенных закрытий больше, то рассматривается как многоголовый рынок, а если количество пониженных закрытий больше, то рассматривается как пустой рынок. Вместе с тем, в сочетании с индикатором EMA, чтобы определить ценовую тенденцию и в качестве фильтра, учитывается увеличение только тогда, когда цена выше EMA, и уменьшение только тогда, когда цена ниже EMA. Кроме того, стратегия также устанавливает торговые периоды 1 и 2 сессии, в которых торгуются только в течение этих двух периодов времени.
Логика заключается в следующем:
Условия запуска многоголового сигнала: inSession true (в течение периода времени торговли) и upCloseCount > downCloseCount (большее количество верхних закрытых K-линий) и close > ema (закрытая цена выше EMA) и currentSignal не является “long” (ныне нет позиций)
Условия запуска пустого сигнала: inSession истинно и downCloseCount > upCloseCount ((большое количество нижних закрытых K-линий) и close < ema ((закрытая цена ниже EMA) и currentSignal не является “short” ((в настоящее время нет позиций))
Ответ:
Эта стратегия используется для идентификации трендовых сигналов в определенный торговый период, путем статистического определения количества многоголовых и пустых K-линий, образованных ценой закрытия K-линий в течение определенного исторического периода, в сочетании с эффектом фильтрации показателя EMA. Однако существует определенный риск ошибочной торговли, который требует улучшения методами оптимизации параметров, стратегии остановки убытков, фильтрации сигналов и т. Д.
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Up vs Down Close Candles Strategy with EMA and Session Time Frames", shorttitle="UvD Strat EMA Session", overlay=true)
// User input to define the lookback period, EMA period, and session strings for time frames
int lookback = input(20, title="Lookback Period")
int emaPeriod = input(50, title="EMA Period")
string session1 = input("0900-1200", title="Time Frame 1 Session")
string session2 = input("1300-1600", title="Time Frame 2 Session")
// Calculate the EMA
float ema = ta.ema(close, emaPeriod)
// State variable to track the current signal
var string currentSignal = na
// Counting up-close and down-close candles within the lookback period
int upCloseCount = 0
int downCloseCount = 0
if barstate.isnew
upCloseCount := 0
downCloseCount := 0
for i = 0 to lookback - 1
if close[i] > close[i + 1]
upCloseCount += 1
else if close[i] < close[i + 1]
downCloseCount += 1
// Define the long (buy) and short (sell) conditions with EMA filter and session time frame
bool inSession = time(timeframe.period, session1) or time(timeframe.period, session2)
bool longCondition = inSession and upCloseCount > downCloseCount and close > ema and currentSignal != "long"
bool shortCondition = inSession and downCloseCount > upCloseCount and close < ema and currentSignal != "short"
// Enter or exit the market based on conditions
if longCondition
currentSignal := "long"
strategy.entry("Buy", strategy.long)
if shortCondition
currentSignal := "short"
strategy.entry("Sell", strategy.short)
// Exit logic for long and short positions
if currentSignal == "long" and strategy.position_size <= 0
strategy.close("Sell")
if currentSignal == "short" and strategy.position_size >= 0
strategy.close("Buy")
plot(ema, color=color.blue, title="EMA")