Эта торговая стратегия представляет собой систему, основанную на прорывах стандартного отклонения, использующую взаимосвязь между ценой и скользящими средними, а также стандартное отклонение, для выявления потенциальных покупательных возможностей. Стратегия в первую очередь фокусируется на сигналах покупки, когда цена проходит через нижнюю полосу, и управляет рисками путем установки уровней получения прибыли и остановки потери.
Расчет скользящей средней (MA): Используйте простую скользящую среднюю (SMA) для расчета средней линии за определенный период.
Расчет стандартного отклонения: Расчет стандартного отклонения цен на основе того же периода.
Создать верхние и нижние полосы:
Сгенерировать сигналы покупки: запускать сигнал покупки, когда цена пересекает нижнюю полосу снизу.
Управление рисками:
Временный диапазон обратного тестирования: стратегия позволяет пользователям устанавливать конкретные сроки начала и окончания обратного тестирования, выполняя сделки только в указанном временном диапазоне.
Высокая адаптивность: используя стандартное отклонение, стратегия может автоматически регулировать диапазоны торговли в соответствии с волатильностью рынка, адаптируясь к различным рыночным условиям.
Комплексный контроль рисков: интегрирует механизмы получения прибыли и остановки убытков, эффективно контролируя риск для каждой сделки.
Высокая гибкость: позволяет пользователям настраивать множество параметров, таких как период стандартного отклонения, мультипликатор, процентные ставки прибыли и стоп-лосса, которые могут быть скорректированы в соответствии с различными рынками и личными предпочтениями риска.
Хорошая визуализация: стратегия графики скользящих средних, верхних и нижних полос, и купить сигналы на графике, что облегчает интуитивное понимание и анализ.
Мощная функция обратного тестирования: пользователи могут точно установить временной диапазон обратного тестирования, что полезно для оценки эффективности стратегии в конкретных рыночных условиях.
Риск ложного выхода на рынок: на рынках с низкой волатильностью или боковыми рынками могут происходить частые ложные выходы, что приводит к чрезмерной торговле и ненужным потерям по комиссионным за транзакции.
Тенденция после задержки: поскольку стратегия основана на скользящих средних и стандартном отклонении, она может упустить некоторые возможности для раннего входа на рынки с сильным трендом.
Чувствительность параметров: производительность стратегии в значительной степени зависит от настроек параметров. Различные комбинации параметров могут привести к радикально разным результатам, что требует обширного обратного тестирования и оптимизации.
Однонаправленное ограничение торговли: в настоящее время стратегия реализует только длинную логику, которая может упустить возможности или понести значительные убытки на рынках с понижающимся трендом.
Зависимость от рыночной среды: стратегия может лучше работать на очень волатильных и малообъемных криптовалютных рынках, но ее эффективность в других рыночных средах может варьироваться.
Введение механизма короткой продажи: добавление логики короткой продажи, когда цена проходит через верхнюю полосу, что позволяет стратегии получать прибыль на двунаправленных рынках.
Динамическая корректировка параметров: внедрить функциональность для автоматической корректировки параметров, таких как мультипликатор стандартного отклонения и коэффициент прибыли/стоп-лосса на основе рыночных условий, повышая адаптивность стратегии.
Анализ в нескольких временных рамках: включить данные из более длительных и более коротких периодов времени для улучшения надежности сигнала и точности времени входа.
Добавьте фильтрацию объема: введите индикаторы объема для фильтрации ложных сигналов прорыва в периоды низкого объема, улучшая качество торговли.
Оптимизировать механизмы получения прибыли и прекращения убытков: внедрить динамические механизмы получения прибыли и прекращения убытков, такие как введение остановок или установки стоп-убытков на основе ATR, чтобы лучше адаптироваться к волатильности рынка.
Увеличить условия фильтрации: объединить другие технические показатели или фундаментальные данные для установления дополнительных условий торговли, уменьшая ложные сигналы.
Внедрить управление деньгами: добавить логику размещения позиций для динамической корректировки доли средств для каждой сделки на основе размера счета и волатильности рынка.
Adaptive Standard Deviation Breakout Trading Strategy - это количественная торговая система, основанная на статистических принципах, захватывающая торговые возможности, вызванные аномалиями рынка через динамически скорректированные ценовые каналы.
Для опытных количественных трейдеров эта стратегия обеспечивает отличную базовую основу, которая может быть глубоко настроена и оптимизирована для адаптации к различным торговым стилям и рыночным условиям.
В целом, эта стратегия адаптивного стандартного отклонения демонстрирует суть количественной торговли - захват рыночных возможностей с помощью математических моделей и статистических методов при строгом контроле риска.
/*backtest start: 2024-06-01 00:00:00 end: 2024-06-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("MikEy Scali 3 STD Dev Buy Strategy with TP and SL", overlay=true) // Input parameters for the strategy length = input.int(20, title="Standard Deviation Length", minval=1) src = input(close, title="Source") mult = input.float(3.0, title="Standard Deviation Multiplier", step=0.1) // Input for the take profit and stop loss percentages takeProfitPerc = input.float(1.0, title="Take Profit Percentage", step=0.1) / 100 stopLossPerc = input.float(0.5, title="Stop Loss Percentage", step=0.1) / 100 // Input parameters for the backtesting range testStartYear = input.int(2023, title="Backtest Start Year", minval=2000) testStartMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12) testStartDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31) testEndYear = input.int(2024, title="Backtest End Year", minval=2000) testEndMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12) testEndDay = input.int(31, title="Backtest End Day", minval=1, maxval=31) // Define the backtesting range testStartTime = timestamp(testStartYear, testStartMonth, testStartDay, 00, 00) testEndTime = timestamp(testEndYear, testEndMonth, testEndDay, 23, 59) // Determine if the current bar is within the backtesting range inBacktestRange = (time >= testStartTime) and (time <= testEndTime) // Calculate the moving average and standard deviation ma = ta.sma(src, length) std_dev = ta.stdev(src, length) // Calculate upper and lower bands upper_band = ma + (std_dev * mult) lower_band = ma - (std_dev * mult) // Buy condition within the backtesting range buyCondition = inBacktestRange and ta.crossover(src, lower_band) // Plot the buy signal on the chart plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") // Execute buy orders based on the condition within the backtesting range if (buyCondition) strategy.entry("Buy", strategy.long) // Calculate the take profit and stop loss prices when a position is opened entryPrice = na(strategy.opentrades.entry_price(0)) ? src : strategy.opentrades.entry_price(0) takeProfitPrice = entryPrice * (1 + takeProfitPerc) stopLossPrice = entryPrice * (1 - stopLossPerc) // Take profit condition takeProfitCondition = strategy.position_size > 0 and close >= takeProfitPrice // Stop loss condition stopLossCondition = strategy.position_size > 0 and close <= stopLossPrice // Execute sell order when take profit condition is met within the backtesting range if (takeProfitCondition and inBacktestRange) strategy.close("Buy", "Take Profit") // Execute sell order when stop loss condition is met within the backtesting range if (stopLossCondition and inBacktestRange) strategy.close("Buy", "Stop Loss") // Plot the moving average and the bands plot(ma, color=color.blue, title="Moving Average") plot(upper_band, color=color.red, title="Upper Band (3 STD)") plot(lower_band, color=color.green, title="Lower Band (3 STD)") // Optional: Plot the source plot(src, color=color.gray, title="Source") // Add labels for clarity bgcolor(buyCondition ? color.new(color.green, 90) : na, offset=-1, title="Buy Signal Background") // Optional: Highlight the backtesting range on the chart bgcolor(inBacktestRange ? color.new(color.blue, 90) : na, title="Backtest Range Background") // Plot the take profit and stop loss levels if a position is open plot(strategy.position_size > 0 ? takeProfitPrice : na, color=color.orange, title="Take Profit Level") plot(strategy.position_size > 0 ? stopLossPrice : na, color=color.red, title="Stop Loss Level")