Как получить рыночные данные с помощью MQL4?

Я использую metatrader4, и я могу получить любую информацию "но" рыночные данные от btc-e http://docs.mql4.com/constants/environment_state/marketinfoconstants

IE

double pending = MarketInfo(Symbol(),MODE_PENDING);
MessageBox(
  DoubleToStr(pending)
);

точно так же, как рыночные данные в правой части этого графика https://bitcoinwisdom.com/markets/btce/ltcusd, все отложенные ордера на покупку / продажу, тот же рынок и все остальное. Как сбросить ожидающий том с помощью MQL4?

2 ответа

Во-первых, давайте начнем с неправильной концепции < code > -snippet

Как видно из предоставленного < code > -snippet, существует принципиальная ошибка / неправильная концепция. Хотя синтаксис MQL4-кода возможен на этапе компиляции (он преобразуется в оперативный исполняемый код.ex4), результат в принципе неверен.

В MQL4 есть много перечисляемых констант, которые раньше имели нулевую проверку контекста использования на этапе компиляции MetaLang.exe. (Да, пришлось сказать "раньше было", из-за того, что MetaQuotes, Inc., недавний переход к "скрытым" модификациям языка сильно изменил поведение системы, даже в синтаксисе MQL4, вызвав его довольно Orwel-стиль "Новый"-MQL4, поэтому в условиях движущихся песков нужно еще больше внимания уделять деталям...)

Как уже было сказано, ENUM_CONST так же, как ваша попытка использовать MODE_PENDING, имеет справедливое значение в языке, но это не гарантирует ничего, кроме замены во время компиляции значения int, Таким образом, можно заявить MODE_HIGH (кстати == 2) в любом месте, где MODE_SMMA ( btw == 2 либо) будет иметь соответствующий контекст использования. Это просто символические замены на этапе разбора компилятора.


Во-вторых, давайте сосредоточимся на вашей цели

Как видно, вы хотели бы как-то оперировать набором знаний об общей сумме и соответствующих размерах отложенных ордеров, которые ждут "на столе", прежде чем рынок активирует их. Это сложная и нетривиальная задача. Тем более, что у FX нет "центрального" рынка, чтобы собирать общую общую сумму сумм.

Говоря об их " объеме ", возникает еще одна путаница. Volume в MQL4 реализовано скорее дискретное целочисленное значение, связанное с накопленной суммой изменений цены в соответствующем баре. Таким образом, на NewBarEVENT, Volume[0] == 1 (первая ценовая котировка только что прибыла и принесла признак aNewBarEVENT per se), и это значение пошагово увеличивается в течение продолжительности живого бара ( [0]). Также можно заметить, что для баров, где ценовая котировка не появилась "с рынка", MT4 не показывает ни одного бара на графике (отсутствующая свеча).

Поэтому всегда будьте осторожны при использовании слова " Объем", чтобы убедиться, что он получает полный контекст использования.

Насколько вы можете судить по вашему сообщению, вы хотите получить OrderBook LEVEL-2, также известный как Depth-Of-Market.

Хотя это возможно, это потребует больше усилий для сборки, чем просто однострочный код в MQL4.


В-третьих, давайте сделаем работу

Возможно, у вашего брокера есть API-сервис, готовый для сбора и обработки DoM L2.

  • Если нет, то иди и попроси их открыть это для тебя.

Если не,

  • смени брокера на такого, который будет.

Существуют и другие источники для создания и поддержки DoM L2, но необходимо проверить актуальность вашего места торговли-исполнения, так как некоторые могут сделать вашу стратегию ограниченной из-за роли MarketMaking, однажды торгуя против вашей модели.

Ваш брокер -"местный" L2 DoM рулез. Всегда. Не стоит потерь, чтобы проверить обратное.

Если вы готовитесь к этой задаче, будьте готовы работать на архитектуре со сверхнизкими задержками, так как субмиллисекундные частоты в динамике эволюции DoM L2 не редкость.

Оказавшись "в дороге", вы скоро заметите, что MQL4 имеет разрешение таймера выше 1 мсек.

Пассивный TAMARA-сниффер считывает время вашего прибытия вашего брокера (мсек) и показывает наиболее быстрые и типичные выравнивания TimeDOMAIN для режима работы Hard-Real-Time-System

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

(Пожалуйста, имейте в виду, что в MQL4 есть только несколько потоков, которые абсолютно не поддаются вашему контролю. Таким образом, должен быть разработан тщательно продуманный многопроцессорный дизайн, чтобы работать в неблокирующем режиме, близком к реальному времени. Поверьте мне, ваш проект настолько интегрирован с интегрированными системами, что это очень волнующе для достижения цели: o)

Задержка отклика активного SONAR-эха от начала до конца (мсек) - читайте подробности на экране терминала

)

Тем не менее, стоит делать работу правильно.

Есть два типа тома. Одним из них является iVolume, а затем iOBV или объем баланса.

Вот объем документа:

http://docs.mql4.com/series/ivolume

Объем баланса хорошо подходит для определения среднего объема на основе вашего символа в течение определенного периода времени. Наличие долгосрочного obv может генерировать тренд.

Вот ессно:

http://docs.mql4.com/indicators/iobv

Теперь по поводу объема. Нет никакого способа определить "ожидающий" объем, это всегда исторический индикатор.

Если у вас есть парень, у которого есть 10 лт, и он хочет продать за 7,50, а кто-то хочет купить 10 за 7,49, и при этом нет изменения заказа, у вас нет объема, так как один ждет другого и знает, сколько времени это займет.

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

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

В заключение. Могу поспорить, что вы не знали, что у Stack Exchange есть биткойн-сайт. Могу поспорить, что этот вопрос получит больше трансляции там. http://bitcoin.stackexchange.com/

Удачи!

Другие вопросы по тегам