Секреты MQL4: Скрипт, экономящий ваши средства
Показано с 1 по 10 из 10

Тема: Секреты MQL4: Скрипт, экономящий ваши средства

  1. #1
    Новичок Аватар для SilverKZ
    Регистрация
    19.11.2012
    Сообщений
    204
    Promo (¢)
    3,898
    Благодарности
    Получено: 138
    Отправлено: 13

    Cool Секреты MQL4: Скрипт, экономящий ваши средства

    Некоторым программистам MQL известен данный способ экономии средств. Сейчас и вы узнаете этот секрет, который позволит при закрытии встречных ордеров экономить один спред !!!!

    Весь секрет заключается в использовании малоизвестной для широкого круга лиц функции OrderCloseBy()

    Вот ее описание:
    [QUOTE][B]bool OrderCloseBy (int ticket, int opposite, color Color=CLR_NONE)[/B]
    Закрытие одной открытой позиции другой позицией, открытой по тому же самому инструменту, но в противоположном направлении. Возвращает TRUE при успешном завершении функции. Возвращает FALSE при неудачном завершении функции. Параметры:
    [B]ticket[/B] - Уникальный порядковый номер закрываемого ордера.
    [B]opposite[/B] - Уникальный порядковый номер противоположного ордера.
    [B]Color[/B] - Цвет стрелки закрытия на графике. Если параметр отсутствует или его значение равно CLR_NONE, то стрелка на графике не отображается.
    [/QUOTE]

    Простыми словами, при встречном одновременном закрытии рыночных ордеров типа OP_BUY и OP_SELL по одному и тому же финансовому инструменту, функция OrderCloseBy() позволяет один ордер закрыть за счёт другого. При исполнении такой торговой операции экономится один спред.

    Реальный пример:
    1) Закрытие ордеров осуществляется обычным способом
    [IMG]http://s019.radikal.ru/i603/1212/00/f3a2991ca907.png[/IMG]

    2) Закрытие ордеров осуществляется с помощью функции OrderCloseBy()
    [IMG]http://i023.radikal.ru/1212/74/f155f353db56.png[/IMG]

    Обратите внимание на величину прибыли после закрытия позиций в первом и во втором случае, почувствовали разницу. Экономическая выгода при использовании OrderCloseBy() равна стоимости спреда одного из ордеров.

    Для использования данной возможности MetaTrader4 был написан следующий скрипт.
    [SPOILER][PHP]//+------------------------------------------------------------------+
    //| OrderCloseBy.mq4 |
    //| Copyright © 2012, Mr.SilverKZ |
    //| silverkz@mail.kz |
    //+------------------------------------------------------------------+
    #property copyright "Copyright © 2012, Mr.SilverKZ"
    #property link "silverkz@mail.kz"
    //+-------------------------------------------------------------------
    int start()
    {
    while(true)
    {
    double Lot_Buy = -1.0;
    double Lot_Sell = -1.0;
    for (int i=1; i<=OrdersTotal(); i++)
    {
    if (OrderSelect(i-1,SELECT_BY_POS))
    {
    if (OrderSymbol()!= Symbol()) continue;
    int Type = OrderType();
    if (Type>1) continue;
    if (Type==OP_BUY && OrderLots()>Lot_Buy)
    {
    Lot_Buy=OrderLots();
    int OrderTicket_Buy=OrderTicket();
    }
    if (Type==OP_SELL && OrderLots()>Lot_Sell)
    {
    Lot_Sell=OrderLots();
    int OrderTicket_Sell=OrderTicket();
    }
    }
    }
    if (Lot_Buy<0 || Lot_Sell<0) return;
    while (true)
    {
    if (OrderCloseBy(OrderTicket_Buy,OrderTicket_Sell)) break;
    int Error=GetLastError();
    switch(Error)
    {
    case 4: Print("Торговый сервер занят. Ещё одна попытка...",Error);
    Sleep(3000);
    continue;
    case 137: Print("Брокер занят. Ещё одна попытка...",Error);
    Sleep(3000);
    continue;
    case 146: Print("Подсистема торговли занята. Ещё одна попытка...",Error);
    Sleep(500);
    continue;
    default: Print("Возникла критическая ошибка ",Error);
    }
    return;
    }
    }
    }
    //--- End [/PHP][/SPOILER]
    Данный скрипт удобно использовать при ручной торговле, в т.ч. когда имеется множество разнонаправленных рыночных ордеров. Скрипт закрывает все встречные ордера не зависимо от размера лота. После встречного закрытия ордеров различного объема остается ордер на разницу закрытых ордеров. Например, имеется 2 бай и 4 селл, после использования скрипта остается 2 селл.
    Хочу заметить, что применением функции только в ручной торговле не стоит ограничиваться. OrderCloseBy() можно широко использовать в автоматической торговле, например, в советниках, использующих локи, сетки и т.п.

    Удачных торгов, господа трейдеры!!!!
    Экономь спред, один возьми себе – один отдай Roboforex!!!


    Если вам была полезна эта информация, не забудьте отблагодарить ======================================== >
    Вложения Вложения

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

  2. #2
    Инсайдер Аватар для dimmi2012
    Регистрация
    16.09.2012
    Сообщений
    7,001
    Promo (¢)
    300
    Благодарности
    Получено: 283
    Отправлено: 65
    Не знаю как в Робо а у брокера на букву А эта функция просто перестала работать с выходом нового билда еще год назад и пришлось заниматься перекодированием всех советников (( и с тех пор дарить спред , так как снова получать копытом в лоб из за того что вдруг с утра клозебай не пашет неохото.

    Вы не можете благодарить!
    Последний раз редактировалось dimmi2012; 23.07.2013 в 16:40.

  3. #3
    Новичок Аватар для compmaster
    Регистрация
    07.12.2013
    Адрес
    Херсон
    Сообщений
    207
    Promo (¢)
    20
    Благодарности
    Получено: 13
    Отправлено: 2
    Это трюк из разряда SELL+BUY одинакового объема? Как вот, если встречные ордера на общей валютной паре с одинаковым объемом, не увеличивают залог по сделке? Например, BUY USD/CAD 18.00 будет кушать залог в размере 3600 единиц баланса, если же, к этой открытой позиции добавить SELL USD/CAD 18.00, то залог так и останется 3600 единиц баланса. Или ошибаюсь?

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

  4. #4
    Новичок Аватар для JetRDS
    Регистрация
    01.10.2012
    Адрес
    Бирск
    Сообщений
    236
    Promo (¢)
    75
    Благодарности
    Получено: 12
    Отправлено: 7
    Цитата Сообщение от dimmi2012 Посмотреть сообщение
    Не знаю как в Робо а у брокера на букву А эта функция просто перестала работать с выходом нового билда еще год назад и пришлось заниматься перекодированием всех советников (( и с тех пор дарить спред , так как снова получать копытом в лоб из за того что вдруг с утра клозебай не пашет неохото.
    Жаль что с обновлениями теперь придется ждать и обновления скрипта - чтобы все работало хорошо - скрипт действительно полезен в плане переворачивания позиций без потери спреда - так и не удалось его использовать - надеюсь в скором будущем автор обновит скрипт и выложит рабочую версию - хотелось бы попробовать его в действии, насчет скриптов - то после обновы терминала у меня некоторые скрипты тоже перестали работать..

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

  5. #5
    Новичок Аватар для compmaster
    Регистрация
    07.12.2013
    Адрес
    Херсон
    Сообщений
    207
    Promo (¢)
    20
    Благодарности
    Получено: 13
    Отправлено: 2
    Цитата Сообщение от JetRDS Посмотреть сообщение
    Жаль что с обновлениями теперь придется ждать и обновления скрипта - чтобы все работало хорошо - скрипт действительно полезен в плане переворачивания позиций без потери спреда - так и не удалось его использовать - надеюсь в скором будущем автор обновит скрипт и выложит рабочую версию - хотелось бы попробовать его в действии, насчет скриптов - то после обновы терминала у меня некоторые скрипты тоже перестали работать..
    И не только скрипты, я заметил, что многие индикаторы так же прекратили свою работу или стали работать с ошибками. Проходила оптимизация внутреннего кода терминала, но насколько она окажется полезной для конечных пользователей - покажет время.

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

  6. #6
    Теоретик Аватар для Adver117
    Регистрация
    13.02.2012
    Адрес
    Риддер, Казахстан
    Сообщений
    697
    Promo (¢)
    0
    Благодарности
    Получено: 212
    Отправлено: 70
    Подправил указанный скрипт для работы под новый билд.

    Работоспособность проверил.



    CloseBy.mq4

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

  7. #7
    Banned
    Регистрация
    18.06.2014
    Сообщений
    29
    Promo (¢)
    0
    Благодарности
    Получено: 1
    Отправлено: 3
    Всем привет! Есть нужда в доработке сова Urdala_trol. Суть в том, что нужно дописать возможность трейлинг стопа в обратную сторону. Если у кого есть такой сов Urdala_trol_v5, прошу помочь в доработке сова или найти похожую но платную версию Urdala_trol_max. Если есть кто-то кто разбирается в програмировании совов прошу дать консультацию...

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

  8. #8
    Теоретик Аватар для Sergeymoney
    Регистрация
    13.05.2013
    Адрес
    Украина
    Сообщений
    419
    Promo (¢)
    5
    Благодарности
    Получено: 8
    Отправлено: 2
    Если этот скрипт возможно прикрепить к советнику, то как это правильно сделать, и как он будет работать с открытыми ордерами, по разным валютным парам?Как прикрепляют скрипты к советникам(только перехожу на роботов)?

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

  9. #9
    Теоретик Аватар для Adver117
    Регистрация
    13.02.2012
    Адрес
    Риддер, Казахстан
    Сообщений
    697
    Promo (¢)
    0
    Благодарности
    Получено: 212
    Отправлено: 70
    Цитата Сообщение от Sergeymoney Посмотреть сообщение
    Если этот скрипт возможно прикрепить к советнику, то как это правильно сделать, и как он будет работать с открытыми ордерами, по разным валютным парам?Как прикрепляют скрипты к советникам(только перехожу на роботов)?
    Оформи данный скрипт в виде функции в советнике и при наступлении нужных условий для закрытия вызывай эту функцию.
    Сделки на других парах данный скрипт не трогает, только по тому символу на котором исполняется.

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

  10. #10
    Уже не гость
    Регистрация
    16.11.2015
    Сообщений
    3
    Promo (¢)
    540
    Благодарности
    Получено: 0
    Отправлено: 2
    Здравствуйте, подскажите, работает ли этот скрипт на новых билдах, и если работает, то может ли он закрыть разнонаправленные ордера с фиксированным спредом? Заранее спасибо за ответ.

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

Метки этой темы

Ваши права

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