
Эта торговая стратегия - это система, основанная на стандартных разрывах, использующая связь цены с движущимися средними и стандартными разрывами для идентификации потенциальных покупательских возможностей. Эта стратегия в основном фокусируется на сигналах покупки при разрыве цены и управляет риском, устанавливая остановки и остановки.
Вычисление скользящей средней (MA): средняя за указанный период с использованием простой скользящей средней (SMA).
Расчетная стандартная разница: расчетная стандартная разница, основанная на расчете цены на один и тот же цикл.
Строительство верхней и нижней траекторий:
Создание сигнала покупки: запускает сигнал покупки, когда цена пересекает нижнюю полосу.
Управление рисками:
Срок отсчета: стратегия позволяет пользователю установить конкретное время начала и окончания отсчета и совершать сделки только в течение указанного времени.
Самостоятельная адаптация: используя стандартную разницу, стратегия может автоматически корректировать торговый диапазон в зависимости от волатильности рынка и адаптироваться к различным рыночным условиям.
Интегрированные механизмы сдерживания и остановки убытков, эффективно контролирующие риск каждой сделки.
Высокая гибкость: позволяет пользователям настраивать несколько параметров, таких как стандартный отклонение, кратность, стоп-стоп-лосс, и т. д., которые могут быть скорректированы в соответствии с различными рынками и личными предпочтениями риска.
Хорошая визуализация: стратегия на графике отображает движущиеся средние, восходящие и нисходящие траектории и сигналы покупки, что позволяет легко понять и проанализировать их.
Сильная функция обратной связи: пользователь может точно установить диапазон времени обратной связи, что помогает оценить эффективность стратегии в конкретной рыночной среде.
Риск ложных прорывов: в криптовалютных или низковолатильных рынках могут возникать частые ложные прорывы, что приводит к чрезмерным сделкам и ненужным потерям комиссионных.
Задержка с трендом: из-за стратегии, основанной на движущихся средних и стандартных отклонениях, в рынках с сильной тенденцией можно пропустить некоторые ранние возможности для входа.
Чувствительность к параметрам: эффективность стратегии сильно зависит от параметров, различные комбинации параметров могут приводить к совершенно разным результатам, требующим большого количества обратной связи и оптимизации.
Ограничение односторонней торговли: Стратегия в настоящее время реализуется только для многологичности и может упустить возможности или понести большие потери в падении рынка.
Зависимость от рыночной среды: стратегия может работать лучше на криптовалютном рынке с высокой волатильностью и низким объемом сделок, но может быть не столь эффективной в других рыночных условиях.
Введение механизма обратного отсчета: увеличение логики обратного отсчета при прорыве цены вверх, что позволяет стратегии получать прибыль на двухсторонних рынках.
Динамическая корректировка параметров: возможность автоматического корректирования параметров, таких как стандартный разрывный множитель, стоп-стоп-лосс, в зависимости от рыночных условий, повышает адаптивность стратегии.
Анализ в несколько временных рамок: в сочетании с более длинными и более короткими временными циклами данных, повышает надежность сигналов и точность входа в игру.
Добавление фильтрации по объему сделок: введение индикатора объема сделок, фильтрация ложных прорывных сигналов при низком объеме сделок, повышение качества сделок.
Оптимизация механизмов стоп-стоп: реализация динамических стоп-стоп, таких как введение стоп-стопов с отслеживанием или настройки стоп-стопов на основе ATR, чтобы лучше адаптироваться к рыночным колебаниям.
Добавление фильтрующих условий: в сочетании с другими техническими показателями или фундаментальными данными, установление дополнительных условий торговли для уменьшения ложных сигналов.
Осуществление управления капиталом: добавление логики управления позициями, корректировка доли капитала в каждой сделке в зависимости от размера счета и динамики волатильности рынка.
Стратегия самостоятельной адаптации к стандартным отклонениям является количественной торговой системой, основанной на статистических принципах, которая использует динамически скорректированные ценовые каналы для захвата торговых возможностей, вызванных аномальными колебаниями рынка. Основные преимущества этой стратегии заключаются в ее адаптивности и способности к управлению рисками, которая позволяет сохранять относительно стабильную производительность в различных рыночных условиях. Однако, стратегия также сталкивается с такими проблемами, как ложные прорывы и чувствительность к параметрам, которые требуют осторожного использования и постоянной оптимизации для трейдеров.
Внедрение оптимизационных мер, таких как открытый механизм, динамическая коррекция параметров и анализ многократных временных рамок, способствуют дальнейшему повышению стабильности и прибыльности стратегии. Для опытных количественных трейдеров эта стратегия предоставляет хорошую базовую структуру, на основе которой можно проводить глубокую персонализацию и оптимизацию для адаптации к различным стилям торговли и рыночным условиям.
В целом, эта адаптивная стратегия для преодоления стандартных отклонений демонстрирует суть количественных сделок с использованием математических моделей и статистических методов для захвата рыночных возможностей при строгом контроле риска. Она применима не только к высоко волатильному криптовалютному рынку, но также может быть применена к другим финансовым рынкам с соответствующей настройкой, предоставляя трейдерам мощный и гибкий инструмент для торговли.
/*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")