У меня проблема с enterShortCondition. Я бы хотел выйти из короткого сигнала, когда значение закрытия пересекает нижнюю линию.
С длинной позицией у меня нет проблем, но с коротким условием (это зеркально по отношению к длинному условию) у меня есть сигналы выхода, когда близкая цена пересекает верхнюю линию. Я не понимаю. Я без ума от этого.
Кто-нибудь может мне помочь мне, пожалуйста?
Вот это код
// This source code is subject to the terms of the Mozilla Public License 2.0 at ``https://mozilla.org/MPL/2.0/
// © pret71
//@version=4
strategy("Intraday Forex Strategy", overlay=true)
length = input(20, minval=1)
smaPeriod = input(defval = 60, title = "SMA Period", type = input.integer)
lower = lowest(length)[1]
upper = highest(length)[1]
basis = avg(upper, lower)
plot(basis, "Basis", color=#FF6A00)
u = plot(upper, "Upper", color=#0094FF)
l = plot(lower, "Lower", color=#0094FF)
mySma=sma(close,smaPeriod)
plot(mySma, "Basis", color=color.red)
//verifico che incaso long sma50 (mySma) sia crescente e in caso short decrescente
confirmLongCondition = iff(mySma[25]>mySma[50] and mySma[0]>mySma[25],true,false)
confirmShortCondition = iff(mySma[25]<mySma[50] and mySma[0]<mySma[25],true,false)
enterLongCondition = crossunder(close,lower) and confirmLongCondition //and (lower>mySma)
if (enterLongCondition)
strategy.entry("LongEntry", strategy.long)
enterShortCondition = crossover(close,upper) and confirmShortCondition //and (upper<mySma)
if (enterShortCondition)
strategy.entry("ShortEntry", strategy.short)
exitLongConditiond = crossover(close,upper)
if (exitLongConditiond)
strategy.close("LongEntry")
exitShortConditiond = crossunder(close,lower)
if (exitLongConditiond)
strategy.close("ShortEntry")
Я пытаюсь использовать этот сосновый скрипт, но он не работает
У вас есть опечатка в имени переменной в вашей последней проверке условия. Вы устанавливаете exitShortConditiond
, затем проверяете против exitLongConditiond
.
Ваш код:
exitLongConditiond = crossover(close,upper)
if (exitLongConditiond)
strategy.close("LongEntry")
exitShortConditiond = crossunder(close,lower)
if (**exitLongConditiond**)
strategy.close("ShortEntry")
о невероятно!!! Я много читал, чтобы найти ошибку типа, но не видел. спасибо
Нет необходимости писать
iff(mySma[25]>mySma[50] and mySma[0]>mySma[25],true,false)
, потому что проверка условия всегда возвращаетtrue
илиfalse
. Простая форма:confirmLongCondition = mySma[25]>mySma[50] and mySma[0]>mySma[25]