Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
| Sergey_n |
13.7.2007, 7:03
Сообщение
#51
|
|
Группа: Активный участник Сообщений: 22 Регистрация: 5.7.2007 Пользователь №: 1 414 Спасибо сказали: 0 раз(а) |
Помогите пожалуйста. Тут такая делема: Допустим, открывается ордер на покупку и одновременно ставится отложенный ордер на продажу, как сделать так чтобы если по ордеру сработал Тейкпрофит, удалить отложенный ордер? Проблема в том, что там еще могут быть сделки нужно что-то с номером ордера поколдовать, так чтобы отложенный ордер закрывался тока тот, который был открыт именно тем ордером, который по профиту закрылся. Может вы знаете, как вести точный учет номеров ордера? С уважение Сергей. Это вопрос весьма обширный. Данные статьи помогут Вам понять принцип построения системы учёта ордеров в советнике: http://articles.mql4.com/ru/126 - Управление ордерами – это просто http://articles.mql4.com/ru/114 - Учёт ордеров в большой программе http://articles.mql4.com/ru/105 - MagicNumber – "магический" идентификатор ордера Кроме того, статьи Rosh'а: http://old.alpari.org/ru/experts/articles/8.html - 7. Ордера в MetaTrader4 http://old.alpari.org/ru/experts/articles/9.html - 8. Закрытие и удаление ордеров На мой взгляд, это необходимый минимум, который нужно усвоить, для того что бы решать Вашу задачу. Спасибо огромное. int start() { ….. //тут операторы(1) if (iCustom(NULL, 0, "ZUP_v49mod", minPercent, minSize, minBars, 0, 0)==0) return(0); // и тут операторы(2) …….. return(0); } Я так про return и не понял, вот в этом примере return в функции Custom куда отсылает. Будут ли выполнятся операторы(1), пока условие истинно? Сообщение отредактировал Sergey_n - 13.7.2007, 7:21 |
| NoName |
13.7.2007, 8:13
Сообщение
#52
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) |
Давайте я приведу другой пример, более наглядный.
Код int start() { int A,B,C; A=3; B=5; return(0); [code] C=A+B; // эта строка не выполнится никогда! return(0); } Код int start() { int A,B,C; A=3; B=5; if (true) { // ... какие-то действия return(0); } C=A+B; // эта строка не выполнится никогда! return(0); } Цитата Я так про return и не понял, вот в этом примере return в функции Custom куда отсылает. Будут ли выполнятся операторы(1), пока условие истинно? В вашем примере операторы (1) будут выполняться всегда, не зависимо от того истинно условие или ложно. А вот операторы (2) будут выполняться только тогда когда условие будет ложно. |
| Sergey_n |
13.7.2007, 10:11
Сообщение
#53
|
|
Группа: Активный участник Сообщений: 22 Регистрация: 5.7.2007 Пользователь №: 1 414 Спасибо сказали: 0 раз(а) |
Давайте я приведу другой пример, более наглядный. Код int start() { int A,B,C; A=3; B=5; return(0); [code] C=A+B; // эта строка не выполнится никогда! return(0); } Код int start() { int A,B,C; A=3; B=5; if (true) { // ... какие-то действия return(0); } C=A+B; // эта строка не выполнится никогда! return(0); } Цитата Я так про return и не понял, вот в этом примере return в функции Custom куда отсылает. Будут ли выполнятся операторы(1), пока условие истинно? В вашем примере операторы (1) будут выполняться всегда, не зависимо от того истинно условие или ложно. А вот операторы (2) будут выполняться только тогда когда условие будет ложно. Спасибо вроде понял) С уважением Сергей. |
| leonid553 |
13.7.2007, 10:49
Сообщение
#54
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) |
Вот здесь вроде-бы есть примеры на что-то подобное -
Vector94, post 26.02.2007 И там дальше посмотрите... http://forum.liteforex.net/viewtopic.php?f...&sd=a&start=270 |
| NoName |
13.7.2007, 15:43
Сообщение
#55
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) |
2) какие индикаторы лучше всего показывают выход из хеджирования, и может быть видели готовые блоки или советники работающие по такому принципу? Вот, похоже, ответ на Ваш вопрос появился сегодня: http://articles.mql4.com/ru/428 - Основы создания хеджирующего эксперта |
| Sergey_n |
13.7.2007, 17:25
Сообщение
#56
|
|
Группа: Активный участник Сообщений: 22 Регистрация: 5.7.2007 Пользователь №: 1 414 Спасибо сказали: 0 раз(а) |
2) какие индикаторы лучше всего показывают выход из хеджирования, и может быть видели готовые блоки или советники работающие по такому принципу? Вот, похоже, ответ на Ваш вопрос появился сегодня: http://articles.mql4.com/ru/428 - Основы создания хеджирующего эксперта Вот спасибо, я вроде весь сайт перерыл, а тут) |
| Sergey_n |
14.7.2007, 17:57
Сообщение
#57
|
|
Группа: Активный участник Сообщений: 22 Регистрация: 5.7.2007 Пользователь №: 1 414 Спасибо сказали: 0 раз(а) |
Добрый вечер.
Есть вопрос: Нужно с помощью функции OrderSend выбрать последнюю из закрытых сделок по данному валютному инструменту, я себе это представляю так Цикл -> выбор ордера в соответствие с параметрами цикла (из закрытых - MODE_HISTORY) -> проверка валюты -> а вот как проверить что эта сделка последняя? Поделитесь мыслями, или код подкиньте. С уважением Сергей. |
| leonid553 |
14.7.2007, 18:15
Сообщение
#58
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) |
"Нужно с помощью функции OrderSend выбрать ...."
Не совсем "OrderSend"... RickD : Получить тикет последнего закрытого ордера из истории. Если тип ордера не указан, берется самый последний ордер любого типа. Если ордеров, отвечающих указанным критерию не найдено, возвращает -1. Код int GetLastOrderHist(int type = -1) { int ticket = -1; datetime dt = 0; int cnt = HistoryTotal(); for (int i=0; i < cnt; i++) { if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue; //Опционально if (OrderSymbol() != Symbol()) continue; //Опционально if (OrderMagicNumber() != Magic) continue; if (type != -1 && OrderType() != type) continue; if (OrderCloseTime() > dt) { dt = OrderCloseTime(); ticket = OrderTicket(); } } return (ticket); |
| Sergey_n |
14.7.2007, 18:48
Сообщение
#59
|
|
Группа: Активный участник Сообщений: 22 Регистрация: 5.7.2007 Пользователь №: 1 414 Спасибо сказали: 0 раз(а) |
Почему все так сложно=(, написать бы, ну ка выдай последний закрытый ордер, или грааль делай деньги =))
Кстати у меня в советнике не используется магикнумбер. А за код, большое спасибо. |
| Sergey_n |
14.7.2007, 18:59
Сообщение
#60
|
|
Группа: Активный участник Сообщений: 22 Регистрация: 5.7.2007 Пользователь №: 1 414 Спасибо сказали: 0 раз(а) |
Я так и не понял, как он выбирает тикет именно последнего ордера, какой функцией?
Спасибо еще раз, я алгоритм пару раз глянул и понял как работает. Сообщение отредактировал Sergey_n - 14.7.2007, 19:21 |
![]() ![]() |
|
Текстовая версия | Сейчас: 19.3.2026, 21:57 |