Стратегия торговли с высокой вероятностью прорыва, основанная на балансе давления

Автор:Чао Чжан, Дата: 2023-11-13 11:40:53
Тэги:

img

Обзор

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

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

  1. Используйте EMA для расчета скользящей средней для определения общего направления тренда.

  2. Используйте MACD для расчета разницы между быстрыми и медленными скользящими средними. Когда разница больше 0, она указывает на восходящий тренд, когда меньше 0, она указывает на нисходящий тренд.

  3. Используйте PSAR для расчета непрерывной переменной точки. Когда значение PSAR большое, это указывает на снижающийся тренд, когда значение PSAR небольшое, это указывает на восходящий тренд.

  4. Для определения последовательности тренда объединяют вышеперечисленные три показателя.

  5. Введите сделки, основанные на критериях покупки и продажи, и устанавливайте точки остановки потери и получения прибыли.

  6. Особые правила:

    • Условие покупки: не в восходящем тренде, гистограмма MACD < 0, цена закрытия > EMA
    • Условие продажи: в восходящем тренде, гистограмма MACD > 0, цена закрытия < EMA
    • Условие стоп-лосса: цена достигает следующего значения PSAR
    • Условие получения прибыли: достижение предварительно установленного коэффициента получения прибыли

Преимущества стратегии

  1. Использование нескольких индикаторов для определения тенденции повышает точность.

  2. Открытие сделок на основе определенных тенденций, выявленных с помощью баланса давления, увеличивает процент выигрыша.

  3. Установка стоп-лосса и прибыли может ограничить убытки и закрепить прибыль.

  4. Ясные и систематические правила торговли делают его подходящим для алгоритмической торговли.

  5. Параметры могут быть оптимизированы для адаптации к различным продуктам и срокам.

Риски стратегии

  1. Суждение о тренде может быть неправильным, что приводит к неправильному направлению торговли.

  2. Экстремальные движения рынка могут привести к ложным сигналам от индикаторов.

  3. Стоп-потеря слишком широкая, не может выйти вовремя.

  4. Неправильная настройка параметров приводит к переоценке или отсутствию сделок.

  5. Неликвидные продукты не могут выполнять планы стоп-лосса и прибыли.

  6. Риски могут быть уменьшены путем оптимизации параметров, корректировки остановок и выбора жидких продуктов.

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

  1. Корректировать период EMA для оптимизации точности тренда.

  2. Настройка MACD на быстрый и медленный периоды для улучшения чувствительности.

  3. Оптимизируйте стоп-лосс и коэффициент прибыли, чтобы найти идеальный баланс.

  4. Добавить другие вспомогательные показатели для улучшения времени входа.

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

  6. Настраивайте временные рамки, чтобы они соответствовали различным характеристикам продукции.

Резюме

Эта стратегия интегрирует несколько индикаторов для анализа трендов и вступает в сделки на основе определенных тенденций, с предварительно установленными стоп-лосом и получением прибыли, которые могут эффективно улавливать движения рынка и достигать хорошей прибыли, обеспечивая при этом определенную прибыльность. Дальнейшее улучшение стабильности и прибыльности может быть достигнуто посредством настройки параметров и дополнительных индикаторов.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
basePeriod: 15m
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/
// © exlux99

//@version=4
strategy(title = "Crypto Scalper", overlay = true,  pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.03)
len = input(60, minval=1, title="Length EMA")
src = input(close, title="Source")
out = ema(src, len)
//
fast_length = input(title="Fast Length MACD", type=input.integer, defval=12)
slow_length = input(title="Slow Length MACD", type=input.integer, defval=26)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Oscillator MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"])
sma_signal = input(title="Signal Line MA Type MACD", type=input.string, defval="EMA", options=["SMA", "EMA"])

// Calculating
fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
	firstTrendBar = false
	SAR := nextBarSAR
	if bar_index == 1
		float prevSAR = na
		float prevEP = na
		lowPrev = low[1]
		highPrev = high[1]
		closeCur = close
		closePrev = close[1]
		if closeCur > closePrev
			uptrend := true
			EP := high
			prevSAR := lowPrev
			prevEP := high
		else
			uptrend := false
			EP := low
			prevSAR := highPrev
			prevEP := low
		firstTrendBar := true
		SAR := prevSAR + start * (prevEP - prevSAR)
	if uptrend
		if SAR > low
			firstTrendBar := true
			uptrend := false
			SAR := max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := min(AF + increment, maximum)
	if uptrend
		SAR := min(SAR, low[1])
		if bar_index > 1
			SAR := min(SAR, low[2])
	else
		SAR := max(SAR, high[1])
		if bar_index > 1
			SAR := max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)

tplong=input(0.245, step=0.005)
sllong=input(1.0, step=0.005)
tpshort=input(0.055, step=0.005)
slshort=input(0.03, step=0.005)

if (uptrend and hist >0 and close < out)
	strategy.entry("short", strategy.short, stop=nextBarSAR, comment="short")
	strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT',  alert_message = 'closeshort')
if (not uptrend and hist <0 and close > out)
	strategy.entry("long", strategy.long, stop=nextBarSAR, comment="long")
	strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT',  alert_message = 'closelong')

	

Больше