1

Тема: Take profit и stop loss.

Доброго времени суток всем.
Помогите разобраться как отправить заявку.
Допустим купил акцию по 100р. при падении до 98 или росте до 105 продать.
Перечитал кучу всего.
Додумал только до такого.


price_buy = 135.08
stopprice = price_buy*0.985 -- Падение цены на 1.5%
pricesell = price_buy*0.98    -- По какой цене продать
profit = price_buy*1.02        --Цена профита

limit =
{
["ACTION"] = "NEW_STOP_ORDER",
["TRANS_ID"] = "2",
["CLASSCODE"] = "QJSIM", 
["SECCODE"] = "SBER",  
["ACCOUNT"]="NL0011100043",  
["OPERATION"] = "S",
["QUANTITY"]="1",
["PRICE"] = pricesell, --???
["STOPPRICE"] = stopprice, --???
 
["STOP_ORDER_KIND"] = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER",
["EXPIRY_DATE"] = "TODAY",
["OFFSET"] = "0.05",
["OFFSET_UNITS"] = "PRICE_UNITS",
["SPREAD"] = "0.05",
["SPREAD_UNITS"]  = "PRICE_UNITS",
["MARKET_TAKE_PROFIT"]  = "YES",
["STOPPRICE2"] = profit, --??? 
}
orderResult = sendTransaction(limit)

Возможно что-то не так понял.

2

Re: Take profit и stop loss.

musin пишет:

Доброго времени суток всем.
Помогите разобраться как отправить заявку.
Допустим купил акцию по 100р. при падении до 98 или росте до 105 продать.
Перечитал кучу всего.
Додумал только до такого.
Возможно что-то не так понял.

price_buy = 135.08
stopprice = price_buy*0.985 -- Падение цены на 1.5%
pricesell = price_buy*0.98    -- По какой цене продать
profit = price_buy*1.02       --Цена профита

вот эти цены должны быть кратны стоимости шага цены и иметь тип string.

local e = 0.0000001
function round(v, s, up)
    s = s or 1
    local r = v/s
    if v >= 0 then
        if not up then
            return math.floor(r + e) * s
        end
        return math.floor(r + 0.5) * s
    else
        if not up then
            return math.ceil(r - e) * s
        end
        return math.ceil(r - 0.5) * s
    end
end
--вы должны начётно знать шаг цены инструмента, например: 0.01
stopprice = tostring(round(price_buy*0.985, 0.01))

я бы на вашем месте не пользовался ["STOP_ORDER_KIND"] = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER"
это косорукое творение от арки и оно не имеет гибкости.
лучше сделать отдельно профит и отдельно стоп.

3

Re: Take profit и stop loss.

Про String я знаю что весь массив вдолжен быть строками. Не стал засорять лишним кодом пост. Про шаг цены там 0.01 руб.
Отсекаю лишние знаки через (string.format("%.2f").

По поводу

я бы на вашем месте не пользовался ["STOP_ORDER_KIND"] = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER"
это косорукое творение от арки и оно не имеет гибкости.
лучше сделать отдельно профит и отдельно стоп.


Даже не понимаю куда смотреть.

4

Re: Take profit и stop loss.

musin пишет:

Про String я знаю что весь массив вдолжен быть строками. Не стал засорять лишним кодом пост. Про шаг цены там 0.01 руб.
Отсекаю лишние знаки через (string.format("%.2f").

засорять? вы переписали блок кода с файла справки или еще откуда, у вас не выставляется заявка и вы говорите про "засорять"?



musin пишет:

По поводу
я бы на вашем месте не пользовался ["STOP_ORDER_KIND"] = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER"
это косорукое творение от арки и оно не имеет гибкости.
лучше сделать отдельно профит и отдельно стоп.


Даже не понимаю куда смотреть.

смотрите файл справки info.chm раздел 8

5

Re: Take profit и stop loss.

У меня такой вопрос.
Как можно переставить лимитную заявку или стоп-заявку?
Я нашёл такое:
["ACTION"] = ["MOVE_ORDERS"]
Но в описании указано, что это только для рынка FORTS.
А если рынок акций, тогда как быть?

6

Re: Take profit и stop loss.

Если не ошибаюсь, то нет транзакции переставить заявку на ММВБ (акции). Только снять и выставить новую.

7

Re: Take profit и stop loss.

swerg, спасибо.
Жаль, что нет такой транзакции. Хотя вещь очевидная...

8 (2022-12-05 23:57:23 отредактировано swerg)

Re: Take profit и stop loss.

Вопрос не очевидности или удобства.
Я думаю вопрос в том, хочет ли биржа брать на себя все риски с такой транзакцией. Там слишком много нюансов вылезает.
Опять же как тарифицировать. Много очень самых разных нюансов, короче, которые надо поддерживать.

9

Re: Take profit и stop loss.

kalikazandr пишет:
musin пишет:

Про String я знаю что весь массив вдолжен быть строками. Не стал засорять лишним кодом пост. Про шаг цены там 0.01 руб.
Отсекаю лишние знаки через (string.format("%.2f").

засорять? вы переписали блок кода с файла справки или еще откуда, у вас не выставляется заявка и вы говорите про "засорять"?



musin пишет:

По поводу
я бы на вашем месте не пользовался ["STOP_ORDER_KIND"] = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER"
это косорукое творение от арки и оно не имеет гибкости.
лучше сделать отдельно профит и отдельно стоп.


Даже не понимаю куда смотреть.

смотрите файл справки info.chm раздел 8

Вы правы. Скопировал часть кода из другого примера.
Просто весь остальной код написан мной и он работает. Все считывает и все считает. Не могу только выставить заявку.
То что Вы написали info.chm это общая справка. Смею предположить что посылали в раздел 6. tri файл и карман заявок.

Получил tri файл. Но он на русском языке.  Как его корректно перевести на анлгийский язык для Quik?

Или я снова полез не туда?