Скачать MetaTrader 5

Сканировать валютную пару на наличие открытых ордеров

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Переходите от теории к практике. Code Base поможет!
Vecheslav Chertushkin
397
Vecheslav Chertushkin 2011.06.12 18:36 

Прошу помощи . Подскажите,с помощью какой функции,можно сканировать валютную пару на наличие открытых ордеров ?

Спасибо всем кто поможет =)

Alexandr Bryzgalov
27418
Alexandr Bryzgalov 2011.06.12 18:49  
   for (int k=OrdersTotal()-1;k>=0;k--)
   {
      RefreshRates();
      if (OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true&&OrderSymbol()==Symbol())
      {
         int cmd=OrderType();
         if(cmd>1)
         {
         }
         if (cmd==OP_BUY)
         {
         }
         if (cmd==OP_SELL)
         {
         }
      }
   }
khorosh
8197
khorosh 2011.06.12 18:54  
semiromid:

Прошу помощи . Подскажите,с помощью какой функции,можно сканировать валютную пару на наличие открытых ордеров ?

Спасибо всем кто поможет =)

https://www.mql5.com/ru/forum/131859
Vecheslav Chertushkin
397
Vecheslav Chertushkin 2011.06.12 19:30  

for (int k=OrdersTotal()-1;k>=0;k--) //Это оператор for . Почему в нем стоит оператор if?

{
RefreshRates();
if (OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true&&OrderSymbol()==Symbol()) // Это обозначает && "и"
{
int cmd=OrderType();
if(cmd>1)
{
}
if (cmd==OP_BUY)
{
}
if (cmd==OP_SELL)
{
}
}
}
А "к" выступает в роли переменной?

Я так понял "for" - это условие ?

int - Интеджер (Целые числа ) за ним обьявляем переменную "к" дальше я запутался

Как это можно понять " int k=OrdersTotal()-1; "

Дальше ..... k>=0 "к" больше или равно "0"

Это не понятно "k--"

Если не трудно можете с коментариями описать ? Целый день сижу пытаюсь учить язык (

Сергей
256
Сергей 2011.06.12 19:45  
semiromid:

А "к" выступает в роли переменной?

Я так понял "for" - это условие ?

int - Интеджер (Целые числа ) за ним обьявляем переменную "к" дальше я запутался

Как это можно понять " int k=OrdersTotal()-1; "

Дальше ..... k>=0 "к" больше или равно "0"

Это не понятно "k--"

Если не трудно можете с коментариями описать ? Целый день сижу пытаюсь учить язык (

Молодой человек!

Потрудитесь прочитать хотя-бы встроенную справку в метаэдиторе по основам языка.

Жизнь сразу станет легче.


Vecheslav Chertushkin
397
Vecheslav Chertushkin 2011.06.12 19:47  
hhohholl:

Молодой человек!

Потрудитесь прочитать хотя-бы встроенную справку в метаэдиторе по основам языка.

Жизнь сразу станет легче.



Читал и там и на сайтах и в учебнике ((
Дмитрий
1460
Дмитрий 2011.06.12 19:51  
for (int k=OrdersTotal()-1;k>=0;k--)//Начинаем перебор всех открытых ордеров начиная с конца
   {
      RefreshRates();//Обновляем котировки, необходимо при модификации или закрытии ордеров
      if (OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true&&OrderSymbol()==Symbol())//Выбираем ордер с номером из цикла, и проверяем, совпадает ли символ ордера с текущим
      {
         int cmd=OrderType();//В переменной cmd будем хранить тип ордера
         if(cmd>1)//Нас интересуют только отложенные ордеры
         {
         //Что-то делаем
         }
         if (cmd==OP_BUY)//А вдруг на покупку ордер?
         {
         //Что-то делаем
         }
         if (cmd==OP_SELL)//Или на продажу?
         {
         //Что-то делаем
         }
      }
   }
Vladyslav Goshkov
2067
Vladyslav Goshkov 2011.06.13 08:19  

semiromid:

А "к" выступает в роли переменной?

Я так понял "for" - это условие ?

int - Интеджер (Целые числа ) за ним обьявляем переменную "к" дальше я запутался

Как это можно понять " int k=OrdersTotal()-1; "

Дальше ..... k>=0 "к" больше или равно "0"

Это не понятно "k--"

Если не трудно можете с коментариями описать ? Целый день сижу пытаюсь учить язык (


Читал и там и на сайтах и в учебнике ((

Целый день пытаться учить это, конечно, круто. Потратьте еще целый день - попытайтесь посмотртеть справочник по хирургии. Может хирургом за день станете....... как вариант (вдруг Вы хирург ???? ) - справочник по сопромату: может инженером за день станете. А то некоторые по 5-6 лет учатся и не у всех получается ....

Прочтите еще несколько раз. Если с третьего раза не разберетесь, подумайте: а оно Вам нужно - программировать ?

Роман
7939
Роман 2011.06.13 09:04  
semiromid:

Читал и там и на сайтах и в учебнике ((

Вы, хотяб, для порядку - запишитесь на курсы "Кройки и шитьЯ", ой, тьфу, - "ПрограммированиЯ", аш стихами написал, в противном случае - бесполезняк все это - без базового образования (желательно - Вышки) в этом направлении.
Vecheslav Chertushkin
397
Vecheslav Chertushkin 2011.06.13 10:29  

Спасибо за советы .

Подскажите еще одну деталь.

Как сделать так, что бы этот скрипт срабатывал при каждом новом открытом ордере ?

Наверное нужно воспользоваться циклом "while"?

И наверное его нужно переделать в советник?

Судя по всему, програма должна распозновать момент открытия нового ордера, и выполнять заданую функцию .

Всем Спасибо кто помогает

.

for (int k=OrdersTotal()-1;k>=0;k--) //Начинаем перебор всех открытых ордеров начиная с конца
{
RefreshRates(); //Обновляем котировки, необходимо при модификации или закрытии ордеров
if (OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true&&OrderSymbol()==Symbol())//Выбираем ордер с номером из цикла, и
{
int cmd=OrderType(); //В переменной cmd будем хранить тип ордера
if(cmd>1) //Нас интересуют только отложенные ордеры
{
//Что-то делаем
}
if (cmd==OP_BUY) //А вдруг на покупку ордер?
{
//Что-то делаем
}
if (cmd==OP_SELL) //Или на продажу?
{
//Что-то делаем
}
}
}
moskitman
4027
moskitman 2011.12.21 11:26  
Внезапно возникла обратная задача. Т.е. нужно определить ОТСУТСТВИЕ какого бы то ни было ордера на валютной паре. Неужели прийдется организовывать цикл перебора ордеров внутри цикла перебора инструментов? Или есть более простое и менее ресурсоёмкое решение?
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий