
Это стратегия для отслеживания трендов, основанная на 44-циклической скользящей средней (EMA). Эта стратегия в основном ищет возможности для покупки в восходящем тренде, чтобы определить время входа, анализируя несколько условий, таких как скольжение EMA, графическая форма и отступление цены. Стратегия разработана для более коротких периодов времени, таких как 2 минуты и 5 минут, и предназначена для захвата торговых возможностей в краткосрочных колебаниях цен.
Стратегия Gaussian Cross EMA Trend Slider Tracking - это система отслеживания тенденций, объединяющая несколько технических показателей. Поскольку она использует многомерные суждения, такие как EMA, анализ графических форм и ценовое отступление, стратегия имеет большой потенциал для выявления восходящих тенденций и оптимизации времени входа в рынок. Однако пользователям необходимо обратить внимание на контроль риска чрезмерной торговли и оптимизацию параметров для различных рыночных условий.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-09-24 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Custom Strategy with EMA and Candle Conditions", overlay=true)
// Define parameters
ema_length = 44
// Calculate EMA
ema_44 = ta.ema(close, ema_length)
// Calculate the slope of the EMA
ema_slope = ta.ema(close, ema_length) - ta.ema(close[9], ema_length)
// Define a threshold for considering the EMA flat
flat_threshold = 0.5
// Check if the EMA is flat or inclined
ema_is_inclined = math.abs(ema_slope) > flat_threshold
// Define the previous candle details
prev_candle_high = high[1]
prev_candle_low = low[1]
prev_candle_close = close[1]
prev_candle_open = open[1]
// Candle before the previous candle (for high comparison)
candle_before_prev_high = high[2]
// Current candle details
current_candle_high = high
current_candle_low = low
current_candle_close = close
current_candle_open = open
// Previous to previous candle details
prev_prev_candle_low = low[2]
// Previous candle body and wick length
prev_candle_body = math.abs(prev_candle_close - prev_candle_open)
prev_candle_wick_length = math.max(prev_candle_high - prev_candle_close, prev_candle_close - prev_candle_low)
// Calculate retrace level for the current candle
retrace_level = prev_candle_close - (prev_candle_close - prev_candle_low) * 0.5
// Check if the previous candle's wick is smaller than its body
prev_candle_condition = prev_candle_wick_length < prev_candle_body
// Check if the previous candle is a green (bullish) candle and if the previous candle's close is above EMA
prev_candle_green = prev_candle_close > prev_candle_open
prev_candle_red = prev_candle_close < prev_candle_open
prev_candle_above_ema = prev_candle_close > ema_44
// Entry condition: The current candle has retraced to 50% of the previous candle's range, previous candle was green and above EMA, and the high of the current candle is above the retrace level, and EMA is inclined
entry_condition = prev_candle_close > candle_before_prev_high and
prev_candle_green and
prev_candle_above_ema and
current_candle_low <= retrace_level and
current_candle_high >= retrace_level and ema_is_inclined
// Exit condition
exit_condition = (strategy.position_size > 0 and prev_candle_red) or (strategy.position_size > 0 and current_candle_low < prev_candle_low)
// Ensure only one trade is open at a time
single_trade_condition = strategy.position_size == 0
// Plot EMA for visualization
plot(ema_44, color=color.blue, title="44 EMA")
// Plot conditions for debugging
plotshape(series=entry_condition and single_trade_condition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=exit_condition, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")
// Print entry condition value on chart
var label entry_label = na
if (entry_condition and single_trade_condition)
entry_label := label.new(bar_index, low, text="Entry Condition: TRUE", color=color.green, textcolor=color.white, size=size.small, yloc=yloc.belowbar)
else
entry_label := label.new(bar_index, high, text="Entry Condition: FALSE", color=color.red, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
// Debugging: Plot retrace level and other key values
plot(retrace_level, color=color.orange, title="Retrace Level")
plot(prev_candle_high, color=color.purple, title="Previous Candle High")
plot(candle_before_prev_high, color=color.yellow, title="Candle Before Previous High")
// Trigger buy order if entry condition and single trade condition are met
if (entry_condition and single_trade_condition)
strategy.entry("Buy", strategy.long)
// Trigger sell order if exit condition is met
if (exit_condition)
strategy.close("Buy")