По краткому куску кода уже много вопросов. Опубликуйте полный код, пожалуйста.
Почти полный код выше...
Необходимо из всех открытых позиций (пройдясь в цикле) найти
противоположные позиции по одному символу, запомнить их тикеты
(выбрав через OrderSelect), а потом уже использовать эти номера тикетов для CloseBy.
Так понятно, я не верно растолковал OrderCloseBy, я думал что т если есть 1 лот открытый на покупку, то функция
эта закрывает его и ставит такойже на продажу... Щас перечитал
документацию и понял, что мой замысел лажа)) оставляем код без
изменений тада)) Спасибо эа ответ)
Zuza писал (а):
Так понятно, я не верно растолковал OrderCloseBy, я думал что т если есть 1 лот открытый на покупку, то функция эта закрывает его и ставит такойже на продажу... Щас перечитал документацию и понял, что мой замысел лажа)) оставляем код без изменений тада)) Спасибо эа ответ)
Так зачем тогда вообще нужна OrderCloseBy ???
Так понятно, я не верно растолковал OrderCloseBy, я думал что т если есть 1 лот открытый на покупку, то функция эта закрывает его и ставит такойже на продажу... Щас перечитал документацию и понял, что мой замысел лажа)) оставляем код без изменений тада)) Спасибо эа ответ)
micral:
Можно схлопнуть две противоположные позиции с экономией одного
спреда. Если закрывать позиции по одиночке, то потратите 2 спреда.
Zuza:
Так понятно, я не верно растолковал OrderCloseBy, я думал что т если есть 1 лот открытый на покупку, то функция эта закрывает его и ставит такойже на продажу... Щас перечитал документацию и понял, что мой замысел лажа)) оставляем код без изменений тада)) Спасибо эа ответ)
Так зачем тогда вообще нужна OrderCloseBy ???Так понятно, я не верно растолковал OrderCloseBy, я думал что т если есть 1 лот открытый на покупку, то функция эта закрывает его и ставит такойже на продажу... Щас перечитал документацию и понял, что мой замысел лажа)) оставляем код без изменений тада)) Спасибо эа ответ)
В этом главное преимущество операции Close by.
OrderCloseBy(order_id,opposite_id); вот ваш код, но как и все наверное хотели знать
какие могут быть значения кроме "opposite_id". к примеру "0"????.
какие могут быть значения кроме "opposite_id". к примеру "0"????.
Merin095:
OrderCloseBy(order_id,opposite_id); вот ваш код, но как и все наверное хотели знать
какие могут быть значения кроме "opposite_id". к примеру "0"????.
Можно указать только два номера тикета с противоположными (BUY
и SELL) позициями.OrderCloseBy(order_id,opposite_id); вот ваш код, но как и все наверное хотели знать
какие могут быть значения кроме "opposite_id". к примеру "0"????.
Например, есть:
#10 BUY 1.5 EURUSD at 1.2356
#22 SELL 1.5 EURUSD at 1.2412
Если хотите эти позиции закрыть одной командой, то вызываете OrderCloseBy(10,22);
Честно бьюсь понять как сделать чтоб заработал OrderCloseBy "с ваших подсказок", но что-то там очень серьезно зашифровано,
извените но ученой степени нет.
неплохо было-бы посмотреть просто сделанного маленького советника, это было-бы наверно всем понетно, а то досих пор не могу вехать что-же это за order_id,opposite_id и с чем его едят.
Спасибо умнейшие модераторы.
неплохо было-бы посмотреть просто сделанного маленького советника, это было-бы наверно всем понетно, а то досих пор не могу вехать что-же это за order_id,opposite_id и с чем его едят.
Спасибо умнейшие модераторы.
Перевернуться? Это значит закрыть один ордер и открыть противоположный?
Никак. То есть надо просто закрыть один ордер и открыть противоположный.
А OrderCloseBy используется для одновременного закрытия 2х ордеров, при этом экономится один спред.
Нужно программно пройтись по терминалу, запомнить все номера ордеров и их характеристики, выбрать номер основного ордера, подобрать под него жалаемый (из имеющихся) встречный ордер и его-то номер и подставить.
Спасибо SKif смог растолковать.
OrderCloseBy он не переворачивает, он с одного ордера на другой перекидывает слив депозита(другими словами), а не закрывает его и в обратном напровлении открывает новый.
Оченьжаль была бы удобная функция.
Никак. То есть надо просто закрыть один ордер и открыть противоположный.
А OrderCloseBy используется для одновременного закрытия 2х ордеров, при этом экономится один спред.
Нужно программно пройтись по терминалу, запомнить все номера ордеров и их характеристики, выбрать номер основного ордера, подобрать под него жалаемый (из имеющихся) встречный ордер и его-то номер и подставить.
Спасибо SKif смог растолковать.
OrderCloseBy он не переворачивает, он с одного ордера на другой перекидывает слив депозита(другими словами), а не закрывает его и в обратном напровлении открывает новый.
Оченьжаль была бы удобная функция.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот кусок кода: Переварачивает позицию.
int start()
{
if(OrdersTotal()==1)
{
OrderSelect(NULL, SELECT_BY_POS, MODE_TRADES);
{
if(OrderType()==OP_SELL)
{
OrderClose(OrderTicket(), lots, Ask, 3,Green); // ** Эти две строки надо преобразовать в OrderCloseBy
OrderSend(Symbol(), OP_BUY, lots, Ask, 3,Stoploss, Takeprofit, "BUY", 16384, 0,Green);
}
else
{
OrderClose(OrderTicket(), lots, Bid, 3,Violet); // ** Эти две строки надо преобразовать в OrderCloseBy
OrderSend(Symbol(), OP_SELL, lots, Bid, 3, Stoploss, Takeprofit, "SELL", 16384, 0,Violet);
}
return(0);
}
return(0);
}
Соответственно все условия входа выхода и переменные убраны. ..
Системка работает одновременно только с одной открытой позициет, И 2 открытые не допустимы...
Хотелось бы все это сделать с OrderCloseBy. Но штука такая, что у меня в программе нет парамета OrderTicket(), тоесть ваще номера открытых позиций не обсчитывается а для OrderCloseBy формат такой:
OrderCloseBy( int ticket, int opposite, color Color=CLR_NONE),
Как сделать так ,чтобы он брал:
"int ticket" (Уникальный порядковый номер закрываемого ордера. ) прям с открытой позиции, которая вот-вот закроется,
а к "nt opposite"(Уникальный порядковый номер противоположного ордера. ) тупо прибавлял 1.
Я пробовал чтото делать но он пишет ошибки такого плана: invalid ticket for OrderCloseBy function, или типа неправельный параметр для "int ticket" или "int opposite"...