Смотрим https://docs.mql4.com/ru/trading/OrderSend
Основная функция, используемая для открытия позиции или установки отложенного ордера.
Возвращает номер тикета, который назначен ордеру торговым сервером или -1 в случае неудачи. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().
И так - если ордер создан, то у нас есть его тикет. Все что нужно - после OrderSend посмотреть что возвратили и если !=-1 - доделать все что надо.
1.Моментальное определение вновь открывшегося торгового(не отложеных ордеров) ордера (Если система определила ордер который рание не был открыт . то идет продолжение под номером 2 )
2. Выполняеться какая то задача, всего 1-н раз,именно для этого ордера .
После того как еще открылся один ордер, система вновь действует с пункта 1 по пункт 2 .
1.Моментальное определение вновь открывшегося торгового(не отложеных ордеров) ордера (Если система определила ордер который рание не был открыт . то идет продолжение под номером 2 )
2. Выполняеться какая то задача, всего 1-н раз,именно для этого ордера .
После того как еще открылся один ордер, система вновь действует с пункта 1 по пункт 2 .
При открытии ордера создайте дайте некой переменной значение. Это значение будет показывать что действие для ордера еще не выполнялось
При выполнении действия смените значение этой переменной.
1.Моментальное определение вновь открывшегося торгового(не отложеных ордеров) ордера (Если система определила ордер который рание не был открыт . то идет продолжение под номером 2 )
2. Выполняеться какая то задача, всего 1-н раз,именно для этого ордера .
После того как еще открылся один ордер, система вновь действует с пункта 1 по пункт 2 .
1. создаем исходный список открытых позиций (при запуске)
2. просматриваем открытые позиции и сравниваем их со списком.
3. если есть новый ордер(нет такого в списке), делаем с ним все, что хотели и довавляем его в исходный список.
4. возвращаемся к п.2
1. создаем исходный список открытых позиций (при запуске)
2. просматриваем открытые позиции и сравниваем их со списком.
3. если есть новый ордер(нет такого в списке), делаем с ним все, что хотели и довавляем его в исходный список.
4. возвращаемся к п.2
Это в масиве лучше сделать? 1. создаем исходный список открытых позиций (при запуске)
Помогите подправить
Спасибо )
extern int MagicNumber = 0;
int start()
{
static bool first = true;
static int pre_OrdersTotal = 0;
int _OrdersTotal = 0, now_OrdersTotal = 0, _GetLastError = 0;
while ( !IsStopped() )
{
_OrdersTotal = OrdersTotal();
now_OrdersTotal = 0;
for ( int z = _OrdersTotal - 1; z >= 0; z -- )
{
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError();
Print( "OrderSelect( ", z, ", SELECT_BY_POS ) - Error #", _GetLastError );
continue;
}
// Считаем количество ордеров по текущему символу и с заданным MagicNumber
if ( OrderMagicNumber() == MagicNumber &&
OrderSymbol() == Symbol() ) now_OrdersTotal ++;
}
// Выводим информацию только если это не первый запуск эксперта
if ( !first )
{
// Сравниваем количество позиций на предидущем тике с текущим количеством
// Если оно изменилось, выводим сообщение
if ( now_OrdersTotal > pre_OrdersTotal )
Alert( Symbol(), ": количество позиций с MagicNumber ", MagicNumber,
" увеличилось! Было - ", pre_OrdersTotal, ", стало - ", now_OrdersTotal );
if ( now_OrdersTotal < pre_OrdersTotal )
Alert( Symbol(), ": количество позиций с MagicNumber ", MagicNumber,
" уменьшилось! Было - ", pre_OrdersTotal, ", стало - ", now_OrdersTotal );
}
else
{
first = false;
}
//---- Запоминаем количество позиций
pre_OrdersTotal = now_OrdersTotal;
Sleep(100);
}
return(0);
}
//----
Помогите подправить
Спасибо )
А зацикливать-то зачем? Функция start() и так на каждом тике выполняется
А зацикливать-то зачем? Функция start() и так на каждом тике выполняется
Так вообще должно с более большой точностью выполняться, независимо от тиков.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Прошу помощи. Как можно это сделать ? Идентификация каждого нового открытого ордера, с последующий задачей на 1-н раз,именно для этого ордера .И так до бесконечности,для каждого вновь открытого ордера.
Всем Спасибо кто поможет в этом вопросе .