
Эта стратегия применяет систему двойных средних линий для поиска потенциальных возможностей для прорыва в конкретных акциях или цифровых валютах. Основная идея заключается в том, чтобы покупать акции или цифровые валюты, когда краткосрочная средняя линия отражается ниже долгосрочной средней линии. Продавать акции или цифровые валюты, когда цены перепроверяют долгосрочную среднюю линию.
Эта стратегия использует в качестве торгового сигнала простой скользящий средний ((SMA) двух различных циклов. Первый - более длинный период SMA, который представляет собой направление общей тенденции. Второй - более короткий период SMA, который используется для захвата краткосрочных колебаний цен.
Когда краткосрочный SMA пересекает долгосрочный SMA снизу, это означает, что цена в целом находится в тенденции к росту, поэтому стратегия открывает многоочередные позиции. Когда цена падает, перепроверяя долгосрочный SMA, это предвещает конец краткосрочного pullback, когда стратегия рассматривает остановку убытков или закрытие позиции с прибылью.
Кроме того, в стратегии также установлены условия для перепродажи и перекупа, чтобы избежать торговли в крайних случаях. Позиции могут быть открыты только при одновременном выполнении условий двойного равновесного пересечения и разумной оценки.
В этой стратегии есть место для дальнейшей оптимизации:
Эта стратегия объединяет преимущества отслеживания тенденций и отклонения торгов, используя двулинейную систему для определения возможностей. В то же время, встроенные определенные условия перекупа и перепродажи позволяют избежать ненужных открытий позиций. Это очень практичная количественная стратегия торговли, которая заслуживает глубокого изучения и оптимизации.
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=5
strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Inputs
ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA')
ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA')
sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters")
too_deep = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
too_thin = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
// Calculations
ma1 = ta.sma(close,ma_length1)
ma2 = ta.sma(close,ma_length2)
too_deep2 = (ma2/ma1-1) < too_deep
too_thin2 = (ma2/ma1-1) > too_thin
// Entry and close condtions
var float buy_price = 0
buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2
close_condition1 = (close > ma2) and strategy.position_size > 0 and (close < low[1])
stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na
close_condition2 = strategy.position_size > 0 and stop_distance > sl
stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na
// Entry and close orders
if buy_condition
strategy.entry('Long',strategy.long)
if buy_condition[1]
buy_price := open
if close_condition1 or close_condition2
strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : ""))
buy_price := na
plot(ma1,color = color.blue)
plot(ma2,color = color.orange)