Скачать MetaTrader 5

Одновременное выставление противоположных лимитных ордеров.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Ищи и скачивай программы из Code Base через MetaTrader. Это быстро!
Vladimir Karputov
Модератор
45972
Vladimir Karputov 2016.02.15 21:24 

Хочу завтра проверить такую теорию.

Если одновременно выставлять BuyLimit и SellLimit максимально близко друг от друга, то

  1. насколько часто будет открываться позиция и сразу закрываться противоположным лимитным ордером?
  2. ...

Проверять хочу по фьючерсу RTS-3.16.

Вот код советника:

//+------------------------------------------------------------------+
//|                                                  Synchronous.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property description "Expert synchronously plases the pending orders BuyLimit and SellLimit"
#include <Trade\Trade.mqh>
//---
CTrade   MyTrade;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   MyTrade.SetTypeFilling(ORDER_FILLING_RETURN);
   MyTrade.SetAsyncMode(true);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(OrdersTotal()==0)
     {
      double bid_price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
      double ask_price=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
      double tick_size=SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE);
      Comment(DoubleToString(ask_price-bid_price,Digits())," ",2*tick_size);
      if((ask_price-bid_price)<2*tick_size)
        {
         MyTrade.BuyLimit(1.0,bid_price,NULL,0.0,0.0,0,0,NULL);
         MyTrade.SellLimit(1.0,ask_price,NULL,0.0,0.0,0,0,NULL);
        }
     }
  }
//+------------------------------------------------------------------+
//| Trade function                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//---

  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//---

  }
//+------------------------------------------------------------------+

 

Принцип работы: когда разница между ценой ask и bid будет равна одному минимальному изменению цены (SYMBOL_TRADE_TICK_SIZE) - выставляем два лимитных ордера. Торговля с применением асинхронного режима.

Файлы:
Maxim Kuznetsov
9801
Maxim Kuznetsov 2016.02.15 21:35  
из серии "подари дилеру второй спред" :-)
Vladimir Karputov
Модератор
45972
Vladimir Karputov 2016.02.15 21:51  
Maxim Kuznetsov:
из серии "подари дилеру второй спред" :-)
Ругательство "дилер" - это не в этом разделе. Здесь биржевой раздел и есть только Брокер. А вместо "спреда" - здесь есть комиссия.
Maxim Kuznetsov
9801
Maxim Kuznetsov 2016.02.15 22:18  
Karputov Vladimir:
Ругательство "дилер" - это не в этом разделе. Здесь биржевой раздел и есть только Брокер. А вместо "спреда" - здесь есть комиссия.

а вместо "лох" будем использовать "бедняжка-разведёнка" ?? :-)

Sergey Chalyshev
4513
Sergey Chalyshev 2016.02.15 23:24  
Karputov Vladimir:

Хочу завтра проверить такую теорию.

Если одновременно выставлять BuyLimit и SellLimit максимально близко друг от друга, то

  1. насколько часто будет открываться позиция и сразу закрываться противоположным лимитным ордером?
  2. ...
Проверять хочу по фьючерсу RTS-3.16.

1. на флете часто будет, на тренде редко 

2. ... 

Комбинатор
15924
Комбинатор 2016.02.17 16:35  
Sergey Chalyshev:

Да не будет часто, тут надо хотя бы постоянная модификация чтоб ордера на краю стакана висели.

Тем более что они выставляются не на край, а на крайнюю цену, это значит перед ними на исполнение уже по любому будут заявки. А разница нужна не два тика, а две комиссии.

Это я не говорю про то что таких халявщиком там хватает, только с нормальными алгоритмами.

Хотя ладно, старинная русская забава под названием набивание шишек имеет свои плюсы

Vladimir Karputov
Модератор
45972
Vladimir Karputov 2016.02.17 16:47  
Комбинатор:

Да не будет часто, тут надо хотя бы постоянная модификация чтоб ордера на краю стакана висели.

Тем более что они выставляются не на край, а на крайнюю цену, это значит перед ними на исполнение уже по любому будут заявки. А разница нужна не два тика, а две комиссии.

Это я не говорю про то что таких халявщиком там хватает, только с нормальными алгоритмами.

Хотя ладно, старинная русская забава под названием набивание шишек имеет свои плюсы

На RTS-3.16 шаг цены 10 рублей. Код приведённый выше размещает лимитники по краям стакана, когда стакан "схлопывается". Конечно всегда кто-то успевает протолкнуть свой ордер на край вперёд, поэтому мои лимитники становятся в очередь. 

А так проверил - срабатывают такие ордера (открытие позиции и сразу закрытие) довольно часто. 

Alexey Kozitsyn
6421
Alexey Kozitsyn 2016.02.17 17:51  
Karputov Vladimir:

На RTS-3.16 шаг цены 10 рублей. Код приведённый выше размещает лимитники по краям стакана, когда стакан "схлопывается". Конечно всегда кто-то успевает протолкнуть свой ордер на край вперёд, поэтому мои лимитники становятся в очередь. 

А так проверил - срабатывают такие ордера (открытие позиции и сразу закрытие) довольно часто. 

На демо проверяете?
Vladimir Karputov
Модератор
45972
Vladimir Karputov 2016.02.17 18:54  
Alexey Kozitsyn:
На демо проверяете?
Да.
Alexey Kozitsyn
6421
Alexey Kozitsyn 2016.02.17 18:56  
Karputov Vladimir:
Да.
С реалом мало общего.
Vladimir Karputov
Модератор
45972
Vladimir Karputov 2016.02.24 14:07  

При торговле на бирже ни в коем случае нельзя использовать стоп-ордера. Вот только что, на демо счёте была такая свечка (и на демо, кстати, в это время всегда есть свечка):

Свечка. 

 

Буду переделывать своего советника. 

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий