Как при помощи встроенного языка отловить ввод нового ордера или скажем закрытие ордера?

 
Доброго времени суток!
Вопрос такой, могу ли я при помощи встроенного языка отловить ввод нового ордера или скажем закрытие ордера? То есть вообще есть ли там какие-нибудь события?

Заранее благодарен...
 
KTO:
могу ли я при помощи встроенного я зыка отловить ввод нового ордера или скажем закрытие ордера?
Про Вас ничего не скажу, т.к. не знаю. А, вообще, такая возможность есть.
KTO:
То есть вообще есть ли там какие-нибудь события?
Событий нету
 
KTO:
Вопрос такой, могу ли я при помощи встроенного я зыка отловить ввод нового ордера или скажем закрытие ордера?
Нужно отслеживать и помнить состояние терминала на предыдущем и текущем тике.
Сравнивая предыдущий и текущий набор ордеров можно инициировать любые события.
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж // AG_Terminal_scr.mq4 // Предназначен для работы в качестве функции в программном комплексе AutoGraf. // // Распространяется бесплатно без ограничений. // Автор: Сергей Ковалёв, Днепропетровск, sk@mail.dnepr.net //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж // // //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж int AG_Terminal_scr() { //=============================================================================================== Предопределения ==== ArrayCopy(Mas_Ord_Old, Mas_Ord_Tek); // Сохраняем предыдущую историю Kol=0; for (i=0; i<=6; i++) Mas_Tip[i]=0; // Обнуление массива типов ордеров ArrayInitialize(Mas_Ord_Tek,0); // Обнуление массива //================================================================================================ Анализ ордеров ==== for (i=1; i<=OrdersTotal(); i++) // По всем ордерам терминала { if((OrderSelect(i-1, SELECT_BY_POS)==true) && (OrderSymbol()==Symbol())) // Если есть следующий и наша вал.пара { Kol++; // Считаем общее количество ордеров //--------------------------------------------------------------------------- Формирование нового массива ордеров ---- Mas_Ord_Tek[Kol][1] = NormalizeDouble( OrderOpenPrice() ,Digits); // Курс открытия ордера Mas_Ord_Tek[Kol][2] = NormalizeDouble( OrderStopLoss() ,Digits); // Курс SL Mas_Ord_Tek[Kol][3] = NormalizeDouble( OrderTakeProfit(),Digits); // Курс ТР Mas_Ord_Tek[Kol][4] = OrderTicket(); // Номер ордера Mas_Ord_Tek[Kol][5] = OrderLots(); // Количество лотов // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tip_Ord = OrderType()+1; // +1 - это дело вкуса Mas_Tip[Tip_Ord]++; // Попутно считаем кол. ордеров разн. типов Mas_Ord_Tek[Kol][6]=Tip_Ord; // Тип ордера Mas_Ord_Tek[Kol][7] = OrderMagicNumber(); // Магическое число ордера //-------------------------------------------------------------------------------------------------------------------- } } Mas_Ord_Tek[0][0] = Kol; // Сохраняем в нулевую ячеечку //======================================================================================= Поиск пропавших ордеров ==== for (oo=1;oo<=Mas_Ord_Old[0][0];oo++) // Возьмём номер ордера из старого массива { Sovpadenie_Nom_Ord=0; // Для начала обнулим факт признака совпад. for (i=1;i<=Mas_Ord_Tek[0][0];i++) // Поищем этот ордерок в текущем массиве { if (Mas_Ord_Tek[i][4]==Mas_Ord_Old[oo][4]) // Если совпал номер ордера, { Sovpadenie_Nom_Ord=1; // ..запомним.. break; // .. и выходим из внутреннего цикла } } if (Sovpadenie_Nom_Ord==1) continue; // При нахождении переступим сообщение AG_Mess_graf_scr(234); // Сообщаем юзеру, что ордера больше нет if (Sound==1) PlaySound( "Close_order.wav" ); // И музычку. } //==================================================================================================================== return(1); } //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж Конец модуля жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж

В данном примере информация о наличии ордеров хранится в массивах Mas_Ord_Old и Mas_Ord_Tek (массив ордеров старый и текущий).
В нижнем блоке кода производится простой анализ на предмет наличия ордеров. Аналогичным способом можно анализировать измененение характеристик ордера.
(обратите внимание: при трансформации отложенного ордера в открытый меняется его номер OrderTicket(), поэтому для отслеживания этого события необходимо анализировать не номер ордера, а MagicNumber, здесь не рассматривается)
 
обратите внимание: при трансформации отложенного ордера в открытый меняется его номер OrderTicket()
... неужели? Странно, раньше вроде не менялся... Может это от брокера зависит?
 
Registr:
... неужели? Странно, раньше вроде не менялся... Может это от брокера зависит?
Насколько я знаю, это - свойство МТ4 (на мой взгляд неприятное).

Что касается ДЦ, то есть такие, кот. ежедневно закрывают все открытые ордера по курсу закрытия дня и в первую секунду следующего дня открывают такие же ордера, но сдвинутые относительно курса закрытия дня на величину свопа . В этом случае тоже меняется номер ордера, но кроме того курс открытия исчисляется не 4-мя, а 5-ю значащими цифрами. В колонке терминала "своп" всегда одни нули.
Очень непривычно.
 
SKif:
Registr:
... неужели? Странно, раньше вроде не менялся... Может это от брокера зависит?
Насколько я знаю, это - свойство МТ4 (на мой взгляд неприятное).

Что касается ДЦ, то есть такие, кот. ежедневно закрывают все открытые ордера по курсу закрытия дня и в первую секунду следующего дня открывают такие же ордера, но сдвинутые относительно курса закрытия дня на величину свопа . В этом случае тоже меняется номер ордера, но кроме того курс открытия исчисляется не 4-мя, а 5-ю значащими цифрами. В колонке терминала "своп" всегда одни нули.
Очень непривычно.
И чего только не придумают ДЦ, чтобы жизнь трейдера усложнить. Я серьезно.
 
Доброго времени суток! Большое спасибо за ответы... Еще один вопросик Существует ли встроенная связь МТ с другими приложениями ОЛЕ или ДДЕ например....
 
Уважаемые специалисты! Помогите, пожалуйста, решить мою проблему (думаю, что это не трудно для того, кто соображает в этом вопросе), суть: у меня установлен настроеный (привычный и родной) МТ4 - 190. Я не хочу его пока менять. Вопрос: подскажите (поэтапно) что и как надо сделать, чтобы можно было работать с разными ДЦ ( неважно демо или реал). Ну не хочу я каждый раз скачивать терминал с нового ДЦ!!! Сколько можно! Ведь они все одинаковые, верно?! С уважением. .
 

Если есть IP нового ДЦ, то можно сделать следующее:

1. Двойным щелчком в навигаторе вызвать панель авторизации ( на ней только 3 поля ввода: Логин, Пароль, Сервер).

2. В поле Сервер ввести IP нового ДЦ и нажать ОК. Терминал отреагирует "Неправильный счёт", это нормально.

3. Вызвать панель открытия счёта, заполнить все поля, нажать "Далее". На обновившейся форме выбрать IP нового ДЦ.

Если нет IP нового ДЦ, то скачивать у них инстал.

 
Уважаемый SKif ! Большое спасибо за помощь! А то я все мучалась, не знала как выйти из положения. Все получилось. Удачи. С уважением. .
 
Добрый день всем! Уважаемый SKif ! Погорячилась я вчера, в общем, ничего не получается. Вначале, вроде бы, получилось, счет открылся, пароль появился, а через секунд 20 все исчезло: сначала пропала связь, а потом и все графики исчезли. Это я пыталась установить демо Альпари, устанавливала по очереди IP (два указаны на сайте Альпари), но больше ничего не получилось. Что я делала не так? С уважением..