В процессе загрузки ресурсов... загрузка...

Комбинация RSI и скользящей средней MT5 Стратегия скальпинга по мартингейлу

Автор:Чао Чжан, Дата: 2023-12-01 17:56:56
Тэги:

img

Обзор

Стратегия называется RSI и комбинация скользящей средней MT5 Martingale Scalping Strategy. Она сочетает в себе двойной индикатор скользящей средней и индикатор относительной силы (RSI) для реализации высокочастотного скальпингового трейдинга, включая принцип среднего значения позиции Martingale для контроля общего уровня риска стратегии.

Логика стратегии

  1. Стратегия сначала использует индикатор стока, чтобы нарисовать пользовательский осциллятор с параметром осциллятораPeriod, установленным на 5, и устанавливает верхние и нижние пороги k1 и k2 для построения зоны консолидации.

  2. В дальнейшем индикатор RSI используется для выявления феноменов перекупа и перепродажи.

  3. Кроме того, стратегия также вводит фактор TrendActivity в качестве основного фильтра тренда.Когда стохастический индикатор и RSI одновременно отвечают условиям перехода, он также проверяет, достаточно ли активен основной тренд, чтобы избежать потерь из-за ложных прорывов на рынке шоков.

  4. Наконец, стратегия использует классический принцип среднего значения позиции Мартингейла для контроля общего риска.

Анализ преимуществ

  1. Включение индикатора RSI позволяет эффективно выявлять явления перекупа и перепродажи, чтобы помочь в определении сроков реверсии.

  2. Настройка осциллятора для определения зоны консолидации может отфильтровать некоторые ложные сигналы прорыва.

  3. Установка фильтра основного тренда позволяет избежать потерь на волатильных рынках.

  4. Среднее значение позиции Martingale эффективно контролирует максимальное использование стратегии и является ключом к устойчивой рентабельности.

Анализ рисков

  1. При ненормальных рыночных условиях индикатор RSI может потерпеть сбой и привести к ошибочному оценке условий перекупления и перепродажи.

  2. Неправильное настройка параметров осциллятора также может привести к чрезмерной фильтрации сигнала или выявлению ложных прорывов.

  3. Среднее значение позиции по мартингейлу приводит к каскадным потерям в определенных условиях. Если количество дополнительных лотов слишком большое, это создаст серьезный риск истощения счета.

  4. Стратегия была проверена только на 15-минутных данных валютной пары GBPUSD. В других рынках и в другие периоды могут возникать риски соответствия данных.

Руководство по оптимизации

  1. Оптимизировать параметры РСИ, чтобы найти параметры, более подходящие для текущей рыночной среды.

  2. Испытайте и оптимизируйте параметры осциллятора, чтобы он мог более точно оценить зону консолидации.

  3. Добавьте логику стоп-лосса. Активно останавливайте потери, когда потери достигают определенного уровня, чтобы эффективно контролировать единичные потери.

  4. Оптимизировать правила настройки основного фильтра тренда, чтобы не упустить возможности для изменения.

  5. Необходимо убедиться, что дополнительное количество не слишком велико, чтобы вызвать быструю потерю.

Резюме

Эта стратегия сочетает в себе двойной индикатор скользящей средней, индикатор 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)


Больше

Чан Чжи ЧжунЧто может быть причиной того, что мы можем скопировать код прямо в симуляторе, и обнаружить, что мы достигли точки загрузки без выполнения операции загрузки?