Эта стратегия представляет собой интеллектуальную торговую систему, которая сочетает в себе классические инструменты технического анализа, включая скользящие средние кроссоверы и распознавание моделей свечей.
Основная логика состоит из двух основных компонентов:
Модуль распознавания моделей свечей определяет потенциальные сигналы обратного движения, рассчитывая соотношение между тенями и телами. Система включает регулируемые параметры для множителя теней (wickMultiplier) и процента тела (bodyPercentage) для оптимизации качества сигнала.
Двойная система перекрестки скользящих средних использует 14-периодные и 28-периодные простые скользящие средние (SMA) в качестве индикаторов тренда. Длинные сигналы генерируются, когда краткосрочный MA пересекает длинный MA, в то время как короткие сигналы возникают, когда краткосрочный MA пересекает длинный MA.
Эта стратегия создает относительно полную структуру для принятия решений о торговле, сочетая распознавание шаблонов свечей с системами перекрестного перемещения скользящих средних. Ее сильные стороны заключаются в строгих механизмах фильтрации сигналов и гибких возможностях корректировки параметров, в то время как внимание должно уделяться оптимизации параметров и адаптивности к рыночной среде. Благодаря постоянной оптимизации и усовершенствованию стратегия показывает потенциал для поддержания стабильной производительности в различных рыночных условиях.
/*backtest start: 2024-10-28 00:00:00 end: 2024-11-27 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 indicator("Wick Reversal Setup", overlay=true) // Input parameters wickMultiplier = input.float(3.5, title="Wick Multiplier", minval=0.5, maxval=20) bodyPercentage = input.float(0.25, title="Body Percentage", minval=0.1, maxval=1.0) // Calculate the average range over 50 periods avgRange = ta.sma(high - low, 50) // Define the lengths of wicks and bodies bodyLength = math.abs(close - open) upperWickLength = high - math.max(close, open) lowerWickLength = math.min(close, open) - low totalRange = high - low // Long signal conditions longSignal = (close > open and upperWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or (close < open and lowerWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or (close == open and close != high and upperWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or (open == high and close == high and totalRange >= avgRange) // Short signal conditions shortSignal = (close < open and (high - open) >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or (close > open and (high - close) >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or (close == open and close != low and lowerWickLength >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or (open == low and close == low and totalRange >= avgRange) // Plot signals plotshape(series=longSignal, location=location.belowbar, color=color.green, style=shape.labelup, text="Long") plotshape(series=shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Short") // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Sahaj_Beriwal //@version=5 strategy("My strategy", overlay=true, margin_long=100, margin_short=100) longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (longCondition) strategy.entry("L", strategy.long) shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28)) if (shortCondition) strategy.entry("S", strategy.short)