
Двухлинейный золотой пересекающий алгоритм определяет время покупки и продажи, рассчитывая пересечение быстрой и медленной линий. Быстрая линия использует 8-дневную скользящую среднюю, а медленная линия использует наименьшую цену за последние 8 дней.
Основные принципы этой стратегии заключаются в следующем: быстрая линия представляет собой тенденцию к недавнему изменению цены, медленная линия представляет собой недавний низкий уровень цены. Когда быстрая линия пересекает медленную линию, это означает, что цена начинает расти, превышая недавнюю низкую цену, поэтому создает сигнал покупки; когда быстрая линия пересекает медленную линию, это означает, что цена начинает снижаться, ниже недавней низкой цены, поэтому создает сигнал продажи.
В частности, стратегия рассчитывает 8-дневную скользящую среднюю индекса в качестве быстрой линии, рассчитывает наименьшую цену за последние 8 дней в качестве медленной линии. Затем рассчитывает разницу между ценой и скользящей линией и определяет тенденцию изменения разности. Когда разница начинает становиться положительной, означает, что цена начинает расти; когда разница начинает становиться отрицательной, означает, что цена начинает падать.
Самым большим преимуществом алгоритма двулинейного золотого креста является то, что стратегия проста, понятна и легко реализуема. Быстрый и медленный пересечение средней линии для определения времени покупки и продажи является более зрелым и часто используемым методом в техническом анализе. Эта стратегия использует этот зрелый метод, а также улучшается, используя комбинацию перекрестных скоростных и медленных линий для получения более надежных торговых сигналов.
Кроме того, стратегия включает в себя механизм остановки убытков. Когда цена повышается более чем на 20%, устанавливается остановка убытков на позиции в 1,2 раза выше цены входа. Это позволяет блокировать большую часть прибыли и избежать убытков.
Существует также риск, связанный с двулинейным золотым крестом. Эта стратегия определяет время торговли только на основе отношений цены и движущегося среднего значения. В случае аномального колебания цены и несвоевременного реагирования движущегося среднего значения может быть получен ошибочный торговый сигнал.
Кроме того, установка стоп-механизма в 1,2 раза выше начальной цены может быть слишком консервативной и не может удерживать всю ситуацию. Если ситуация будет продолжать расти, установка стоп-механизма может привести к преждевременной остановке и не позволит получить большую прибыль. Для этого необходимо протестировать различные параметры, чтобы найти более подходящее место для остановки.
В этой стратегии есть место для дальнейшей оптимизации. Во-первых, можно тестировать различные параметры, оптимизировать циклические параметры для скользящих средних, находить оптимальную комбинацию параметров, которые рождают качество сигнала. Во-вторых, можно добавлять индикаторы волатильности и т. Д., Чтобы избежать ошибочного сигнала в период колебаний цен.
В целом, алгоритм двухуровневого золотого креста является очень практичной количественной торговой стратегией. Он использует сложные методы технического анализа равноуровневого креста для создания торговых сигналов, а также оптимизирует улучшения параметров и правил.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title = "Estratégia de Cruzamento das Linhas")
// Configuração da Média Móvel
emaPeriod = 8
ema= ema(close, emaPeriod)
ema1= ema(close[1], emaPeriod)
lowestEMA = lowest(ema, 8)
// Calcula a diferença entre o preço e a média móvel
diff = close - ema
diff1 = close[1] - ema1
diffLow = ema - lowestEMA
//Condições
diffZero = diff < 0
diffUnder = diff < diffLow
diffUm = diff > 0
Low0 = diffLow == 0
gain = strategy.position_avg_price*(1+0.2)
// Sinais de entrada
buy_signal = diffUnder and crossover(diff, diff1) and diffZero
sell_signal = diffUm and diffUnder and crossunder(diff, diff1)
// Executa as operações de compra/venda
if buy_signal
strategy.entry("Buy", strategy.long)
if sell_signal
strategy.exit("Buy", limit = gain)
// Plota as linhas
plot(0, title="Linha Zero", color=color.gray)
plot(diff, title="Diferença", color=color.blue, linewidth=2)
plot(diffLow, title="Diferença", color=color.red, linewidth=2)