Переходная стратегия стоп-лосса, основанная на пунктах Take Profit и Stop Loss

Автор:Чао Чжан, Дата: 2024-01-11 11:04:57
Тэги:

img

Обзор

Основная идея этой стратегии состоит в том, чтобы использовать перекресток EMA и WMA в качестве сигналов входа, и включить прибыль и остановку потери на основе расчета точек для торговли.

Принцип стратегии

Когда EMA пересекает WMA вверх, генерируется длинный сигнал. Когда EMA пересекает WMA вниз, генерируется короткий сигнал. После ввода позиций цена входа будет рассчитана в режиме реального времени, и на основе этого будут установлены стоп-лосс и прибыль. Например, установите стоп-лосс до 20 пунктов и возьмите прибыль до 100 пунктов, тогда конкретная цена стоп-лосса будет ценой входа минус 20 пунктов * стоимость контракта, а цена прибыли будет ценой входа плюс 100 пунктов * стоимость контракта. Так контролируются риск и прибыль.

В то же время стратегия также будет сочетать текущие рыночные цены с историческими стоп-лоссами, чтобы скорректировать движущуюся позицию стоп-лосса и реализовать последнюю стоп-лосс.

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

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

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

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

Основные риски этой стратегии исходят от самих индикаторов EMA и WMA. Когда происходит насильственное движение рынка, они часто дают неправильные сигналы, что легко приводит к стоп-лосс. В этом случае рекомендуется должным образом ослабить количество точек стоп-лосса или рассмотреть возможность замены других комбинаций индикаторов.

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

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

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Испытать различные комбинации параметров EMA и WMA для определения оптимального;
  2. Попробуйте заменить или объединить другие индикаторы, такие как MACD, KDJ и т. д., и посмотрите, можно ли улучшить показатель выигрыша;
  3. Оценить риск-вознаграждение различных конфигураций точек для остановки потерь и получения прибыли и найти оптимальную настройку;
  4. изучение характеристик различных сортов и корректировка параметров для адаптации к различным рынкам;
  5. Включить алгоритмы машинного обучения для реализации динамической оптимизации параметров.

Заключение

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


/*backtest
start: 2024-01-03 00:00:00
end: 2024-01-10 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// inspiration script from: @ahmad_naquib
// inspiration script link: https://www.tradingview.com/script/tGTV8MkY-Two-Take-Profits-and-Two-Stop-Loss/
// inspiration strategy script name: Two Take Profits and Two Stop Loss


////////////
// Do not use this strategy, it's just an exmaple !! The goal from this script is to show you TP and SL based on PIPS
////////////


//@version=5
strategy('SL & TP based on Pips', "PIP SL & TP", overlay=true, initial_capital=1000)

// MA
ema_period = input(title='EMA period', defval=10)
wma_period = input(title='WMA period', defval=20)
ema = ta.ema(close, ema_period)
wma = ta.wma(close, wma_period)

// Entry Conditions
long = ta.crossover(ema, wma) and nz(strategy.position_size) == 0
short = ta.crossunder(ema, wma) and nz(strategy.position_size) == 0

// Pips Calculation
pip1 = input(20, title = "TP PIP", group = "PIP CALCULATION") * 10 * syminfo.mintick
pip2 = input(20, title = "SL PIP", group = "PIP CALCULATION") * 10 * syminfo.mintick

// Trading parameters 
var bool LS = na
var bool SS = na

var float EP = na // Entry Position
var float TVL = na
var float TVS = na
var float TSL = na
var float TSS = na

var float TP1 = na
//var float TP2 = na
var float SL1 = na
///var float SL2 = na

// SL & TP Values
// there's also SL2 and TP2 in case you want to add them to your script, 
//also you can add a break event in the strategy.entry section.

if short or long and strategy.position_size == 0
    EP := close
    SL1 := EP - pip2 * (short ? -1 : 1)
    //SL2 := EP - pip2 * (short ? -1 : 1)
    
    TP1 := EP + pip1 * (short ? -1 : 1)
    //TP2 := EP + pip1 * 2 * (short ? -1 : 1)


// current trade direction    
LS := long or strategy.position_size > 0
SS := short or strategy.position_size < 0

// adjust trade parameters and trailing stop calculations
TVL := math.max(TP1, open) - pip1[1]
TVS := math.min(TP1, open) + pip1[1]
TSL := open[1] > TSL[1] ? math.max(TVL, TSL[1]) : TVL
TSS := open[1] < TSS[1] ? math.min(TVS, TSS[1]) : TVS

//if LS and high > TP1
    //if open <= TP1
        //SL2 := math.min(EP, TSL)

//if SS and low < TP1
    //if open >= TP1
        //SL2 := math.max(EP, TSS)


// Closing conditions
// and those are a closing conditions in case you want to add them.

//close_long = LS and open < SL2
//close_short = SS and open > SL2

// Buy
if (long and not SS)
    strategy.entry('buy', strategy.long)
strategy.exit('exit1', from_entry='buy', stop=SL1, limit=TP1, qty_percent=100)
//strategy.exit('exit2', from_entry='buy', stop=SL2, limit=TP2)

// Sell
if (short and not LS)
    strategy.entry('sell', strategy.short)
strategy.exit('exit3', from_entry='sell', stop=SL1, limit=TP1, qty_percent=100)
//strategy.exit('exit4', from_entry='sell', stop=SL2, limit=TP2)

// Plots
// those are plots for the lines of The tp and sl. they are really useful, and in the next update I will use a filling option.

a = plot(strategy.position_size > 0 ? SL1 : na, color=color.new(#af0829, 30), linewidth = 2, style=plot.style_linebr)
b = plot(strategy.position_size < 0 ? SL1 : na, color=color.new(#af0829, 30), linewidth = 2, style=plot.style_linebr)

c = plot(strategy.position_size > 0 ? TP1 : na, color=color.new(#2e7e00, 30), linewidth = 2, style=plot.style_linebr)
d = plot(strategy.position_size < 0 ? TP1 : na, color=color.new(#2e7e00, 30), linewidth = 2, style=plot.style_linebr)

g = plot(strategy.position_size >= 0 ? na : EP, color=color.new(#ffffff, 50), style=plot.style_linebr)
h = plot(strategy.position_size <= 0 ? na : EP, color=color.new(#ffffff, 50), style=plot.style_linebr)


// those are plot for the TP2 and SL2, they are optional if you want to add them.

//e = plot(strategy.position_size > 0 ? TP2 : na, color=color.new(#00ced1, 0), style=plot.style_linebr)
//f = plot(strategy.position_size < 0 ? TP2 : na, color=color.new(#00ced1, 0), style=plot.style_linebr)


//those are the plot for the ema and wma strategy for short and long signal. they are not really a good strategy, I just used them as an example
//but you have the option to plot them or not.
// do not use this strategy, it's just an exmaple !! The goal from this script is to show you TP and SL based on PIPS

//plot(ema, title='ema', color=color.new(#fff176, 0))
//plot(wma, title='wma', color=color.new(#00ced1, 0))

Больше