Стратегия Stop Loss and Take Profit, основанная на модели Доджи

Автор:Чао Чжан, Дата: 2024-02-02 17:17:38
Тэги:

img

Обзор

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

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

При появлении модели Доджи она указывает на изменение отношений спроса и предложения, при этом силы становятся более сбалансированными, что может привести к перевороту цены.

body=close-open 
range=high-low
abody=abs(body)
ratio=abody/range  
data=(abs(open - close) <= (high - low) * Doji)

Если abs ((open-close) <= (high-low) * параметр Doji, он считается шаблоном Doji, и будут размещены ордера на остановку.

longDist= longcandle[1] and range[1]>range? high: max(high,high[1])
shortDist= longcandle[1] and range[1]>range? low: min(low,low[1]) 

Если тело предыдущей свечи большое, buy stop order размещается между максимумом Doji и максимумом предыдущей свечи. Если у предыдущей свечи небольшое тело, buy stop order размещается на максимуме Doji. Sell stop order следует той же логике.

Есть два варианта выхода:

  1. Фиксированный стоп-лосс и прибыль
strategy.exit("exit buy","buy stop",loss=SL, profit=TP, when=Use_SL_TP)
  1. Используйте самый высокий и самый низкий курс Doji в качестве стоп-лосса и прибыли
strategy.close("buy stop",when=not Use_SL_TP and close<dojilow) 

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

Преимущества этой стратегии:

  1. Просто в применении.
  2. Использует эффективные сигналы переворота цены из модели Доджи.
  3. Настраиваемые параметры стоп-лосса и прибыли для контроля риска.
  4. Хорошо работает в более длительные периоды, чтобы отфильтровать шум.

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

Эта стратегия сопряжена с некоторыми рисками:

  1. Модель Doji не всегда приводит к перевороту цены, может столкнуться со стоп-лосом.
  2. Слишком много шума в сигналах Doji в более низкие временные рамки.
  3. Риск неограниченных потерь без остановки потерь и получения прибыли.

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

Некоторые способы оптимизации стратегии:

  1. Оптимизировать параметр Doji для различных торговых инструментов.
  2. Испытайте различные комбинации стоп-лосса и прибыли.
  3. Динамическая остановка потери на основе ATR.
  4. Объедините с другими показателями, чтобы определить оптимальный вход.

Заключение

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


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//This is a simple strategy based on Doji star candlestick
//It places two orders: buy stop at doji star high or previous candle high and sell stop at doji star low or previous candle low.
//This strategy works very well with high time frames like Weekly TF because it eliminates the noise in doji formation.
//

strategy("Doji strategy W", overlay=true, calc_on_every_tick=true, pyramiding=0,default_qty_type=strategy.percent_of_equity,default_qty_value=100,currency=currency.USD)

//INPUTS
//MinDistance=input(100,'Minimum distance in ticks')
Use_SL_TP=input(true,'Use stop loss and take profit?')
TP=input(200,'Take Profit in ticks')
SL=input(200,'Stop Loss in tiks')
Doji = input(0.05, minval=0.01, title="Doji size", step=0.01)

//VARIABILI
body=close-open
range=high-low
abody=abs(body)
ratio=abody/range
longcandle= (ratio>0.6)

//Doji
data=(abs(open - close) <= (high - low) * Doji)
plotchar(data, title="Doji", text='Doji', color=black)
longDist= longcandle[1] and range[1]>range? high: max(high,high[1])
shortDist= longcandle[1] and range[1]>range? low: min(low,low[1])
dojilow=data==1?low:na
dojihigh=data==1?high:na

goStar=data==1?true:false
//////////////////////////////////////////////////////////////////

//STRATEGY

strategy.order("buy stop",true,stop=longDist,  oca_name="Dojy Entry",when=goStar)
strategy.order("sell stop",false,stop=shortDist, oca_name="Dojy Entry",when=goStar)

strategy.exit("exit buy","buy stop",loss=SL, profit=TP, when=Use_SL_TP)
strategy.exit("exit sell","sell stop",loss=SL,profit=TP, when=Use_SL_TP)

strategy.close("buy stop",when=not Use_SL_TP and close<dojilow)
strategy.exit("exit buy","buy stop",profit=TP, when=not Use_SL_TP)
strategy.close("sell stop",when=not Use_SL_TP and close>dojihigh)
strategy.exit("exit sell","sell stop",profit=TP, when=not Use_SL_TP)
    
    



Больше