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

 

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

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

 
   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)
         {
         }
      }
   }
 
semiromid:

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

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

https://www.mql5.com/ru/forum/131859
 

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--"

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

 
semiromid:

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

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

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

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

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

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

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

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

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

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


 
hhohholl:

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

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

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



Читал и там и на сайтах и в учебнике ((
 
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)//Или на продажу?
         {
         //Что-то делаем
         }
      }
   }
 

semiromid:

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

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

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

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

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

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

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


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

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

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

 
semiromid:

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

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

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

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

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

Наверное нужно воспользоваться циклом "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) //Или на продажу?
{
//Что-то делаем
}
}
}
 
Внезапно возникла обратная задача. Т.е. нужно определить ОТСУТСТВИЕ какого бы то ни было ордера на валютной паре. Неужели прийдется организовывать цикл перебора ордеров внутри цикла перебора инструментов? Или есть более простое и менее ресурсоёмкое решение?