Обнаружение ECN брокеров
Страница 1 из 812 12 ПоследняяПоследняя
Results 1 to 10 of 15

Thread: Обнаружение ECN брокеров

  1. #1
    У меня были проблемы в последнее время.

    Как я могу зафиксировать ошибки, возникшие из-за неудачных сделок на ECN-брокерах?

  2. #2

    Quote Originally Posted by ;
    У меня были проблемы в последнее время. Как я могу зафиксировать ошибки, возникшие из-за неудачных сделок на ECN-брокерах?
    Рон, извините, если мне чего-то не хватает, но я протестировал этот продукт (который выполняет множество вариаций OrderSend (), OrderModify (), OrderClose () и OrderDelete ()) на 16 разных br0kers, и я обнаружил, что GetLastError () делает работу. Продукт также имеет возможность (автоматически) добавлять SLTP как ModifyOrder () вместо части OrderSend (), что, кажется, решает одну проблему, о которой я знаю. Если эта опция отключена, GetLastError () возвращает 130 (недопустимые остановки) с некоторыми br0kers. Можете ли вы быть более конкретным, то есть предоставить ссылку на ECN br0ker, с которой у вас проблемы, и некоторую информацию об ошибках, которые происходят? Я проведу несколько тестов и сообщу о результате. Спасибо Дэвид

  3. #3
    Эй, Ганновер, Насколько я знаю, один из способов, которым ECN Broker обрабатывает заказы, введенные с SLTP, - это сбой без кода ошибки. Я пытаюсь найти способ зафиксировать эту ошибку. Один метод, который я использовал, состоял в том, чтобы проверить билет заказа. Это не похоже на работу. Поэтому я ищу альтернативы.

  4. #4

    Quote Originally Posted by ;
    Эй, Ганновер, Насколько я знаю, один из способов, которым ECN Broker обрабатывает заказы, введенные с SLTP, - это сбой без кода ошибки. Я пытаюсь найти способ зафиксировать эту ошибку. Один метод, который я использовал, состоял в том, чтобы проверить билет заказа. Это не похоже на работу. Поэтому я ищу альтернативы.
    Рон, с каким br0ker у тебя проблемы? Это FXCM? Спасибо Дэвид

  5. #5

    Quote Originally Posted by ;
    Рон, с каким br0ker у тебя проблемы? Это FXCM? Спасибо Дэвид
    FXCM и FXDD на данный момент. Я не уверен, что ваше исследование среди 16 брокеров показало какие-либо закономерности.

  6. #6
    Quote Originally Posted by ;
    FXCM и FXDD на данный момент. Я не уверен, что ваше исследование среди 16 брокеров показало какие-либо закономерности.
    Рон, так что вы говорите, что GetLastError () возвращает 0, даже если заказ не размещается? У меня было предчувствие, что мы могли бы пойти на то же самое. Но, как вы можете видеть (здесь), моя проблема заключалась в том, что пользователь моего продукта получал ошибку 130, когда из-за неправильной настройки скрипт пытался добавить TPSL как часть исходного OrderSend (). Если вы хотите опубликовать фрагмент кода, который вызывает проблему (или включить его в личку), я посмотрю. Иногда посторонний может заметить нечто очевидное, что программист как-то упустил из виду. Это происходит со мной все время.
    Дэвид

  7. #7
    Это моя собственная попытка сделать универсальный скрипт ECN Broker. Ошибки передаются в код обработки ошибок в функции Start (). Это специально предназначено для обнаружения ECN-брокера и соответствующей корректировки его поведения. Вставленный код extern bool ECNBroker = False; int SendOrder (строка OpenSymbol, int OpenCommand, двойной OpenVolume, двойной OpenPrice, int OpenSlippage, двойной OpenStopLoss, двойной OpenTakeProfit, строка OpenComment, int OpenMagicNumber, дата и время OpenExpiration, цвет OpenColor) {int FTicket = -2; if (! ECNBroker) {FTicket = OrderSend (OpenSymbol, OpenCommand, OpenVolume, OpenPrice, OpenSlippage, OpenStopLoss, OpenTakeProfit, OpenComment, OpenMagicNumber, OpenExpiration, OpenColor); if (FTicket == -1) {return (FTicket); } if (OrderSelect (FTicket, SELECT_BY_TICKET, MODE_TRADES)) {return (FTicket); } else {ECNBroker = True; }} if (ECNBroker) {FTicket = OrderSend (OpenSymbol, OpenCommand, OpenVolume, OpenPrice, OpenSlippage, 0.0, 0.0, OpenComment, OpenMagicNumber, OpenExpiration, OpenColor); if (FTicket gt; 0) {OrderSelect (FTicket, SELECT_BY_TICKET, MODE_TRADES); OrderModify (FTicket, OrderOpenPrice (), OpenStopLoss, OpenTakeProfit, OrderExpiration (), CLR_NONE); } return (FTicket); }} Это пример другого кода обработки ошибок, используемого в моих советниках. Билет вставленного кода = SendOrder (Symbol (), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, Sell (# MagicNumber ), MagicNumber, 0, DeepPink); if (Ticket gt; 0) {if (OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)) {Print (открыт ордер SELL:, OrderOpenPrice ()); if (SignalMail ShortMailSignalBarCount! = Bars) {SendMail (# 91; Сигнал оповещения # 93 ;, # 91; Symbol () # 93; DoubleToStr (Ставка, Цифры) Сигнал на продажу); ShortMailSignalBarCount = Bars; } if (Alerts ShortAlertSignalBarCount! = Bars) {Alert (# 91; Symbol () # 93; DoubleToStr (Bid, Digits) Sell Signal); ShortAlertSignalBarCount = Bars; } if (PlaySounds ShortSoundSignalBarCount! = Bars) {PlaySound (alert.wav); ShortSoundSignalBarCount = Bars; } TradesThisBar ; } else {Print (Ошибка открытия ордера SELL:, GetLastError ()); }}

  8. #8

    Quote Originally Posted by ;
    Это моя собственная попытка сделать универсальный скрипт ECN Broker. Ошибки передаются в код обработки ошибок в функции Start (). Это специально предназначено для обнаружения ECN-брокера и соответствующей корректировки его поведения.
    Рон, просто глядя на ваш первый фрагмент кода ....... Предполагается, что br0ker не-ECN, а затем размещает заказ с (предположительно) ненулевой SLTP. Если OrderSend () завершится ошибкой, он вернет FTicket = -1. Ваш следующий тест говорит, что если FTicket == -1, то просто верните (FTicket), выходя из функции. Следовательно, он никогда не попадет в тест if (ECNBroker) ..... и не будет иметь возможности разместить заказ. Просто предположение, но в этом ли проблема? Дэвид

  9. #9
    Я тоже так думал, за исключением того, что когда я запускал функции Print () во втором разделе ECN, советник все еще работал через этот раздел, поэтому этот блок кода изменял значение ECNBroker с False на True. Если значение Ticket, переданное в результате выполнения функции, было равно -1, в конце второго блока кода должен был быть вызов «get last error». Ошибка не произошла. Возможно, возвращенный тикет -1 - это просто общая ошибка?

  10. #10

    Quote Originally Posted by ;
    Я тоже так думал, за исключением того, что когда я запускал функции Print () во втором разделе ECN, советник все еще работал через этот раздел, поэтому этот блок кода изменял значение ECNBroker с False на True. Если значение Ticket, переданное в результате выполнения функции, было равно -1, в конце второго блока кода должен был быть вызов «get last error». Ошибка не произошла. Возможно, возвращенный тикет -1 - это просто общая ошибка?
    Это очень странно. Документ MetaQuotes для OrderSend () говорит, что он возвращает номер тикета, назначенный ордеру торговым сервером, или -1, если он не работает. Чтобы получить дополнительную информацию об ошибке, нужно вызвать функцию GetLastError (). Именно так я всегда понимал, как это работает, то есть ЛЮБОЙ сбой приводит к возвращению значения -1. В советниках, которые я написал сам, MT4 никогда не давал мне повода полагать иначе. Я не уверен, что можно протестировать ECN br0ker. Если OrderSend (), возвращающий -1, является универсальным, то это может просто произойти в результате любой ошибки. Даже использование GetLastError (), вероятно, недостаточно конкретно, поскольку вызов OrderSend () с ненулевым TP или SL, по-видимому, возвращает ошибку 130 (недопустимые остановки), которая также может происходить по причинам, отличным от того, что br0ker является ECN. Извините, я не могу быть более полезным. Дэвид

Действующие разрешения

  • Вы не можете создавать новые темы
  • Вы не можете размещать ответы
  • Вы не можете использовать вложения
  • Вы не можете редактировать ваши записи
  •  
  • BB-код - Вкл.
  • Смайлики - Вкл.
  • Код [IMG] - Вкл.
  • Код [VIDEO] - Вкл.
  • HTML-код - Выкл.
Веб-сайт использует cookies
Веб-сайт использует cookies, в настоящее время некоторые из них уже установлены. Вы можете ознакомиться с более подробной информацией об использовании нами cookies здесь. Чтобы принять условия использования cookies, пожалуйста, нажмите на кнопку справа. Если вы продолжаете пользоваться веб-сайтом, вы по умолчанию принимаете условия использования cookies.