Стратегия называется
Стратегия сначала использует индикатор стока, чтобы нарисовать пользовательский осциллятор с параметром осциллятораPeriod, установленным на 5, и устанавливает верхние и нижние пороги k1 и k2 для построения зоны консолидации.
В дальнейшем индикатор RSI используется для выявления феноменов перекупа и перепродажи.
Кроме того, стратегия также вводит фактор TrendActivity в качестве основного фильтра тренда.Когда стохастический индикатор и RSI одновременно отвечают условиям перехода, он также проверяет, достаточно ли активен основной тренд, чтобы избежать потерь из-за ложных прорывов на рынке шоков.
Наконец, стратегия использует классический принцип среднего значения позиции Мартингейла для контроля общего риска.
Включение индикатора RSI позволяет эффективно выявлять явления перекупа и перепродажи, чтобы помочь в определении сроков реверсии.
Настройка осциллятора для определения зоны консолидации может отфильтровать некоторые ложные сигналы прорыва.
Установка фильтра основного тренда позволяет избежать потерь на волатильных рынках.
Среднее значение позиции Martingale эффективно контролирует максимальное использование стратегии и является ключом к устойчивой рентабельности.
При ненормальных рыночных условиях индикатор RSI может потерпеть сбой и привести к ошибочному оценке условий перекупления и перепродажи.
Неправильное настройка параметров осциллятора также может привести к чрезмерной фильтрации сигнала или выявлению ложных прорывов.
Среднее значение позиции по мартингейлу приводит к каскадным потерям в определенных условиях. Если количество дополнительных лотов слишком большое, это создаст серьезный риск истощения счета.
Стратегия была проверена только на 15-минутных данных валютной пары GBPUSD. В других рынках и в другие периоды могут возникать риски соответствия данных.
Оптимизировать параметры РСИ, чтобы найти параметры, более подходящие для текущей рыночной среды.
Испытайте и оптимизируйте параметры осциллятора, чтобы он мог более точно оценить зону консолидации.
Добавьте логику стоп-лосса. Активно останавливайте потери, когда потери достигают определенного уровня, чтобы эффективно контролировать единичные потери.
Оптимизировать правила настройки основного фильтра тренда, чтобы не упустить возможности для изменения.
Необходимо убедиться, что дополнительное количество не слишком велико, чтобы вызвать быструю потерю.
Эта стратегия сочетает в себе двойной индикатор скользящей средней, индикатор RSI и пользовательский осциллятор для оценки явлений прорыва верхнего и нижнего лимитов в краткосрочной перспективе, и использует основной трендовый фильтр для предотвращения ложных прорывов для эффективной торговли скальпированием. В то же время для контроля общего уровня риска вводится классический принцип средней позиции Мартингейла. Стратегия имеет потенциал для получения стабильной доходности после оптимизации параметров и строгого управления рисками.
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © cloudofw //@version=5 strategy("F2.2 Martingale Scalping Strategy", overlay=true) // Input parameters rsiOverbought = input.int(70, "RSI Overbought Threshold") rsiOversold = input.int(30, "RSI Oversold Threshold") oscillatorPeriod = input.int(5, "Period for oscillator") k1 = input.float(0.2, "K1 for oscillator's zone") k2 = input.float(0.5, "K2 for oscillator's zone") trendActivity = input.float(1.0, "Main Trend filter", minval=0.1) decreasePerOrder = input.float(0.1, "Trend filter decrease per order", minval=0.01) // Calculate custom oscillator and RSI oscillator = ta.stoch(close, high, low, oscillatorPeriod) rsiValue = ta.rsi(close, 14) zoneHigh = 100 - k1 * 100 zoneLow = k2 * 100 // Entry conditions longCondition = oscillator < zoneLow and trendActivity > 0 and rsiValue < rsiOversold shortCondition = oscillator > zoneHigh and trendActivity > 0 and rsiValue > rsiOverbought // Martingale logic var lot_multiplier = 1.0 var last_lot_size = strategy.equity * 0.01 var trade_1_profit = 0.0 if (strategy.position_size != 0) lot_multiplier := last_lot_size / strategy.position_size < 1.5 ? lot_multiplier * 1.5 : 1.0 trade_1_profit := strategy.grossprofit else lot_multiplier := 1.0 trade_1_profit := 0.0 lot_size = strategy.equity * 0.01 * lot_multiplier + trade_1_profit last_lot_size := lot_size // Trading logic if longCondition and strategy.position_size == 0 strategy.entry("Long", strategy.long) if shortCondition and strategy.position_size == 0 strategy.entry("Short", strategy.short) // Exit conditions if longCondition == false and strategy.position_size > 0 strategy.close("Long") if shortCondition == false and strategy.position_size < 0 strategy.close("Short") // Indicators on chart plotshape(series=longCondition, title="Buy Entry", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=shortCondition, title="Sell Entry", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell") plot(oscillator, color=color.blue, title="Oscillator") hline(zoneHigh, "Upper Zone", color=color.red) hline(zoneLow, "Lower Zone", color=color.green)
Чан Чжи ЧжунЧто может быть причиной того, что мы можем скопировать код прямо в симуляторе, и обнаружить, что мы достигли точки загрузки без выполнения операции загрузки?