Выставление отложенных ордеров - страница 2

 
suharik:

Стоп, алгоритм работает как?

                                                   Начало 

                                                     Если                       проверяем количество позиций 

                                                 /            \ 

                                          Истина         Ложь             ИСТИНА (0=0)  

                                               |                 |   

                                            Если               |               проверяем количество ордеров

                                       /              \          |

                                 Истина         Ложь     |               

                                      |                 |        |

                                       \                |       /

                                                   конец 

 

и т.д. 

 

он должен входить внутрь условия и идти дальше, что не так. 

первые 2 условия он проходит и на количество сделок и на количество ордеров, все там правильно, кажется вы сами немного не разбираетесь, только еще больше меня запутали, если уж советуете, то что то по существу, а не с потолка. 

Если количество позиций равно нулю следовательно у вас нет ни одной открытой позиции и соответственно ни одного ордера. Что вы собираетесь анализировать? Внутрь условия вы должны попадать в случае если количество позиций больше нуля. То есть верхнее условие будет звучать так:

if (PositionsTotal()>0)
{
  //обработка ордеров
}
 
mmmoguschiy:
Если количество позиций равно нулю следовательно у вас нет ни одной открытой позиции и соответственно ни одного ордера. Что вы собираетесь анализировать? Внутрь условия вы должны попадать в случае если количество позиций больше нуля. То есть верхнее условие будет звучать так:

1 - Уважаемый, именно отсутствие открытых позиций я и проверяю, или как вы говорите анализирую.

2 - Внутрь условия я должен попадать как раз при отсутствии позиций, потому как если позиция открыта то мне от рынка ничего не надо.

3 - Вы крайне не внимательно знакомитесь с  условиями, и предлагаете ерунду.

Спасибо за попытку помочь, но я бы попросил вас не писать более в данной теме. Т.к. вы советуете ерунду полнейшую.

 
suharik:

1 - Уважаемый, именно отсутствие открытых позиций я и проверяю, или как вы говорите анализирую.

2 - Внутрь условия я должен попадать как раз при отсутствии позиций, потому как если позиция открыта то мне от рынка ничего не надо.

3 - Вы крайне не внимательно знакомитесь с  условиями, и предлагаете ерунду.

Спасибо за попытку помочь, но я бы попросил вас не писать более в данной теме. Т.к. вы советуете ерунду полнейшую.

Прежде чем что-то спрашивать нужно самому понимать что спрашиваешь. Каков вопрос таков и ответ. Ты спрашивал про направление ордера.

1. Для того чтобы определить его направление нужно чтобы он был открыт.
2. Для MT5 а насколько я понял пишешь ты именно на нем 2 разнонаправленные позиции взаимоуничтожаются и дают нулевую. Следовательно твой вопрос вообще не корректен!!!
3. Имей совесть быть вежливее с тем, кто тебе пытается помочь.
4. Если не в порядке нервы выпей лекарствие

Удачи
 
Хотел было уже сказать спасибо за совет про взаимоуничтожающиеся позиции, но увы и ах, речь то шла про ОРДЕРА, и как справедливо заметил :

DKeN 2015.04.02 11:34    RU 

позиция и ордер это разные вещи в мт5.

проверяй открытые ордера, а не позиции иначе будет тебе штамповать их. 

В общем опять все заметки и сноски мимо кассы, теперь понятно почему у вас такая плохая статистика по сигналам которые вы поставляете на маркет :) (сами то давно перестали понимать прочитанное?)

 Короче, непосредственно к делу, если кто вдруг не знал, то на МТ5, для тех кто торгует не на форексе, а на бирже фьючерсными контрактами, для демо счетов котировки и спреды показываются только между участниками торговли на этих самых демо счетах, а они очень далеки от реальности, и если вы вдруг пытались протестировать свою систему, то она могла вас обмануть по результатам. В данный момент я приобретаю МТ5 с сертификатами для получения доступа к рыночным котировкам, результаты тестирования на демо и на реале я выложу в конце недели.

И вот он код, для проверки и выставления ордеров на покупку и на продажу по 1 ордеру в каждую сторону. 

if (PositionsTotal()==0)                                                         // если нет открытых позиций проверяем ордера

    {

       if(SymbolInfoInteger(my_symbol,SYMBOL_SESSION_BUY_ORDERS)<1)              // проверяем количество ордеров на buy

        {

         if (iMAClose_buf[0] < linebuy)                                         // проверяем текущую цену, она должна быть ниже цены нашего ордера

         { 

           m_Trade.BuyStop(Lots,linebuy,my_symbol,linesell,tpbuy,0,0,"BUY");     // если мы тут buy ордера нет, выставляем его

         }

        }

       if(SymbolInfoInteger(my_symbol,SYMBOL_SESSION_SELL_ORDERS)<1)             // проверяем количество ордеров на sell

        {

         if (iMAClose_buf[0] > linesell)                                        // проверяем текущую цену, она должна быть выше цены нашего ордера

          {

           m_Trade.SellStop(Lots,linesell,my_symbol,linebuy,tpsell,0,0,"SELL");  // если мы тут sell ордера нет, выставляем его

          }

        }    

    }

 Еще раз спасибо DKeN за подсказку.

 
suharik:
Хотел было уже сказать спасибо за совет про взаимоуничтожающиеся позиции, но увы и ах, речь то шла про ОРДЕРА, и как справедливо заметил :

В общем опять все заметки и сноски мимо кассы, теперь понятно почему у вас такая плохая статистика по сигналам которые вы поставляете на маркет :) (сами то давно перестали понимать прочитанное?)

 Короче, непосредственно к делу, если кто вдруг не знал, то на МТ5, для тех кто торгует не на форексе, а на бирже фьючерсными контрактами, для демо счетов котировки и спреды показываются только между участниками торговли на этих самых демо счетах, а они очень далеки от реальности, и если вы вдруг пытались протестировать свою систему, то она могла вас обмануть по результатам. В данный момент я приобретаю МТ5 с сертификатами для получения доступа к рыночным котировкам, результаты тестирования на демо и на реале я выложу в конце недели.

И вот он код, для проверки и выставления ордеров на покупку и на продажу по 1 ордеру в каждую сторону. 

if (PositionsTotal()==0)                                                         // если нет открытых позиций проверяем ордера

    {

       if(SymbolInfoInteger(my_symbol,SYMBOL_SESSION_BUY_ORDERS)<1)              // проверяем количество ордеров на buy

        {

         if (iMAClose_buf[0] < linebuy)                                         // проверяем текущую цену, она должна быть ниже цены нашего ордера

         { 

           m_Trade.BuyStop(Lots,linebuy,my_symbol,linesell,tpbuy,0,0,"BUY");     // если мы тут buy ордера нет, выставляем его

         }

        }

       if(SymbolInfoInteger(my_symbol,SYMBOL_SESSION_SELL_ORDERS)<1)             // проверяем количество ордеров на sell

        {

         if (iMAClose_buf[0] > linesell)                                        // проверяем текущую цену, она должна быть выше цены нашего ордера

          {

           m_Trade.SellStop(Lots,linesell,my_symbol,linebuy,tpsell,0,0,"SELL");  // если мы тут sell ордера нет, выставляем его

          }

        }    

    }

 Еще раз спасибо DKeN за подсказку.

Что ж мне уже самому стало интересно как же на самом деле работают позиции и ордера в MT5? Дело в том что я и сам видимо не до конца понимаю данную концепцию. Вот как понимаю я:

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

1. Если ты открыл один лот(читай ордер) на покупку(+1), затем один лот на продажу(-1) в результате 1-1 дает 0 - получаем нулевую позицию.
2. Если ты открыл один лот на покупку(+1) затем еще один лот на покупку(+1) - имеем 1+1=2 - позиция из 2 лотов. Как в данном случае раскрываются ордера в этой позиции не экспериментировал - врать не буду, но подозреваю что будут отображатьяс оба ордера.
3. Если ты открыл один лот(ордер) на продажу(-1) а затем два на покупку в результате имеем 2-1=1 - позицию с одним лотом. Опять таки как будут отображаться ордера - точно сказать не могу.

Из всего вышеперечисленного с уверенностью можно сказать лишь одно - если у тебя нет ни одной позиции по инструменту, соответственно у тебя нет и ни одного ордера!!! Поправьте меня если я не прав. И да кстати взаимоуничтожаются не позиции, а ордера!!!
 

Да, вы немного ошибаетесь.

Т.к. ордер и позиция это разные вещи, а именно:

Ордер - это только заявка на открытие позиции, он может быть рыночным (по текущей цене) и отложенным (по указанной вами цене(Стоп и Лимит ордера)). Так вот Если у нас выставлен ордер по цене и он срабатывает, то открывается позиция. Следовательно мы проверяем открыта ли позиция, если её нету, то мы выставляем ордера по заданным параметрам (цена,tp,sl), если же позиция открыта, то мы ничего не делаем.

P.s.: Именно позиции перекрывают друг друга, и то не везде, иногда обе позиции имеют место быть (локирование). Если брать МТ5 фьючерсы то там одновременно 2 разнонаправленных позиций быть не может,  а ордера могут быть.

P.s.s.: И да это проверенно на практике, это касательно МТ5 и Quik торговля на бирже фьючерсами, что касается форекса МТ4, МТ5, то там может быть как то и по другому. 

 
suharik:

Да, вы немного ошибаетесь.

Т.к. ордер и позиция это разные вещи, а именно:

Ордер - это только заявка на открытие позиции, он может быть рыночным (по текущей цене) и отложенным (по указанной вами цене(Стоп и Лимит ордера)). Так вот Если у нас выставлен ордер по цене и он срабатывает, то открывается позиция. Следовательно мы проверяем открыта ли позиция, если её нету, то мы выставляем ордера по заданным параметрам (цена,tp,sl), если же позиция открыта, то мы ничего не делаем.

P.s.: Именно позиции перекрывают друг друга, и то не везде, иногда обе позиции имеют место быть (локирование). Если брать МТ5 фьючерсы то там одновременно 2 разнонаправленных позиций быть не может,  а ордера могут быть.

P.s.s.: И да это проверенно на практике, это касательно МТ5 и Quik торговля на бирже фьючерсами, что касается форекса МТ4, МТ5, то там может быть как то и по другому. 

Я все еще мыслю категориями MT4. Знал что такое позиция, знал что в MT5 она является результатом сложения исполненных ордеров, но не думал что все настолько запутают... Как говорится "без 100 грамм не разберешь"

В общем получается что функция OrdersTotal в контексте MT5 возвращает количество выставленных отложников? В MT4 она возвращала общее число как открытых так и отложенных.

И тем не менее так как позиция является суммой сделок и может быть только одна на одном инструменте ваше утверждение про "обе позиции имеют место быть(локирование)" в корне неверно!!!

И опять таки если мыслить MT4 то не вижу смысла анализировать открытые позиции - можно было просто проанализировать количество этих самых исполненных отложников, раз уж вы их анализируете. Ну тут вам виднее - постановка задачи ваша...
 
Не могу понять почему, но я не могу протестировать фьючерсы 6.15. В журнале выходят сообщения о выставленных ордерах, которые просто бесконечно повторяются, в то же время если взять предыдущий контракт, то на нем тестирование идет без проблем, кто сталкивался подскажите что сделать.
 
suharik:
Не могу понять почему, но я не могу протестировать фьючерсы 6.15. В журнале выходят сообщения о выставленных ордерах, которые просто бесконечно повторяются, в то же время если взять предыдущий контракт, то на нем тестирование идет без проблем, кто сталкивался подскажите что сделать.

Добрый день!

Вы путаете позицию с действующими отложенными ордерами!

Не PositionSelect() , а OrderSelect() нужно использовать. 

 
Mikalas:

Добрый день!

Вы путаете позицию с действующими отложенными ордерами!

Не PositionSelect() , а OrderSelect() нужно использовать. 

Простите но, код который я использую, выложен чуть выше, и я не использую не  PositionSelect() , не OrderSelect(), Просто нет необходимости в них.
Причина обращения: