#pine-script
#сценарий pine
Вопрос:
Я пытаюсь добавить стоп-лосс к вычисленному значению. Значение стоп-лосса должно быть вычисленным значением «вверх». Если я использую приведенный ниже код, мой стоп-лосс будет выше моего длинного входа, и я не уверен, что это правильное значение.
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
//////
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
//// Stop loss calculation
Stoplosspercent = if buySignal
(strategy.position_avg_price - up)/strategy.position_avg_price
/// Exit long
strategy.exit("long exit", "long", profit = strategy.position_avg_price*5/100/syminfo.mintick, loss = strategy.position_avg_price*Stoplosspercent/100/syminfo.mintick)
Ответ №1:
Очень жаль, что многие пользователи не читают официальную ссылку на pine:
- потеря (ряд int / float) Необязательный параметр. Стоп-лосс (указывается в тиках).
- стоп (ряд int / float) Необязательный параметр. Стоп-лосс (требует определенной цены).
- прибыль (ряд int / float) Необязательный параметр. Цель прибыли (указывается в тиках).
- limit (ряд int / float) Необязательный параметр. Цель прибыли (требуется определенная цена).
В вашем случае вам нужно настроить limit
stop
параметры amp; вместо profit
amp; loss
соответственно.
Комментарии:
1. Спасибо за помощь, я ценю. Пожалуйста, потерпите меня, поскольку я только вчера начал кодировать. Я внес изменения, которые вы рекомендовали, и это устраняет половину проблем. Спасибо.
2. Оставшаяся проблема заключается в том, что, поскольку для каждого бара выполняется постоянный расчет, если я изменю exit на stop = up, тогда стоп-лосс перемещается вверх с каждой свечой, где он должен оставаться постоянным. Как я могу это исправить?
3. Пожалуйста, добавьте свой последний фактический исходный код скрипта и отформатируйте его как
code
(вкладки не будут «съедены»). Короче говоря: вам нужно создатьvar float Stoplosspercent
и изменить его при некоторых необходимых вам условиях:if positionOpenedOrSomethingElse ntStoplosspercent :- ...
4. Спасибо, мне удалось исправить это с помощью: значение = закрыть, если buySignal и закрыть> значение ema2: = еще больше, если sellSignal и закрыть < значение ema2: = dn значение else: = nz(значение [1]) profitbuy = закрыть, если buySignal и закрыть > ema2 profitbuy := ((закрыть -значение) * 2) закрыть else profitbuy:= nz(profitbuy[1]) profitsell = закрыть, если sellSignal и закрыть <ema2 profitsell:= закрыть — ((значение -закрыть) * 2) else profitsell:= nz(profitsell[1])