Динамическая стратегия Stop Loss Trading View


Дата создания: 2023-09-18 17:20:06 Последнее изменение: 2023-09-18 17:20:06
Копировать: 0 Количество просмотров: 901
1
Подписаться
1617
Подписчики

Обзор

Стратегия показывает, как использовать динамические переменные TradingView для передачи стоп-цены в оповещениях и выполнения сделок на платформе MT4/5 через TradingConnector. Стратегия использует стохастический индикатор для определения времени входа в рынок, динамически устанавливает новейшую поддерживающую сопротивление в качестве точки остановки, а также может быть частично остановлена.

Стратегический принцип

Стохастические индикаторы K-линии и D-линии торгуют, а D-линия торгует. Расчет ближайших точек поддержки и сопротивления в качестве цены остановки. После входа цена остановки передается брокеру в режиме реального времени с помощью динамических переменных. Часть остановки устанавливается в виде определенной пропорции расстояния от остановки.

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

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

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

  • Стохастические индикаторы задерживаются
  • Частичные сбои слишком часто влияют на позиции
  • Динамические переменные действуют по-разному в разных временных рамках
  • Необходимо оптимизировать соотношение частичного торможения

Можно уместно сократить цикл параметров Stochastic, регулировать пропорции части остановок и т. д. для управления рисками.

Направление оптимизации

  • Тестирование различных комбинаций стохастических параметров
  • Оптимизация пропорциональной настройки части торможения
  • Попробуйте различные методы, например, перемещение.
  • Тестирование на нескольких рынках и разновидностях

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// strategy(title="TradingView Alerts to MT4 MT5 Strategy example", commission_type=strategy.commission.cash_per_order, commission_value=0.00003, overlay=false, default_qty_value=100000, initial_capital=1000)
// study(title="TradingView Alerts to MT4 MT5 Strategy example")  //uncomment this line and comment previous one to make it a study producing alerts
//
// This script was created for educational purposes only.
// It is showing how to use dynamic variables in TradingView alerts.
// And how to execute them in Forex, indices and commodities markets
// thanks to www.tradingconnector.com

TakeProfitLevel=input(400)
TakePartialProfitLevel=input(150)

// **** Entries logic **** {
periodK = input(14, title="K", minval=1)
periodD = input(3, title="D", minval=1)
smoothK = input(4, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
plot(k, title="%K", color=color.blue)
plot(d, title="%D", color=color.orange)
h0 = hline(80)
h1 = hline(20)
fill(h0, h1, color=color.purple, transp=75)

GoLong=crossover(k,d)// and k<80
GoShort=crossunder(k,d)// and k>20
// } End of entries logic

// **** Pivot-points and stop-loss logic **** {
piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)
var float stoploss_long=low
var float stoploss_short=high

pl=valuewhen(piv_low,piv_low,0)
ph=valuewhen(piv_high,piv_high,0)

if GoLong 
    stoploss_long := low<pl ? low : pl
if GoShort 
    stoploss_short := high>ph ? high : ph
// } End of Pivot-points and stop-loss logic

// **** Trade counter and partial closing mechanism **** {
var int trade_id=0
if GoLong or GoShort
    trade_id:=trade_id[1]+1

TakePartialProfitLong = barssince(GoLong)<barssince(GoShort) and crossover(high,(valuewhen(GoLong,close,0)+TakePartialProfitLevel*syminfo.mintick))
TakePartialProfitShort = barssince(GoLong)>barssince(GoShort) and crossunder(low,(valuewhen(GoShort,close,0)-TakePartialProfitLevel*syminfo.mintick))
// } End of Trade counter and partial closing mechanism


strategy.entry("Long", strategy.long, when=GoLong)
strategy.exit("XPartLong", from_entry="Long", qty_percent=50, profit=TakePartialProfitLevel)
strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel)
strategy.entry("Short", strategy.short, when=GoShort)
strategy.exit("XPartShort", from_entry="Short", qty_percent=50, profit=TakePartialProfitLevel)
strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel)


// alertcondition("Long", when=GoLong, message="long slprice={{stoploss_long}} tradeid={{trade_id}} tp=TakeProfitLevel")
// alertcondition("Short", when=GoShort, message="short slprice={{stoploss_short}} tradeid={{trade_id}} tp=TakeProfitLevel")
// alertcondition("ClosePartLong", when=TakePartialProfitLong, message="closepart tradeit={{trade_id}} part=0.5")
// alertcondition("ClosePartShort", when=TakePartialProfitShort, message="closepart tradeit={{trade_id}} part=0.5")