Как узнать что торговать нельзя?
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 20

Тема: Как узнать что торговать нельзя?

  1. #1
    Теоретик Аватар для 4e$
    Регистрация
    12.05.2015
    Сообщений
    398
    Promo (¢)
    3,330
    Благодарности
    Получено: 56
    Отправлено: 99

    Как узнать что торговать нельзя?

    Здравствуйте уважаемые трейдеры программисты, может есть у кого то правильное решение: как определить что торговать нельзя? Имеется ввиду советником, торгующий по нескольким инструментам, нужно определять выходной день, праздничный день, а также моменты когда котировки идут, а торговать временно запрещенно на инструменте. Поэтому из известных способов, которые есть в интернете:
    1. По проверке времени последнего тика на инструменте не подходит, потому что тики идут а торговля может быть под запретом.
    2. Функцией istradeallowed() тоже не подойдёт, насколько понимаю праздничные дни она не почует.
    3. Открывая для проверки отложенные ордера, ну это извращение, только на худой конец.

    Невооруженным глазом видно, что скомбинировав все три метода получится конфетка, но советником предполагается торговля большого списка инструментов, следовательно все три метода вместе раздуют его время обработки до неприличия, в общем подскажите, кто как решил такую проблему?

    P.s. Если кто подсчитает вопрос через чур глупым прочитайте мой третий пост, где я даю пояснение пообширнее.

    Вы не можете благодарить!
    Последний раз редактировалось 4e$; 05.02.2016 в 08:18.

  2. #2
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,430
    Promo (¢)
    32,735
    Благодарности
    Получено: 481
    Отправлено: 50
    Цитата Сообщение от 4e$ Посмотреть сообщение
    : как определить что торговать нельзя? Имеется ввиду советником, торгующий по нескольким инструментам, нужно определять выходной день,
    Здесь вас не понять, существует(условно) два вида выходных дней: у вас и у John Smith из Алабамы.
    праздничный день,
    У вас или Шона Коннери?
    а также моменты когда котировки идут, а торговать временно запрещенно на инструменте
    И когда такое бывает?

    см. help раздел : Программы MQL4 ->Разрешение на торговлю. А так же ENUM_SYMBOL_TRADE_MODE.

    Вы не можете благодарить!

  3. #3
    Теоретик Аватар для 4e$
    Регистрация
    12.05.2015
    Сообщений
    398
    Promo (¢)
    3,330
    Благодарности
    Получено: 56
    Отправлено: 99
    wayfarer, Может я задал так вопрос, в общем изложу по другому, чтобы таких весельчаков больше не было, есть советник, в котором обработчиком событий служит не ontick(), а timer(), потому что советник ведёт торговлю на множестве инструментов, дак вот чтобы он бездумно не перебирал все инструменты, пытаясь открыть на каждом сделку, нужно чтобы он определил, возможна ли в текущий момент по тому инструменту торговля или нет, закрыт ли рынок в текущий момент или нет, праздничный ли день в Великобритании, в следствие чего все рынки с фунтом закрываются раньше, а фьючерсы? Которые по своему графику открывают закрывают торги, некоторые акции, даже русский рубль не круглые сутки торгуется, а брокеры у которых время котирования на час раньше начинается от торгового времени? Существует мне известных 3 метода, которые я указал выше, для советника, чтобы он программно определил можно ли открыть сделку или нет, я выше написал, может есть какой то хитрый метод, в этом мой вопрос, как советником с таймером наиболее рационально определять можно ли на текущий момент открыть и закрыть сделку по инструменту или нет, когда список инструментов очень обширен, и можно ли заранее определить когда закроется рынок (Т.е. это делается функцией istradeallowed, но как я отметил не все брокеры ведут таблицу праздничных дней, функция поэтому может вернуть true, хотя торговля запрещена) теперь вы поняли суть? Никакой хелп и никакой modetrade к делу не относятся и Шон тоже .

    Вы не можете благодарить!
    Последний раз редактировалось 4e$; 05.02.2016 в 08:32.

  4. #4
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,430
    Promo (¢)
    32,735
    Благодарности
    Получено: 481
    Отправлено: 50
    Цитата Сообщение от 4e$ Посмотреть сообщение
    Никакой хелп и никакой modetrade к делу не относятся и Шон тоже
    Ну, правильно, все хелпы пишутся для тех, кто не умеет читать, а запрет на торговлю, для тех, кто торговать не умеет.

    Посему, если в сове нет обработки результата исполнения ордера анализом GetLastError() - ERR_MARET_CLOSED, то такая заморочка в "3 метода" и будет. Даже и не знаю, как вам помочь?.. если вы умеете читать - все бесполезно.
    Существует функция возвращающая флаг открыт рынок или нет, но это для тех, кто не умеет читать.
    Для функции SymbolInfoString(): ENUM_SYMBOL_INFO_STRING
    Существует несколько режимов торговли по финансовым инструментам. Информация о режимах торговли по конкретному инструменту отображена в значениях перечисления ENUM_SYMBOL_TRADE_MODE.
    ENUM_SYMBOL_TRADE_MODE
    Идентификатор:
    SYMBOL_TRADE_MODE_DISABLED Торговля по символу запрещена
    SYMBOL_TRADE_MODE_LONGONLY -Разрешены только покупки
    SYMBOL_TRADE_MODE_SHORTONLY*-Разрешены только продажи
    SYMBOL_TRADE_MODE_CLOSEONLY*- Разрешены только операции закрытия позиций
    SYMBOL_TRADE_MODE_FULL- Нет ограничений на торговые операции
    Да, а календаря выходных/праздников в терминале нет,.. я не видел.

    З.Ы. - Увы, все объявления пишутся для слепых,- говорил мой начальник.

    Вы не можете благодарить!

  5. #5
    Теоретик Аватар для 4e$
    Регистрация
    12.05.2015
    Сообщений
    398
    Promo (¢)
    3,330
    Благодарности
    Получено: 56
    Отправлено: 99
    wayfarer, вы издеваетесь явно, я уже отписался вы не то советуете, эта функция характеризуют инструмент в глобальном плане, она всегда возвращает один и тот же флаг независимо от дня недели, на нее влияют абсолютно другие вещи, для типичных валютных пар всегда будет возвращать флаг нет ограничений на торговлю, в любой день, хоть в выходной, хоть в праздничный.
    Есть в советнике обработка ошибки marketclosed, куда без нее, вы видимо не понимаете сути обработки по таймеру, представьте советник скальпер получает сигнал на открытие сделки по нескольким инструментам одновременно, в тот самый момент когда по нескольким из них завершилась торговая сессия (все торговля запрещена), он будет отправлять на один инструмент, получать отказ, на второй, третий и тд, теряется время и теряется драгоценный момент на вход, согласитесь лучше заранее знать закрылся ли рынок на тех инструментах, чтобы опустить эти инструменты и затрачивать времени в разы меньше.
    Никто не видел календаря в терминале, потому что его там нет, я вам про другое, я писал уже про функцию которая может заранее определять возможна ли торговля в какое то конкретное время и дату, таким образом вычислять когда праздничные и выходные дни, если брокер ведёт специальную таблицу на серверной части метатрейдера, в чем я сомневаюсь, робовцы наврятли такими мелочами заморачиваются.
    В общем спасибо за ваши советы, больше не нужно, я уже 6 лет пишу советников, всегда делал обработку по тикам, по таймерам ниразу, потому что не было необходимости и потому что я давно знал про эту трудность и знал что нормального решения нет, сейчас возникла эта необходимость, но судя по всему по инфе в интернете, проблема так и осталась и люди в разной степени как то ещё решают, вот поэтому я и спрашиваю, ещё раз про уникальный подход, может кто то придумал что нить оригинальное.

    Вы не можете благодарить!

  6. #6
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,430
    Promo (¢)
    32,735
    Благодарности
    Получено: 481
    Отправлено: 50
    Цитата Сообщение от 4e$ Посмотреть сообщение
    эта функция характеризуют рынок в глобальном плане, она всегда возвращает один и тот же флаг независимо от дня недели, на нее влияют абсолютно другие вещи, для типичных валютных пар всегда будет возвращать флаг разрешена торговля, в любой день, хоть в выходной, хоть в праздничный
    Такого не может быть!
    Потому что, заявлено: "Информация о режимах торговли по конкретному инструменту ", а не в "глобальном плане". Если рынок закрыт, то он закрыт - пропускаем пару, идем к следующей. Если эта "фиговина" не работает, как надо, вам к метаквотам с такой проблемой. Я, к сожалению, не проверял эту кухню на OnTimer() и потом не могу сказать все ли там гладко.

    - - - Добавлено - - -

    Цитата Сообщение от 4e$ Посмотреть сообщение
    функцию которая может заранее определять возможна ли торговля в какое то конкретное время и дату, таким образом вычислять когда праздничные и выходные дни
    Как вы это себе, хотя бы, теоретически представляете со стороны клиента увидеть?
    Сервер брокера рулится не нами и что там они делают и как выстраивают расписание нам не известно. Мы только видим есть рынок или нет. А будущее вам никто не даст заглянуть - это привилегия весьма дорогая и не всем по караману. А сервер может остановится и без праздников.

    Вы не можете благодарить!

  7. #7
    Теоретик Аватар для 4e$
    Регистрация
    12.05.2015
    Сообщений
    398
    Promo (¢)
    3,330
    Благодарности
    Получено: 56
    Отправлено: 99
    wayfarer, я проверял, нет вы не так интерпретируете, как бы эта функция характеризует конкретно вам как клиенту есть ли глобальная возможность открыть позицию, только открыть, закрыть и тд, допустим у некоторых брокеров если депозит будет равен 0, вам будет запрещена торговля по инструментам, везде этот флаг будет висеть, или допустим если у вас есть фьючерс у которого срок контракта истекает у вас будет только возможность закрыть его и на инструменте повиснет флаг только закрытие. Выходные и тому подобное не влияют, т.е. технически это выглядит так, вам разрешено в выходные торговать, просто рынок закрыт. Т.е. не знаю как объяснить ещё, у меня проблемы с объяснениями .

    - - - Добавлено - - -

    wayfarer, вот с помощью функции bool market = istradeallowed(symbol(), time), где в тайм указывается дата и время, можно якобы узнать в будущем или прошлом будет была ли возможность торговать, был ли праздник или нет, это я вычитал с mql форуме, где написали что технически можно узнать, если брокер ведёт такие таблицы праздничных дней, в принципе если это время и дата выпадает на выходной день он и так должен работать со всеми инструментами, потому что в спецификации инструментов указанные время торговли и время выходных, так что если бить прямо в выходные market должна вернуть false.
    А вот остановка сервера с таким советником будет ой как неприятно , ему никак не объяснить что как бы тоже надо притормозить.

    Вы не можете благодарить!
    Последний раз редактировалось 4e$; 05.02.2016 в 10:05.

  8. #8
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,430
    Promo (¢)
    32,735
    Благодарности
    Получено: 481
    Отправлено: 50
    Цитата Сообщение от 4e$ Посмотреть сообщение
    Т.е. не знаю как объяснить ещё, у меня проблемы с объяснениями
    Это нормально, т.е. типично для всех, в т.ч. и для меня.
    Цитата Сообщение от 4e$ Посмотреть сообщение
    закрыть и тд, допустим у некоторых брокеров если депозит будет равен 0, вам будет запрещена торговля по инструментам
    Это вписывается в задачу - получить состояние о возможности торговли по инструменту в здесь и сейчас.

    Цитата Сообщение от 4e$ Посмотреть сообщение
    с помощью функции bool market = istradeallowed(symbol(), time), где в тайм указывается дата и время, можно якобы узнать в будущем или прошлом будет была ли возможность торговать, был ли праздник или нет, это я вычитал с mql форуме
    Эта "фиговина", в действительности, показывает включена ли авто торговля советниками и все. Если кнопку отжать авто торговли то будет всегда false. Ниже скрипт, который все показывает по этому поводу.
    А так же SymbolInfoInteger...Так, я там(выше) вас ввел в заблуждение, не умышленно, про SymbolInfoString(), а должно быть SymbolInfoInteger().
    PHP код:
    //+------------------------------------------------------------------+
    //|                                               isReadyToTrade.mq4 |
    //|                                                         wayfarer |
    //|                                                                  |
    //+------------------------------------------------------------------+
    #property copyright "wayfarer"
    #property link      ""
    #property version   "1.00"
    #property strict
    #property script_show_inputs
    //--- input parameters
    input datetime Input1=__DATETIME__;
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
         
    long var=0;
         
    string txt="";
         
    Alert(TimeToString(Input1,TIME_DATE ), " Флаг разрешения Авто торговли =",IsTradeAllowed(NULL,Input1));
         if (
    SymbolInfoInteger(NULL,SYMBOL_TRADE_MODE, var))
         {
            switch (var)
            {
               case 
    SYMBOL_TRADE_MODE_DISABLED  txt" Торговля по символу запрещена"; break;
               case 
    SYMBOL_TRADE_MODE_LONGONLY  txt" Разрешены только покупки"; break;
               case 
    SYMBOL_TRADE_MODE_SHORTONLY txt" Разрешены только продажи"; break;
               case 
    SYMBOL_TRADE_MODE_CLOSEONLY txt" Разрешены только операции закрытия позиций"; break;
               case 
    SYMBOL_TRADE_MODE_FULL      txt" Нет ограничений на торговые операции"; break;
            }
            
    Alert(Symbol(), txt);
         }
      } 

    Вы не можете благодарить!

  9. #9
    Теоретик Аватар для 4e$
    Регистрация
    12.05.2015
    Сообщений
    398
    Promo (¢)
    3,330
    Благодарности
    Получено: 56
    Отправлено: 99
    wayfarer, доберусь до компьютера проверю, просто не могу в это поверить . Прочтите описание функции, возвращает true если торговля своетниками разрешена и поток для выполнения торговых операций свободен, иначе false.

    Наконец то добрался до компа , вот о чем я говорил, ваша функция, я точнее сейчас скажу, передает информацию из спецификации инструмента, находящуюся в окне обзор рынка, торговые сессии, выходные, влияние абсолютно никакого не оказывают, т.е. к делу она вообще не относится, я подумал, что может с каким нибудь обновлением в неё добавили такой функционал, зачем вы так упорно старались меня ввести в заблуждение? В общем не суть, как видите функция про которую я говорил показывает и в настоящий момент и в прошлом и даже в будущем:
    Тест 1.jpg

    Вот код программы:
    Тест 2.jpg
    Извиняюсь за качество, никак не могу освоиться с этой загрузкой, все время ошибку выдает .

    В общем вопрос все также в силе, как лучше сделать?

    Вы не можете благодарить!
    Последний раз редактировалось 4e$; 06.02.2016 в 06:25.

  10. #10
    Теоретик
    Регистрация
    03.04.2013
    Сообщений
    475
    Promo (¢)
    690
    Благодарности
    Получено: 148
    Отправлено: 79
    4e$, А что не так? В текущий момент котировок нет, поэтому торговать нельзя, в прошлом и настоящем они есть, поэтому можно...(про IsTradeAllowed)

    - - - Добавлено - - -

    Цитата Сообщение от wayfarer Посмотреть сообщение
    Эта "фиговина", в действительности, показывает включена ли авто торговля советниками и все. Если кнопку отжать авто торговли то будет всегда false.
    Не так, за это отвечает функция IsExpertEnabled

    Вы не можете благодарить!

Страница 1 из 2 1 2 ПоследняяПоследняя

Похожие темы

  1. Ответов: 4
    Последнее сообщение: 22.07.2018, 21:47
  2. Как нельзя делать на форексе!
    от Snaiper27 в разделе Разговоры о трейдинге
    Ответов: 31
    Последнее сообщение: 22.02.2017, 17:04
  3. Как узнать о выходе важных новостей
    от koctik в разделе Любые вопросы от новичков
    Ответов: 3
    Последнее сообщение: 26.02.2015, 11:21
  4. Как узнать курсы валют ?
    от jackgold в разделе Архив. Разговоры
    Ответов: 5
    Последнее сообщение: 09.02.2014, 22:17
  5. Как узнать, что тренд будет затяжной
    от Vadim1 в разделе Любые вопросы от новичков
    Ответов: 2
    Последнее сообщение: 08.12.2013, 09:51

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •