Эта стратегия представляет собой импульсную торговую систему, основанную на полосах Боллинджера, в первую очередь захватывающую трендовые возможности через связь между ценой и верхней полосой Боллинджера.
Основная логика стратегии основана на следующих ключевых элементах: 1. Использует настраиваемые скользящие средние (включая SMA, EMA, SMMA, WMA, VWMA) для расчета средней полосы полос Боллинджера. 2. Динамически определяет верхние и нижние позиции полос с помощью мультипликатора стандартного отклонения (по умолчанию 2.0). 3. Входит в длинные позиции, когда цена превышает верхнюю полосу, что указывает на формирование сильных тенденций прорыва. 4. Выходит из позиций, когда цена опускается ниже нижней полосы, что указывает на потенциальный конец восходящего тренда. 5. включает в себя затраты на торговлю (0,1%) и сдвиг (3 пункта), лучше отражающие реальные условия торговли.
Это хорошо продуманный тренд, следующий за стратегией с четкой логикой. Он улавливает рыночный импульс благодаря динамическому характеру полос Боллинджера и включает в себя хорошие механизмы контроля риска. Стратегия очень настраиваема и может адаптироваться к различным рыночным условиям посредством корректировки параметров. Для реализации реальной торговли рекомендуется проводить тщательную оптимизацию параметров и проверку обратной связи, включая предложенные направления оптимизации для улучшения стратегии.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-11 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Demo GPT - Bollinger Bands", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Inputs length = input.int(20, minval=1, title="Length") maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"]) src = input(close, title="Source") mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev") offset = input.int(0, "Offset", minval=-500, maxval=500) // Date range inputs startYear = input.int(2018, "Start Year", minval=1970, maxval=2100) startMonth = input.int(1, "Start Month", minval=1, maxval=12) startDay = input.int(1, "Start Day", minval=1, maxval=31) endYear = input.int(2069, "End Year", minval=1970, maxval=2100) endMonth = input.int(12, "End Month", minval=1, maxval=12) endDay = input.int(31, "End Day", minval=1, maxval=31) // Time range startTime = timestamp("GMT+0", startYear, startMonth, startDay, 0, 0) endTime = timestamp("GMT+0", endYear, endMonth, endDay, 23, 59) // Moving average function ma(source, length, _type) => switch _type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) // Calculate Bollinger Bands basis = ma(src, length, maType) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plot plot(basis, "Basis", color=#2962FF, offset=offset) p1 = plot(upper, "Upper", color=#F23645, offset=offset) p2 = plot(lower, "Lower", color=#089981, offset=offset) fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95)) // Strategy logic: Only go long and flat inDateRange = time >= startTime and time <= endTime noPosition = strategy.position_size == 0 longPosition = strategy.position_size > 0 // Buy if close is above upper band if inDateRange and noPosition and close > upper strategy.entry("Long", strategy.long) // Sell/Exit if close is below lower band if inDateRange and longPosition and close < lower strategy.close("Long")