Logo

Вход

Войти с помощью соц. сетей
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
ТОП СООБЩЕНИЙ
16.06.2018, 02:58
Лучший ответ
Сообщение от ir0407 Посмотреть сообщение
Варианты есть всегда... Просто кто-то их видит, а кто-то нет.
Например... Если уж так сильно нужно иметь временные метки, то что мешает сохранить временную метку в мейджик?
Тогда будет пачка различных меджиков. Придётся что-то тоже мутить. У меня библиотека, которая высчитывает меджик из пачки параметров, что бы совки не мешали друг другу работя на разных ТФ и разных торговых инструментах. Можно конечно прилепить метку в конец или в начало, но цену.. Цену тоже придётся прилепить. Его ещё больше раздует..
17.06.2018, 15:26
Лучший ответ
Сообщение от MonyaMaker Посмотреть сообщение
Это элемент твоей технологии, но подозреваю, что в связи с последним твоим тезисом этого сообщения, его придётся пересмотреть.
Неа. Там всё канкретно. Сам рассуди. По какому-то бару с чего бы то вдруг пачка сигналов будет? Не будет.. Может быть лишь пачка ордеров по одному сигналу, если это нужно.

Сообщение от MonyaMaker Посмотреть сообщение
Подключи SQLite, он с исходниками, поупражняешься с базой, зато на упражнениях с файлами сэкономишь.
Я тоже об этом подумал. Потому что в работе с файлами как оказалось есть несуразицы. На форуме метаквотов я этот вопрос подымал. В итоге они даже не признали свой касяк. Хотя другие участники резговора признали))

Сообщение от MonyaMaker Посмотреть сообщение
Придётся менять, не переживай.
100% как не странно, всегда содержат ошибку. Сам проверял. Теперь использую 99%.
Опыт.. Бывает когда не доконца охватил мысль, тогда да, не уверенность. А бывает когда полностью продуманно всё.

Сообщение от MonyaMaker Посмотреть сообщение
В течении какого времени, и в каких условиях?
В боевых в том числе. Щяс человек, который торгует долго уже гоняет то, что имеется. Всё чётко и без нареканий. Другое дело, что мне самому не всё нравится. Т.к. серьёзный проект дожен учитывать любые возникающие ситуации. Они могу быть не часто, но тем не менее..

Сообщение от MonyaMaker Посмотреть сообщение
Наличие библиотек содержащих технологические функции естественно ускорит разработку, но разработка логики использования этих функций, думаю не очень. В открытом доступе можно найти практически весь функционал по работе с ордерами, другими элементами стратегии, но немногим удаётся используя это зарабатывать.
То что есть многое в открытом доступе я согласен. Но многие пишут абы как. Поэтому если даже что-то и перенять для ускорения разработки, то необходимо перелопачивать код, что бы хотя бы с большего понимать как он работает. Ибо можно наткнуться на неявные, на первый взгляд, касяки. У меня недавно такое было. Только когда отточил класс для работы с кастомным индюком, увидел, что индюк, который я использовал для тестирования класса кончен, причём канкретно. Хотя, визуально всё рисует правильно. Но буфер плавающий, чего быть не должно. Пришлось писать свой, который чётче всё показывает. Я к индюкам смотрю скептически, но некоторые вещи всёже в индюк поместить резонно, что бы сэкономить на рассчётах, и, опять-таки, вынести логику за пределы сова.

Сообщение от MonyaMaker Посмотреть сообщение
Это пока они тебе не нужны. Пока ты библиотеки пишешь, а потом посмотрим.
Не вопрос..)

Сообщение от MonyaMaker Посмотреть сообщение
Вставлю три копейки. И не на каждый тик необходимо перебирать ордера.
Ну.. это есс-но. Не первый день программирую. Бывают места, где подвисания, но.. это бывает у каждого.
У меня как-то так:
PHP код:
  if (lastBarTime != getBarOpenTime(0)) {
/*    if (prSignal.m_lastSignal.isRealized) {
      prSignal.m_lastSignal.isRealized = false;
      lastBarTime = getBarOpenTime(0);
    }
*/
    
g_signal prSignal.getAggregateSignal();

    if (
g_signal == SIGNAL_TO_NONE) {
      
lastBarTime getBarOpenTime(0);
      return;
    } 
Более оптимизировать уже некуда по -моему.
16.06.2018, 03:20
Лучший ответ
Накопленные выплаты: 209 RUB
Сообщение от скальпер Посмотреть сообщение
Тогда будет пачка различных меджиков.
А какая разница сколько там будет мейджиков? Мейджик же уже будет не мейджик, а временнАя метка сигнала.


Сообщение от скальпер Посмотреть сообщение
Цену тоже придётся прилепить.
Ну а цену-то зачем лепить? Неужели ее из ордера получить нельзя?


Сообщение от скальпер Посмотреть сообщение
У меня библиотека, которая высчитывает меджик из пачки параметров, что бы совки не мешали друг другу работя на разных ТФ и разных торговых инструментах. Можно конечно прилепить метку в конец или в начало, но цену..
С такими запросами тебе не то что мейджика, никакого коммента не хватит. В таком случае одна дорога - лепить собственную систему учета ордеров и всей совокупной к ним инфы.
17.06.2018, 15:33
Лучший ответ
Сообщение от IgorM Посмотреть сообщение
увеличивают, размер скомпилированного советника будет такой же как и если собирать все инклудниками - MQL не поддерживает динамическую компоновку
Хм. IgorM кто подключает библиотеки инкюдниками? Я же писал про динамический импорт.. мы говорил о разных вещах. Я вчера был замучанный. Сегодня поглядел, всё поддержитвается. По поводу этого касяка MQL забираю свои слова назад. Вот же сказано:
В импортируемые из DLL функции нельзя передавать в качестве параметра классы, массив строк или сложные объекты, содержащие строки и/или динамические массивы любых типов.
Поэтому, я верно продумал и спроектировал иерархию и есс-но это ускоряет работу сова Только вот писать не быстрее т.к. библиотеки нужно импортировать по штучно..
16.06.2018, 06:19
Лучший ответ
Накопленные выплаты: 182 RUB
Сообщение от скальпер Посмотреть сообщение
Ну так не факт, что мгновенно всё исполнится. Это же не локальный расчёт. Нужно понимать, что может исполниться сразу, а может несколько секунд исполняться. Изначально как по мне резонно проверить, установился ли ордер. Если установился бот дальше работает.. А потом хз какой ордер какой. Да, если ордер один, то всё элементарно. Можно пробежаться по ордерам от последнего до времени последнего сигнала. А если их пачка, когда поза дробится изначально, то тут возникает вопрос. Если изначально тике не получен во время установки, потом хз какой тикет какой размер имеет уже. Вот в чём сложность.


Куда записать не вопрос, главное что.. Я выше описал, что не всегда известиен определённый тикет. Например, послыаем ордер:
PHP код:
  while (cnt m_tryCount && !IsStopped()) {
    if (!
sent) {
      
sent OrderSend(m_requestm_result);
      
Sleep(250); cnt++; continue;
    }
    if (
m_result.retcode == TRADE_RETCODE_DONE) {
      if (
m_result.order && m_result.volume == lot) {
        
//lastSignal.isRealized = true;
        
break;
      }
      
m_request.volume lot m_result.volume;
      
// ЗАПИСЬ В ФАЙЛ ДАННЫХ ИСПОЛНЕНИЯ ОРДЕРА
    

Проверил я что ордер установлен TRADE_RETCODE_DONE и дальше пошёл.. Т.к. ждать того же тикета не будешь. Ведь это тоже время.. Можно что-то пропарить, если будешь ждать. В тестере у меня конструкция такая как видно в приложенном коде работает, но на реале хз как будет работать. В 4-ке таких моментов не возникало т.к. там изначально тикет получается, если исполняется приказ. А здесь немало вариантов.


Временная метка будет совпадать. Я этот момент обмозговывал не один час. Это единственный момент верный. Я же беру не то время, которое на формирующемся баре, а то, которое на сформированном баре заданного торгового инструмента, по которому только один сигнал может быть. Поэтому там вариантов нет. А вот как тикет 100% получить вопрос открытый.. Если ждать получения тикета и застрять в функции открытия ордера, тогда как-бы всё просто. Но в плане быстродействия и адекватности это полная нелепость. Я всегда всё люто оптимизирую. Код должен работать не любом ТФ молниеносно, а не выжидать с моря погоды))
================================================== ========================
Ну так не факт, что мгновенно всё исполнится. Это же не локальный расчёт. Нужно понимать, что может исполниться сразу, а может несколько секунд исполняться.
А никто на это и не рассчитывает, но но меры всё равно принять надо.

Изначально как по мне резонно проверить, установился ли ордер.
Я бы для начала "зафиксировал" сигнал по которому устанавливается ордер, чтобы повторно с ним не работать и проконтролировать до
логического завершения обработку.

Если установился, бот дальше работает.
То проверил соответствие расчётных данных, данным в открытом ордере, и сразу эту информацию разместил в правильное место.
Или обработал ошибку, правда метод m_result я бы напильником доработал. Ну не нравиться он мне.

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

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

Куда записать не вопрос, главное что.. Я выше описал, что не всегда известиен определённый тикет. Например, послыаем ордер:
PHP код:
  while (cnt m_tryCount && !IsStopped()) {
    if (!
sent) {
      
sent OrderSend(m_requestm_result);
      
Sleep(250); cnt++; continue;
    }
    if (
m_result.retcode == TRADE_RETCODE_DONE) {
      if (
m_result.order && m_result.volume == lot) {
        
//lastSignal.isRealized = true;
        
break;
      }
      
m_request.volume lot m_result.volume;
      
// ЗАПИСЬ В ФАЙЛ ДАННЫХ ИСПОЛНЕНИЯ ОРДЕРА
    

Проверил я что ордер установлен TRADE_RETCODE_DONE и дальше пошёл.. Т.к. ждать того же тикета не будешь. Ведь это тоже время.. Можно что-то пропарить, если будешь ждать. В тестере у меня конструкция такая как видно в приложенном коде работает, но на реале хз как будет работать. В 4-ке таких моментов не возникало т.к. там изначально тикет получается, если исполняется приказ. А здесь немало вариантов.
Про тестер и что на нём всё чудесно, оставлю без комментария.
Чужой код, потёмки.

Временная метка будет совпадать.
Не, она конечно может совпадать, но такли это будет на самом деле? А не в твоём воображении.

Я этот момент обмозговывал не один час.
А после обмозговывания проверил кодом, не в тестере, как на самом деле работает?

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

Если ждать получения тикета и застрять в функции открытия ордера, тогда как-бы всё просто.
А ты не жди, поставь в очередь, потом по сигналу, ранее зафиксированному, проверишь, есть на него ордер, или нет.
Проверь по нужным параметрам или нет.

Но в плане быстродействия и адекватности это полная нелепость.
И в чём это проявляется? Ты ж сам этот процесс организовываешь.

Я всегда всё люто оптимизирую.
И помогает?

Код должен работать не любом ТФ молниеносно, а не выжидать с моря погоды
Причём тут таймфремы?
Как напишешь, так и будет работать.

Ладно, не обращай внимания.
17.06.2018, 16:24
Лучший ответ
Сообщение от скальпер Посмотреть сообщение
Я же писал про динамический импорт.. мы говорил о разных вещах.
видимо да, я же напротив говорил про библиотеки MQL - команду препроцессора library
  • #1 Свернуть

    Оптимальный вариант реализации контроля исполнения сигнала

    Я очередной раз натыкаюсь на вопрос, который у меня уже около месяца имеется. На данный момент, я обхожусь без этого, но тем не менее хочется обсудить его и не возвраащться к этому моменту в будущем.
    Суть в том, что если разложить ТС на составляющие, то можно прийти к тому выводу, что любой торговый сигнал можно отследить по времени и цене на сигнальном баре. Так вот, если в какой-то момент времени нужно найти ордера в истории, что бы узнать сколько ордеров исполнилось по канкретному торговому сигналу в канкретный момент времени в идеале было бы удобно сделать комментарий типа "Время на сигнальном баре + Цена на сигнальном баре", но.. комментарии то ДЦ может затереть и такой вариант не будет 100% надёжным. Вот это касяк. Обсуждать вопрос не актуальности комментариев как таковых в МТ не стоит, т.к. это вообще отдельная тема, которая является касяком и излишеством т.к. не надёжные вещи не актуальны в применении.
    Так вот, я хочу обсудить как можно реализовать контроль исполнения ордеров по торговому сигналу и поиск этих ордеров в будущем. Кто как это реализовал?
    Теоритически, конечно, можно сделать типа ассоциативных hashtable, где время + цена будет как-то соотносится к ключом и по такому принципу находить ордера. Но это головняк.
    Есть вариант, если нужен лишь последний торговый сигнал запомнить время получения последнего торгового сигнала в структуру вместе с временем и ценой на сигнальном баре, ну и.. ес-нго символом, и потом искать от этого времени получения сигнала до СЕЙЧАС и проверять что нужно. Но как-то оно не гибко и абы как.
    А есть вариант использовать комментарии в тестере. Протестировать ТС и потом утекать с МТ на нормальную платформу. Тогда эти грабли обойдуться сами по себе и не будет лишних заморочек.
    Есть ли какие-нибудь нативные средства для решения этого вопроса?
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Сообщение от скальпер Посмотреть сообщение
    Так вот, если в какой-то момент времени нужно найти ордера в истории, что бы узнать сколько ордеров исполнилось по канкретному торговому сигналу в канкретный момент времени в идеале было бы удобно сделать комментарий типа "Время на сигнальном баре + Цена на сигнальном баре", но.. комментарии то ДЦ может затереть и такой вариант не будет 100% надёжным. Вот это касяк. Обсуждать вопрос не актуальности комментариев как таковых в МТ не стоит, т.к. это вообще отдельная тема, которая является касяком и излишеством т.к. не надёжные вещи не актуальны в применении.
    Возможно вам нужно организовать свой "журнал учета ордеров" в виде текстового файла, в который при открытие, либо модификаций, делать соответствующую запись. Информацию об ордере можно будет посмотреть в блокноте, либо считать программно(например тикет, либо дату) для дальнейших действий.

    Комментарий

    • #3 Свернуть

      Сообщение от АнтонР85 Посмотреть сообщение
      Возможно вам нужно организовать свой "журнал учета ордеров" в виде текстового файла, в который при открытие, либо модификаций, делать соответствующую запись. Информацию об ордере можно будет посмотреть в блокноте, либо считать программно(например тикет, либо дату) для дальнейших действий.
      Я об этому думал. Но это головняк. На ровном месте пачка работы. Хотя можно было нативно комфортно работать с комментариями. Я думаю нужно забить и тестировать логику без подобных вариантов (частичного заполнения). А дальше то, что даёт ожидаемый результат переписывать на нормальную платформу типа нинзи, мультичартса или на дукаскопи(JForex). Ведь нет резона решать касяки, которые не додумали разработчики. Деньги это не прнесёт. Поэтому проще воспользоваться единственным, что у них есть положительным, это тестер стратегий. А всё профитное переносить..

      Комментарий

      • #4 Свернуть

        Сообщение от скальпер
        Я об этому думал. Но это головняк. На ровном месте пачка работы. Хотя можно было нативно комфортно работать с комментариями. Я думаю нужно забить и тестировать логику без подобных вариантов (частичного заполнения). А дальше то, что даёт ожидаемый результат переписывать на нормальную платформу типа нинзи, мультичартса или на дукаскопи(JForex). Ведь нет резона решать касяки, которые не додумали разработчики. Деньги это не прнесёт. Поэтому проще воспользоваться единственным, что у них есть положительным, это тестер стратегий. А всё профитное переносить..
        Как говориться наше дело предложить, а решать вам.

        Комментарий

        • #5 Свернуть

          странный топик, сложилось ощущение что топикстартер создал топик, чтобы сказать МТ плохой, я уйду к Нинзе....
          ну а по сабжу:
          1. запись в файл
          2. запись в глобальные переменные терминала
          3. запись в массивы и организация записи и чтения массивов при денинициализации/инициализации эксперта
          по п. 3 в большая часть уже реализована в классах из поставки МТ

          Комментарий

          • #6 Свернуть

            Не совсем так. Но в этом есть определённый смысл. Ведь комментарии в МТ это не имеющее смыслом поле. А по поводу 3-пунктов не всё так однозначно. Вот что получается:
            Послали ордер лотом 1$. Например, исполнение не полное. Исполнилась сделка лотом 0.20$. Остаётся исполнить 0.80$. Но то, что осталось исполнить мы по факту узнаем только перебрав ордера т.к. это будет гарантией. Ну а узнать к какому из сигналов принадлежит определённый ордер вариантов нет т.к. мы в комментарий если и запишем, то ДЦ может перезатереть. Ну и что тогда мы будем записывать в файл, масив и тд? И вообще, нафига что-то записывать куда-то если есть комментарий, который мог играть удобную роль?

            Комментарий

            • #7 Свернуть

              Сообщение от скальпер Посмотреть сообщение
              Ну а узнать к какому из сигналов принадлежит определённый ордер вариантов нет т.к. мы в комментарий если и запишем, то ДЦ может перезатереть.
              Варианты есть всегда... Просто кто-то их видит, а кто-то нет.
              Например... Если уж так сильно нужно иметь временные метки, то что мешает сохранить временную метку в мейджик?

              Комментарий

              • #8 Свернуть

                Сообщение от скальпер Посмотреть сообщение
                Не совсем так. Но в этом есть определённый смысл. Ведь комментарии в МТ это не имеющее смыслом поле. А по поводу 3-пунктов не всё так однозначно. Вот что получается:
                Послали ордер лотом 1$. Например, исполнение не полное. Исполнилась сделка лотом 0.20$. Остаётся исполнить 0.80$. Но то, что осталось исполнить мы по факту узнаем только перебрав ордера т.к. это будет гарантией. Ну а узнать к какому из сигналов принадлежит определённый ордер вариантов нет т.к. мы в комментарий если и запишем, то ДЦ может перезатереть. Ну и что тогда мы будем записывать в файл, масив и тд? И вообще, нафига что-то записывать куда-то если есть комментарий, который мог играть удобную роль?
                Если ты ведёшь учёт ордеров, то сразу посте того, как ты получил тикет открытого ордера, проверяешь его, на соответствие открытого объёма, требуемому открываемому, то без перебора ордеров, уже можешь достоверно знать, что открыта только часть позиции.
                В этом случае нет никаких сложностей с поиском и сохранением информации, в том числе и комментированием.
                Появление, нового ордера, по инструменту, без команды на открытие позиции, и ещё несколько изменений, и будет, событием, которое закончит процесс открытия позиции в полном объёме.

                Ну и что тогда мы будем записывать в файл, масив и тд?
                А то что я тебе написал словами, то и можешь записать в файл, масив и тд, потому что в стандартном коментарри метавотовцы выделили только 32 символа, и весь эпос естественно туда не влезет. Да и нужен ли он там?

                Формат записи например <Идентификатор сигнала><Объём><другая необходимая информация>...

                В общем не стесняйся, фантазируй.

                P.S.
                И помни!!!
                Временная метка сигнала, может существенно не совпадать с временной меткой позиции.
                Возможно понадобиться дополнительная и идентификация.
                Что и как, при этом надо делать, придумай сам.
                Последний раз редактировалось MonyaMaker; 16.06.2018, 01:10.

                Комментарий

                • #9 Свернуть

                  Сообщение от MonyaMaker Посмотреть сообщение
                  Если ты ведёшь учёт ордеров, то сразу посте того, как ты получил тикет открытого ордера, проверяешь его, на соответствие открытого объёма, требуемому открываемому, то без перебора ордеров, уже можешь достоверно знать, что открыта только часть позиции.
                  В этом случае нет никаких сложностей с поиском и сохранением информации, в том числе и комментированием.
                  Появление, нового ордера, по инструменту, без команды на открытие позиции, и ещё несколько изменений, и будет, событием, которое закончит процесс открытия позиции в полном объёме.
                  Ну так не факт, что мгновенно всё исполнится. Это же не локальный расчёт. Нужно понимать, что может исполниться сразу, а может несколько секунд исполняться. Изначально как по мне резонно проверить, установился ли ордер. Если установился бот дальше работает.. А потом хз какой ордер какой. Да, если ордер один, то всё элементарно. Можно пробежаться по ордерам от последнего до времени последнего сигнала. А если их пачка, когда поза дробится изначально, то тут возникает вопрос. Если изначально тике не получен во время установки, потом хз какой тикет какой размер имеет уже. Вот в чём сложность.

                  Сообщение от MonyaMaker Посмотреть сообщение
                  А то что я тебе написал словами, то и можешь записать в файл, масив и тд, потому что в стандартном коментарри метавотовцы выделили только 32 символа, и весь эпос естественно туда не влезет. Да и нужен ли он там?
                  Формат записи например <Идентификатор сигнала><Объём><другая необходимая информация>...
                  В общем не стесняйся, фантазируй.
                  Куда записать не вопрос, главное что.. Я выше описал, что не всегда известиен определённый тикет. Например, послыаем ордер:
                  PHP код:
                    while (cnt m_tryCount && !IsStopped()) {
                      if (!
                  sent) {
                        
                  sent OrderSend(m_requestm_result);
                        
                  Sleep(250); cnt++; continue;
                      }
                      if (
                  m_result.retcode == TRADE_RETCODE_DONE) {
                        if (
                  m_result.order && m_result.volume == lot) {
                          
                  //lastSignal.isRealized = true;
                          
                  break;
                        }
                        
                  m_request.volume lot m_result.volume;
                        
                  // ЗАПИСЬ В ФАЙЛ ДАННЫХ ИСПОЛНЕНИЯ ОРДЕРА
                      

                  Проверил я что ордер установлен TRADE_RETCODE_DONE и дальше пошёл.. Т.к. ждать того же тикета не будешь. Ведь это тоже время.. Можно что-то пропарить, если будешь ждать. В тестере у меня конструкция такая как видно в приложенном коде работает, но на реале хз как будет работать. В 4-ке таких моментов не возникало т.к. там изначально тикет получается, если исполняется приказ. А здесь немало вариантов.

                  Сообщение от MonyaMaker Посмотреть сообщение
                  P.S.
                  И помни!!!
                  Временная метка сигнала, может существенно не совпадать с временной меткой позиции.
                  Возможно понадобиться дополнительная и идентификация.
                  Что и как, при этом надо делать, придумай сам.
                  Временная метка будет совпадать. Я этот момент обмозговывал не один час. Это единственный момент верный. Я же беру не то время, которое на формирующемся баре, а то, которое на сформированном баре заданного торгового инструмента, по которому только один сигнал может быть. Поэтому там вариантов нет. А вот как тикет 100% получить вопрос открытый.. Если ждать получения тикета и застрять в функции открытия ордера, тогда как-бы всё просто. Но в плане быстродействия и адекватности это полная нелепость. Я всегда всё люто оптимизирую. Код должен работать не любом ТФ молниеносно, а не выжидать с моря погоды))

                  Комментарий

                  • #10 Свернуть

                    Сообщение от ir0407 Посмотреть сообщение
                    Варианты есть всегда... Просто кто-то их видит, а кто-то нет.
                    Например... Если уж так сильно нужно иметь временные метки, то что мешает сохранить временную метку в мейджик?
                    Тогда будет пачка различных меджиков. Придётся что-то тоже мутить. У меня библиотека, которая высчитывает меджик из пачки параметров, что бы совки не мешали друг другу работя на разных ТФ и разных торговых инструментах. Можно конечно прилепить метку в конец или в начало, но цену.. Цену тоже придётся прилепить. Его ещё больше раздует..

                    Комментарий

                    • #11 Свернуть

                      Сообщение от скальпер Посмотреть сообщение
                      Тогда будет пачка различных меджиков.
                      А какая разница сколько там будет мейджиков? Мейджик же уже будет не мейджик, а временнАя метка сигнала.


                      Сообщение от скальпер Посмотреть сообщение
                      Цену тоже придётся прилепить.
                      Ну а цену-то зачем лепить? Неужели ее из ордера получить нельзя?


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

                      Комментарий

                      • #12 Свернуть

                        Сообщение от скальпер Посмотреть сообщение
                        Ну так не факт, что мгновенно всё исполнится. Это же не локальный расчёт. Нужно понимать, что может исполниться сразу, а может несколько секунд исполняться. Изначально как по мне резонно проверить, установился ли ордер. Если установился бот дальше работает.. А потом хз какой ордер какой. Да, если ордер один, то всё элементарно. Можно пробежаться по ордерам от последнего до времени последнего сигнала. А если их пачка, когда поза дробится изначально, то тут возникает вопрос. Если изначально тике не получен во время установки, потом хз какой тикет какой размер имеет уже. Вот в чём сложность.


                        Куда записать не вопрос, главное что.. Я выше описал, что не всегда известиен определённый тикет. Например, послыаем ордер:
                        PHP код:
                          while (cnt m_tryCount && !IsStopped()) {
                            if (!
                        sent) {
                              
                        sent OrderSend(m_requestm_result);
                              
                        Sleep(250); cnt++; continue;
                            }
                            if (
                        m_result.retcode == TRADE_RETCODE_DONE) {
                              if (
                        m_result.order && m_result.volume == lot) {
                                
                        //lastSignal.isRealized = true;
                                
                        break;
                              }
                              
                        m_request.volume lot m_result.volume;
                              
                        // ЗАПИСЬ В ФАЙЛ ДАННЫХ ИСПОЛНЕНИЯ ОРДЕРА
                            

                        Проверил я что ордер установлен TRADE_RETCODE_DONE и дальше пошёл.. Т.к. ждать того же тикета не будешь. Ведь это тоже время.. Можно что-то пропарить, если будешь ждать. В тестере у меня конструкция такая как видно в приложенном коде работает, но на реале хз как будет работать. В 4-ке таких моментов не возникало т.к. там изначально тикет получается, если исполняется приказ. А здесь немало вариантов.


                        Временная метка будет совпадать. Я этот момент обмозговывал не один час. Это единственный момент верный. Я же беру не то время, которое на формирующемся баре, а то, которое на сформированном баре заданного торгового инструмента, по которому только один сигнал может быть. Поэтому там вариантов нет. А вот как тикет 100% получить вопрос открытый.. Если ждать получения тикета и застрять в функции открытия ордера, тогда как-бы всё просто. Но в плане быстродействия и адекватности это полная нелепость. Я всегда всё люто оптимизирую. Код должен работать не любом ТФ молниеносно, а не выжидать с моря погоды))
                        ================================================== ========================
                        Ну так не факт, что мгновенно всё исполнится. Это же не локальный расчёт. Нужно понимать, что может исполниться сразу, а может несколько секунд исполняться.
                        А никто на это и не рассчитывает, но но меры всё равно принять надо.

                        Изначально как по мне резонно проверить, установился ли ордер.
                        Я бы для начала "зафиксировал" сигнал по которому устанавливается ордер, чтобы повторно с ним не работать и проконтролировать до
                        логического завершения обработку.

                        Если установился, бот дальше работает.
                        То проверил соответствие расчётных данных, данным в открытом ордере, и сразу эту информацию разместил в правильное место.
                        Или обработал ошибку, правда метод m_result я бы напильником доработал. Ну не нравиться он мне.

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

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

                        Куда записать не вопрос, главное что.. Я выше описал, что не всегда известиен определённый тикет. Например, послыаем ордер:
                        PHP код:
                          while (cnt m_tryCount && !IsStopped()) {
                            if (!
                        sent) {
                              
                        sent OrderSend(m_requestm_result);
                              
                        Sleep(250); cnt++; continue;
                            }
                            if (
                        m_result.retcode == TRADE_RETCODE_DONE) {
                              if (
                        m_result.order && m_result.volume == lot) {
                                
                        //lastSignal.isRealized = true;
                                
                        break;
                              }
                              
                        m_request.volume lot m_result.volume;
                              
                        // ЗАПИСЬ В ФАЙЛ ДАННЫХ ИСПОЛНЕНИЯ ОРДЕРА
                            

                        Проверил я что ордер установлен TRADE_RETCODE_DONE и дальше пошёл.. Т.к. ждать того же тикета не будешь. Ведь это тоже время.. Можно что-то пропарить, если будешь ждать. В тестере у меня конструкция такая как видно в приложенном коде работает, но на реале хз как будет работать. В 4-ке таких моментов не возникало т.к. там изначально тикет получается, если исполняется приказ. А здесь немало вариантов.
                        Про тестер и что на нём всё чудесно, оставлю без комментария.
                        Чужой код, потёмки.

                        Временная метка будет совпадать.
                        Не, она конечно может совпадать, но такли это будет на самом деле? А не в твоём воображении.

                        Я этот момент обмозговывал не один час.
                        А после обмозговывания проверил кодом, не в тестере, как на самом деле работает?

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

                        Если ждать получения тикета и застрять в функции открытия ордера, тогда как-бы всё просто.
                        А ты не жди, поставь в очередь, потом по сигналу, ранее зафиксированному, проверишь, есть на него ордер, или нет.
                        Проверь по нужным параметрам или нет.

                        Но в плане быстродействия и адекватности это полная нелепость.
                        И в чём это проявляется? Ты ж сам этот процесс организовываешь.

                        Я всегда всё люто оптимизирую.
                        И помогает?

                        Код должен работать не любом ТФ молниеносно, а не выжидать с моря погоды
                        Причём тут таймфремы?
                        Как напишешь, так и будет работать.

                        Ладно, не обращай внимания.

                        Комментарий

                        • #13 Свернуть

                          Сообщение от скальпер Посмотреть сообщение
                          И вообще, нафига что-то записывать куда-то если есть комментарий, который мог играть удобную роль?
                          а попробуйте представить, что нет и никогда не было такой возможности в МТ? - так легче будет
                          ну и не проблема поискать сервер на котором брокер не модифицирует поле комментария и пользоваться раз сильно хочется
                          ну и опять же к моему пред.сообщению п.3:
                          используйте библиотеку классов из поставки МТ4: "Класс CArrayString является классом динамического массива переменных типа string"
                          не вижу проблемы для написания собственной функции работы с комментариями ордера, может напишу в качестве баловста, но проверять работоспособность лень

                          Комментарий

                          • #14 Свернуть

                            Сообщение от ir0407 Посмотреть сообщение
                            А какая разница сколько там будет мейджиков? Мейджик же уже будет не мейджик, а временнАя метка сигнала.
                            Ну я перед сном подумал. Согласен. Здесь всё просто. Идём дальше..

                            Сообщение от ir0407 Посмотреть сообщение
                            Ну а цену-то зачем лепить? Неужели ее из ордера получить нельзя?
                            Оно как-бы и можно теоритически, но не всё там удобно. Оптимально не напишешь. Придётся лупить довольно-таки длинный алгоритм. Это не проблема, но хочется прийти к более изящному решению. Вот что в таком случае будет:
                            • Генерируем магик, например, добавлением идентификатор торгового инструмента и таймфрейма к некоему базовому числу(магику из инпут параметров). Идентификатор торгового инструмента нужен, что бы если тот же сов работает на разных инструментах не цеплял позиции такого же сова, работающего на другом торговом инструменте.
                            • В цикле пока посылаем ордер, есть несколько попыток заданных в функции открытия позиции. При успешном открытии позиции проверяем реализованный лот. Если не весь объём реализован, тогда отнимаем от общего требуемого для реализации лота реализованный и дальше посылаем.
                            • На следующем тике производится поиск открытых позиций. Критерий поиска будет всё тот же заданный в магике идентификатор торгового инструмента + Время бара, на котором сигнал. Это по вашему.
                              С ордера брать цену можно, но время открытия ордера не равно времени открытия сигнального бара! Это разные вещи. Сигнальный бар может быть на конце графика даже. Это не суть. Если ещё подумать, то если будет проскальзывание N-пунктов, то придётся учитывать отклонение цены. В общем, это не есть рационалньый вариант реализации. Слишком много нужно учитывать нюансов. Куда проще и практичнее сохранить несеолько переменных куда-то и по ним перебирать..


                            Сообщение от ir0407 Посмотреть сообщение
                            С такими запросами тебе не то что мейджика, никакого коммента не хватит. В таком случае одна дорога - лепить собственную систему учета ордеров и всей совокупной к ним инфы.
                            С какими такими? 2 или 3 цифры записать это много что-ли? Да ладно..

                            Комментарий

                            • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
                            • #15 Свернуть

                              Сообщение от MonyaMaker Посмотреть сообщение
                              Я бы для начала "зафиксировал" сигнал по которому устанавливается ордер, чтобы повторно с ним не работать и проконтролировать до
                              логического завершения обработку.
                              Так зафикстированно изначально. По тому же времени и цене сигнального бара. Всё в этом плане чётко..

                              Сообщение от MonyaMaker Посмотреть сообщение
                              То проверил соответствие расчётных данных, данным в открытом ордере, и сразу эту информацию разместил в правильное место.
                              Или обработал ошибку, правда метод m_result я бы напильником доработал. Ну не нравиться он мне.
                              После правильных действий, знал бы с каким ордером надо продолжить работу, а с каким уже работа закончена. Даже если их пачка.
                              Всё опять-таки сводится к тому, где хранить..

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

                              Сообщение от MonyaMaker Посмотреть сообщение
                              Не, она конечно может совпадать, но такли это будет на самом деле? А не в твоём воображении.
                              100%. Это уже проверенно.

                              Сообщение от MonyaMaker Посмотреть сообщение
                              А после обмозговывания проверил кодом, не в тестере, как на самом деле работает?
                              Да, конечно. Я когда пишу библиотеки или классы перед пушем в репозиторий всё проверяю.

                              Сообщение от MonyaMaker Посмотреть сообщение
                              А ты не жди, поставь в очередь, потом по сигналу, ранее зафиксированному, проверишь, есть на него ордер, или нет.
                              Проверь по нужным параметрам или нет.
                              Проверил. Но проблема в том, что лот там, где я проверял всегда исполняется целиом. не дробится нигде. Оно вообще нужно в МТ4(5) ? Или это так.. сделано для вида, типа мы торгуем на межбанке и всё здесь цивильно как и должно быть? Я не встречал просто дробирования лота брокером..

                              Сообщение от MonyaMaker Посмотреть сообщение
                              И в чём это проявляется? Ты ж сам этот процесс организовываешь.
                              И помогает?
                              Проявляется в том, что потом писать совы быстро. По началу дольше пишется, а потом сова состояит из нескольких десятков строк. Вся логика за её пределами.Мне так больше нравится. А не когда в одном файле километры. Как это обычно делается у многих. В том числе и метаквоты пример подают своими стандартными классами далеко не положительный. Бардак там полный. Тоже самое можно попилить в разы по строкам и по комфорту использования. Если у человека нет опыта программирования, он там мозг поломает и не поймёт вообще ничего. Другие либо пользуются тем что есть, либо.. как я пишут своё. Я выбираю своё, т.к. таки образом я контролирую весь процесс. И чаще всё понятно. Но вот бывают и сложности. Хотя стандартные классы их не решать всё-равно..

                              Сообщение от MonyaMaker Посмотреть сообщение
                              Причём тут таймфремы?
                              Как напишешь, так и будет работать.
                              Я имею ввиду, что на мелких периодах сигналы чаще. На тиках ещё чаще. Если алгоритм будем медленный, то не успеешь всё исполнить))
                              Мне тики не нужны.. но это не поводу писать абы как.

                              Комментарий

                              X