
Esta estratégia é chamada de estratégia de negociação quantitativa baseada na comparação de preços de fechamento de K-line com o filtro EMA. A estratégia é baseada na comparação de preços de fechamento de K-line com o filtro EMA. A estratégia é baseada na comparação de preços de fechamento de K-line com o filtro EMA.
A lógica central da estratégia é a estatística do número de linhas K de fechamento ascendente no último período de lookback upCloseCount e o número de linhas K de fechamento descendente downCloseCount, se o número de fechamento ascendente for maior, será considerado um mercado de mais de um lado, se o número de fechamento descendente for maior, será considerado um mercado vazio. Ao mesmo tempo, em combinação com o indicador EMA para determinar a tendência dos preços e como filtro, só é considerado o aumento quando o preço está acima do EMA e o fechamento quando o preço está abaixo do EMA. Além disso, a estratégia também define períodos de negociação session1 e session2, em que apenas os dois períodos de negociação.
A lógica do julgamento é a seguinte:
Condições de ação do sinal múltipla: inSession é “true” (dentro do intervalo de tempo de negociação) e upCloseCount > downCloseCount (mais linhas K de fechamento ascendentes) e close > ema (preço de fechamento acima do EMA) e currentSignal não é “long” (não há posição atual)
Condição de acionamento do sinal de cabeça vazia: inSession é verdadeiro e downCloseCount > upCloseCount ((o número maior de linhas de fechamento de K em queda) e close < ema ((o preço de fechamento é inferior ao EMA) e currentSignal não é “short” ((a posição atual não está em vigor))
Resposta:
Esta estratégia identifica os sinais de tendência em um determinado período de negociação definido através da estatística do número de linhas K de fechamento de liquidação de linhas e linhas vazias em um determinado período histórico, combinado com o efeito de filtragem do indicador EMA. Mas também existe um certo risco de erro de negociação.
/*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")