Закрытие рыночной позиции

 

Просматриваю класс CTrade, чтобы видеть как правильно закрывать позиции. Вижу код:

if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
     {
      //--- prepare request for close BUY position
      m_request.type =ORDER_TYPE_SELL;
      m_request.price=SymbolInfoDouble(symbol,SYMBOL_BID);
     }
   else
     {
      //--- prepare request for close SELL position
      m_request.type =ORDER_TYPE_BUY;
      m_request.price=SymbolInfoDouble(symbol,SYMBOL_ASK);
     }

Получается, что если нужно закрыть позицию BUY, нужно отправить ордер на открытие позиции SELL, верно?

Но если в рынке несколько позиций на разных уровнях, как закроется именно нужная позиция? После 4-ки странно такое видеть..

 
Viktar Dzemikhau:

Просматриваю класс CTrade, чтобы видеть как правильно закрывать позиции. Вижу код:

Получается, что если нужно закрыть позицию BUY, нужно отправить ордер на открытие позиции SELL, верно?

Но если в рынке несколько позиций на разных уровнях, как закроется именно нужная позиция? После 4-ки странно такое видеть..

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

Также при биржевом учете (неттинге) все позиции  по разным ценам сонаправленные сводятся к совокупной - по средней цене открытия. Если вы закрываете селлом например 1 контракт бай позу в 5 контрактов, то при неттинге у вас останется в рынке бай поза в 4 контракта.


Вот при хедже - все тоже самое как и в МТ4 (картинка слева)... :-)


отсюда: https://www.mql5.com/ru/code/40376

cm CloseProfit
cm CloseProfit
  • www.mql5.com
Советник закрывает все открытые позиции при достижении заданного размера профита или убытка в валюте депозита.
 
Roman Shiredchenko #:

Вот при хедже - все тоже самое как и в МТ4 (картинка слева)... :-)

У вас же на скрине тоже самое. Если Buy, то отправить Sell. Значит так же, как и для неттинговых счетов позиция закрывается?

 
Viktar Dzemikhau #:

У вас же на скрине тоже самое. Если Buy, то отправить Sell. Значит так же, как и для неттинговых счетов позиция закрывается?


Но там перебор  поз идет. Это хедже. Для неттинга тоже подойдет. Там перебор не обязательно делать. Она там одна. Надо делать ее выбор по сути и все. А так - да. Вроде - да.

Там при хедже вы можете выбрать перебором нужную позицию и именно ее закрыть встречной.
 
Viktar Dzemikhau:

Просматриваю класс CTrade, чтобы видеть как правильно закрывать позиции. Вижу код:

Получается, что если нужно закрыть позицию BUY, нужно отправить ордер на открытие позиции SELL, верно?

Но если в рынке несколько позиций на разных уровнях, как закроется именно нужная позиция? После 4-ки странно такое видеть..

Как можно просматривать и не видеть строки 101 и 102

   bool              PositionClose(const string symbol,const ulong deviation=ULONG_MAX);
   bool              PositionClose(const ulong ticket,const ulong deviation=ULONG_MAX);

Строка 101 для неттинга или для стратегии где может быть только одна позиция

И строка 102 для хедж счетов где могут быть несколько позиций одного направления.

 
Alexey Viktorov #:

Как можно просматривать и не видеть строки 101 и 102

Строка 101 для неттинга или для стратегии где может быть только одна позиция

И строка 102 для хедж счетов где могут быть несколько позиций одного направления.

Как можно читать то, что я спросил и думать о другом? Я же чётко задал вопрос. Обратите внимание. В обоих случая, позиция закрывается на противоположную. В этом у меня вопрос и заключался..

Я об этом:

if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
     {
      //--- prepare request for close BUY position
      m_request.type =ORDER_TYPE_SELL;
      m_request.price=SymbolInfoDouble(symbol,SYMBOL_BID);
     }
   else
     {
      //--- prepare request for close SELL position
      m_request.type =ORDER_TYPE_BUY;
      m_request.price=SymbolInfoDouble(symbol,SYMBOL_ASK);
     }

Хотя, по логике для неттинга это верно, а иначе можно было как 4-ке крыть. К чему так - вопрос..

 
Viktar Dzemikhau #:

Как можно читать то, что я спросил и думать о другом? Я же чётко задал вопрос. Обратите внимание. В обоих случая, позиция закрывается на противоположную. В этом у меня вопрос и заключался..

Я об этом:

Хотя, по логике для неттинга это верно, а иначе можно было как 4-ке крыть. К чему так - вопрос..


Все верно. На бирже так. Если интересно почитайте статьи Василия Соколова - например - Примеры ценооьразования на мск бирже и еще 2 или 3 в цикле на эту тему он там хорошо все расписывает с примерами в коде робота на МА.

Биржевого МТ 4 терминала нет.

https://www.mql5.com/ru/articles/1284

https://www.mql5.com/ru/articles/1683


Основы биржевого ценообразования на примере срочной секции Московской биржи
Основы биржевого ценообразования на примере срочной секции Московской биржи
  • www.mql5.com
Статья описывает теорию биржевого ценообразования и специфику клиринговых расчетов срочной секции Московской биржи. Материал будет интересен как начинающим трейдерам, желающим получить свой первый биржевой опыт по торговле деривативами, так и опытным форекс-трейдерам, рассматривающих возможность переноса своей торговли на централизованную биржевую площадку.
 
Позиция это помидоры. 0,4 кило куплены по 3 рубля, и 0,6 кило таких же помидоров по 30 рублей. По чем куплено это расходы. Но помидорам все равно, по чем они куплены, когда вы их продаете. У Вас 1 кг помидор. Помидоры можно заменить на акции, золото, валюту.))) Привыкайте, эти понятия ближе к рынку. Цена покупки к стоимости позиции / актива отношения не имеет, она влияет лишь на прибыльность в случае продажи актива/позиции.)))
 
Viktar Dzemikhau:

Просматриваю класс CTrade, чтобы видеть как правильно закрывать позиции. Вижу код:

Получается, что если нужно закрыть позицию BUY, нужно отправить ордер на открытие позиции SELL, верно?

Но если в рынке несколько позиций на разных уровнях, как закроется именно нужная позиция? После 4-ки странно такое видеть..

Нет понятия рыночная позиция. В 4ке рыночный ордер это позиция. В 5ке ордера приказы на открытие позиций или ордера на открытие позиций по условиям, это отложенные ордера. И после исполнения приказов на открытие позиций сделками исполняются приказы / ордера, фиксируются сделки и появляются позиции)))