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

Стоп-лосс и стратегия получения прибыли на основе цены

Автор:Чао Чжан, Дата: 2023-11-23 15:36:00
Тэги:

img

Обзор

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

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

Стратегия сначала устанавливает случайные сигналы входа, идя длинный, когда 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)

Больше