Скачать MetaTrader 5

Частичное закрытие ордера.

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

Согласно документации функция OrderClose() возвращает TRUE при успешном завершении или FALSE. То-же самое и при частичном закрытии ордера, при этом закрывается весь объём и открывается новый ордер с лотом равным остатку. При этом время открытия и конечно цена остаются прежними. А тикет этого нового ордера остаётся строгой тайной и его можно узнать только перебрав ордера в цикле.

Вот и возник вопрос: А есть-ли вариант узнать этот тикет не прибегая к циклу???

Sergey Dzyublik
4942
Sergey Dzyublik  
Позиция становится OrdersTotal()-1. Но лучше перестраховаться и проверять в цикле с конца, а то вдруг где что сработает (стоп, отложка....).
Alexey Viktorov
8058
Alexey Viktorov  

OrdersTotal()-1 до безумия не надёжно. Потому и не говорил о таком варианте вообще.

А перебор ордеров тащит за собой кучу дополнительных условий. Дело в том, что однажды по одному сигналу открылось два одинаковых ордера. На реальном счёте, слава богу отложки и я был у компа. Хотя в логах экспертов запись одна. В обработке ошибок есть Print(i, " - я неудачная попытка открытия ордера"); Так, что на советник ну никак не могу грешить. Когда пытался выяснить причину меня так вежливо послали... на этот форум. Да ещё и сказали, что у них нет возможности проверить достоверность логов предоставленных мной. Но эту причину я выяснять не хочу. Сделал при открытии ордера запись файла с именем = тикету открытого ордера, а в переборе ордеров если ордер есть а файла нет, то его удалить. Вот и получается, что если закрыть часть ордера, то новый ордер откроется без записи файла и он будет закрыт. Либо сочинять условия его определения.

Чем я и занимаюсь.

Алексей Тарабанов
7316
Алексей Тарабанов  
AlexeyVik:

Согласно документации функция OrderClose() возвращает TRUE при успешном завершении или FALSE. То-же самое и при частичном закрытии ордера, при этом закрывается весь объём и открывается новый ордер с лотом равным остатку. При этом время открытия и конечно цена остаются прежними. А тикет этого нового ордера остаётся строгой тайной и его можно узнать только перебрав ордера в цикле.

Вот и возник вопрос: А есть-ли вариант узнать этот тикет не прибегая к циклу???

Есть. Сделать то-же самое самому(см. выделенный текст).
Alexey Viktorov
8058
Alexey Viktorov  

Прочти следующее за выделенным предложение.

При этом дополнительный спред и откроется ордер не по той цене по которой был открыт тот, часть которого надо закрыть.

Vitalie Postolache
12271
Vitalie Postolache  
Ну если для трейдера спред в тягость, то может ну его нафиг, этот форекс...
Alexey Viktorov
8058
Alexey Viktorov  

Основное, конечно-же желание оставить часть открытого ордера на том месте где он был открыт.

А что касается спреда, так это как в поговорке "курочка по зёрнышку клюёт, а весь двор в помёте".

Алексей Тарабанов
7316
Алексей Тарабанов  
AlexeyVik:

Прочти следующее за выделенным предложение.

При этом дополнительный спред и откроется ордер не по той цене по которой был открыт тот, часть которого надо закрыть.

Есть масса вариантов решения и у каждого - свои издержки.

1. См.выше.

2. Открыть встречную позицию(лок).

3. Перебор открытых позиций,- отдельный, не удаляющий позицию при отсутствии файла.

4. Самый сложный, но и самый разумный, имхенько: решить вопрос передачи тикета с сервера ДЦ на терминал пользователя. Сервисдек в помощь.

zoritch
4326
zoritch  

при чём здесь вообще спред ? если я вхожу в рынок с целью от ста до семидесяти пунктов, какой спред может съесть твою прибыль ?

это как входной билет в игровой зал... отдал полтинник за вход... выиграл тысячи, проиграл тысячи... виноват полтинник за входной билет ? смешно...

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

Alexey Viktorov
8058
Alexey Viktorov  
tara:

Есть масса вариантов решения и у каждого - свои издержки.

1. См.выше.

2. Открыть встречную позицию(лок).

3. Перебор открытых позиций,- отдельный, не удаляющий позицию при отсутствии файла.

4. Самый сложный, но и самый разумный, имхенько: решить вопрос передачи тикета с сервера ДЦ на терминал пользователя. Сервисдек в помощь.

Всю эту массу вариантов я представляю. За исключением выделенного. Самого разумного. Можно подробней об этом?
Алексей Тарабанов
7316
Алексей Тарабанов  
AlexeyVik:
Всю эту массу вариантов я представляю. За исключением выделенного. Самого разумного. Можно подробней об этом?

На форуме MQL5 можно обратиться к разработчикам в разделе сервисдек.

В-принципе, просьба о доработке - вполне обоснована,- собственник позиции имеет право на полную информацию о ней.

Время, правда, не лучшее,- старый MQL4 кончается(:

ЗЫ Если раньше не ходили на MQL5: Ваш ник и пароль там совпадают с форумом четверки на время создания форума MQL5.

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