
Cette stratégie est appelée stratégie de trading quantifiée basée sur la comparaison de la marge de manœuvre de clôture de la ligne K avec le filtre EMA. Cette stratégie consiste à calculer le nombre de lignes K à tête multiple et de lignes K à tête vide constituées par la marge de manœuvre de la ligne K au cours d’une période donnée, en combinaison avec le filtre EMA, afin de juger si le signal de manœuvre de clôture de la ligne K correspond à la période de négociation.
La logique centrale de la stratégie est de calculer le nombre de lignes K à la hausse et à la baisse de la clôture au cours du dernier cycle de lookback. Si le nombre de lignes K à la hausse et à la clôture est plus élevé, il est jugé comme un marché à plusieurs niveaux. Si le nombre de lignes K à la baisse est plus élevé, il est jugé comme un marché à vide.
La logique du jugement est la suivante:
Conditions de déclenchement du signal multiple: inSession est “true” (pendant la période de négociation) et upCloseCount > downCloseCount (plus de lignes K de clôture à la hausse) et close > ema (prix de clôture supérieur à l’EMA) et currentSignal n’est pas “long” (aucune position en cours)
Conditions de déclenchement du signal de tête vide: inSession est vrai et downCloseCount > upCloseCount (plus de lignes K de clôture en baisse) et close < ema (prix de clôture inférieur à l’EMA) et currentSignal n’est pas “short” (aucune position en cours)
La réponse:
Cette stratégie permet d’identifier les signaux de tendance au cours d’une période de négociation donnée en calculant le nombre de lignes K de clôture de la ligne K et de lignes K vides au cours d’une période historique donnée, en combinant l’effet de filtrage de l’indicateur EMA. Elle a un certain effet de suivi de la tendance. Cependant, il existe un certain risque d’erreur de négociation.
/*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")