Проверьте, если в определенной позиции - PullRequest
0 голосов
/ 29 декабря 2018

Это решит более сложную проблему, с которой я столкнулся.

У меня есть две строки в моем коде:

strategy.entry(id = "Long", long = true, when = upAllConditions, stop = upStopLoss)
strategy.entry(id = "Short", long = true, when = upAllConditions, stop = upStopLoss)

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

Я НЕ хочу открывать короткую позицию, если я нахожусь в позиции "Long", и НЕ хочу открывать длинную позицию, если я нахожусь в позиции "Short".

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

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Я думаю, вы должны перенести статус позиции в историю следующим образом:

IN_SHORT = 1
IN_LONG = 2
NONE = 3

status = NONE
status := nz(status[1], NONE)

if status != IN_SHORT and upAllConditions
    strategy.entry(id = "Long", long = true, when = upAllConditions, stop = upStopLoss)
    status = IN_LONG
0 голосов
/ 29 января 2019

Использовать встроенную переменную Strategy.position_size :

Направление и размер текущей рыночной позиции.Если значение> 0, рыночная позиция длинная.Если значение <0, рыночная позиция короткая.Абсолютным значением является количество контрактов / акций / лотов / единиц в сделке (размер позиции). </p>

...