Ордера, Сделки, Позиция.

Базовая торговая терминология

Статус темы:
Закрыта.
  1. blackoff

    Регистрация:
    29.08.18
    Сообщения:
    2
    Был на сайте:
    29.11.23

    Я здесь новенький из мира MQL и криптобирж.

    Первое что бросилось в глаза в документации это некорректная торговая терминология в событиях, методах, данных (последние страницы 3.Manual Os.Engine (BotCreate).pdf). Обычно в торговом бомонде принято так:

    Order - это ордер, заявка, приказ отправляемый на биржу для покупки или продажи указанного объема. Например купить 30 яблок или продать 30 яблок. Два состояния: исполнен и не исполнен.

    Trade - трейд, сделка, это сведение (исполнение) биржей ордеров на покупку и на продажу вместе. Например 30 яблок куплено, отправили приказ(ордер) на продажу 10 яблок (если наш ордер сработает то получим сделку(трейд) по продаже 10 яблок. Не все биржи транслируют такую информацию.

    Position - это текущее состояние по активу(валюта, фьюч), суммарное состояние всех ранее исполненных биржей ордеров. Позиция это не ордер. Например было куплено 30 яблок, продали 5 яблок и ещё продали 5 яблок текущая позиция равна 20 купленных яблок. Три состояния: (0) - нет позиции, (1)-позиция в лонг, (-1)-позиция в шорте.

    Поэтому события должны происходить у Ордеров, методы тоже с Ордерами, данные (история, лимитки) тоже Ордеров (исполненные и не исполненные).

    Полагаю вы пришли из мира Форекс и ордера называете позициями, что в корне не верно.

    Итак вопрос: Как в рамках ОСЭнжин посмотреть состояние текущей позиции и как отправить лимитный ордер на биржу?

    Весёлое начало)))

    blackoff
    29.08.2018 07:42
    #1
  2. Алексей Ван Команда форума

    Регистрация:
    02.02.13
    Сообщения:
    1172
    Был на сайте:
    23.04.24
    Цитата: blackoff


    Весёлое начало)))

    Да не очень. Я просто отвечу Вам, без подколов. И Вам повезло что Вы попали в этом место. Мы Вам поможем.

    Позиция у робота совсем не наше изобретение. Любой конструктор роботов обладает такой штукой, т.к. многие роботы в итоге должны открывать несколько позиций под разные формации и должны их вести раздельно. Кроме того бывает так что одновременно запущено много ботов одновременно, которые торгуют разные стратегии на одном инструменте, тогда мы имеем множество позиций по разным ботам и роботы позиций друг друга не видят и видеть не должны и также должны вести свои позиции по разным паттернам по разному. Кроме того, человек может торговать во время торговли бота и его торговля не должна быть видна для роботов, т.к. у них и человека разные позиции. А ещё бывают арбитражеры, запущенные массивом в 20 ботов, торгующих на разных биржах одновременно, на разных инструментах и там ещё торгует человек и никто позиций друг друга видеть не должен. Ну и так далее.


    Так в Wealth-Lab, Ninja скрипт, Stock Sharp, TsLab, MQL(если мне память не изменяет), ну и конечно же у нас. У нас же тут роботы всё таки, а не просто адаптер для выставления заявок или скальперский стакан.

    Вы быстро привыкните и жить без этого не сможете.


    По Вашему вопросу:

    1. Необходимо создать вкладку для получения данных по инструменту. Это делается из конструктора.

    2. Подписаться на какое нибудь событие у этой вкладки, вроде обновления стакана, тика или свечи.

    3. В этом событии обратиться к вкладке и вызвать у неё метод BuyAtMarket(); к примеру, или что там Вам нужно.

    4. Если Вам нужно запросить общую позицию на бирже(всех роботов, человека), то можно также обратиться к вкладке и запросить её.

    5. Также Вы можете запросить позицию отдельно по текущему роботу.

    5. Профит.


    Как это сделать в коде? - пройти у нас обучение

    Алексей Ван
    29.08.2018 15:13
    #2
  3. blackoff

    Регистрация:
    29.08.18
    Сообщения:
    2
    Был на сайте:
    29.11.23

    Например мне нужно в тестере проверить небольшую стратегию (типа сетки), сигналами для которой являются ранее выставленные лимитные ордера. На бирже всегда должны быть выставлены две лимитные заявки одна шорт, другая лонг. Итого две. Если отсутствует лимитная заявка Лонг, значит биржа её исполнила, то надо убрать все старые заявки и поставить снова две (шорт и лонг), но по другим ценам. С заявкой шорт та же самая логика. Как такую логику организовывать, если у вас методы только для позиций? А выставленные лимитные заявки как теперь узнавать: количество, тип, цена, номер и тд?

    blackoff
    04.09.2018 02:10
    #3
  4. Алексей Ван Команда форума

    Регистрация:
    02.02.13
    Сообщения:
    1172
    Был на сайте:
    23.04.24
    Цитата: blackoff

    Например мне нужно в тестере проверить небольшую стратегию (типа сетки), сигналами для которой являются ранее выставленные лимитные ордера. На бирже всегда должны быть выставлены две лимитные заявки одна шорт, другая лонг. Итого две. Если отсутствует лимитная заявка Лонг, значит биржа её исполнила, то надо убрать все старые заявки и поставить снова две (шорт и лонг), но по другим ценам. С заявкой шорт та же самая логика. Как такую логику организовывать, если у вас методы только для позиций? А выставленные лимитные заявки как теперь узнавать: количество, тип, цена, номер и тд?

    Всё тоже самое, только с позициями. В примерах есть робот MarketMaker. Посмотрите, там что-то похожее.

    Алексей Ван
    04.09.2018 11:49
    #4
Статус темы:
Закрыта..