Стратегии стоп-лосса и тейк-профита на основе цены


Дата создания: 2023-11-23 15:36:00 Последнее изменение: 2023-11-23 15:36:00
Копировать: 0 Количество просмотров: 672
1
Подписаться
1617
Подписчики

Стратегии стоп-лосса и тейк-профита на основе цены

Обзор

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

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

Эта стратегия сначала устанавливает случайный входный сигнал, когда SMA14 выходит из SMA28 с лихвой, а когда SMA14 выходит из SMA28 с лихвой.

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

Например, если в игре будет сделано 100 дополнительных рук, каждый пункт будет стоить 10 долларов, а стоп-страх будет 100 долларов, то стоп-страх будет 100/10/100 = 0,1 балла.

Наконец, используйте strategy.exit, чтобы установить точку выхода с остановкой на убыль. Одновременно нарисуйте график стоп-линии и стоп-линии в качестве справочника для дебютирования.

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

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

Кроме того, по сравнению с точечным стоп-падом, стоп-пады в долларах лучше контролируют реальные риски. Стоп-пады в долларах лучше защищают средства, когда рыночная волатильность увеличивается.

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

Однако есть и риск, связанный с такой стратегией:

  1. Если стоп-точка слишком широка, то она легко может быть зафиксирована. Если стоп-точка слишком далеко, то вероятность того, что короткая линия пойдет наперекосяк, значительно выше, и она может быть зафиксирована.

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

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

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

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

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

  2. Можно выбрать подходящий стоп-стоп в зависимости от разных сортов. Например, для товаров можно установить более мягкий стоп.

  3. Можно комбинировать частоту колебаний с соответствующим ослаблением стоп-страда при увеличении колебаний; с соответствующим ужесточением стоп-страда при уменьшении колебаний.

  4. Различные стратегии стоп-стопа могут быть выбраны в зависимости от времени в торговом дне. Например, в торговые дни в США может быть более жесткий стоп-стоп, чтобы уменьшить вероятность наложения.

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

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

Исходный код стратегии
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 10m
basePeriod: 1m
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/
// © adolgov

// @description
// 

//@version=4
strategy("Stop loss and Take Profit in $$ example", overlay=true)

// random entry condition

longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

moneyToSLPoints(money) =>
    strategy.position_size !=0 ? (money / syminfo.pointvalue / abs(strategy.position_size)) / syminfo.mintick : na

p = moneyToSLPoints(input(200, title = "Take Profit $$"))
l = moneyToSLPoints(input(100, title = "Stop Loss $$"))
strategy.exit("x", profit = p, loss = l)

// debug plots for visualize SL & TP levels
pointsToPrice(pp) =>
    na(pp) ? na : strategy.position_avg_price + pp * sign(strategy.position_size) * syminfo.mintick
    
pp = plot(pointsToPrice(p), style = plot.style_linebr )
lp = plot(pointsToPrice(-l), style = plot.style_linebr )
avg = plot( strategy.position_avg_price, style = plot.style_linebr )
fill(pp, avg, color = color.green)
fill(avg, lp, color = color.red)