Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vecheslav Chertushkin
397
Vecheslav Chertushkin  

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

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

Alexandr Bryzgalov
37037
Alexandr Bryzgalov  
   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
9425
khorosh  
semiromid:

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

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

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

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
Сергей  
semiromid:

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

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

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

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

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

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

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

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

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

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


Vecheslav Chertushkin
397
Vecheslav Chertushkin  
hhohholl:

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

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

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



Читал и там и на сайтах и в учебнике ((
Дмитрий
1460
Дмитрий  
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
2144
Vladyslav Goshkov  

semiromid:

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

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

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

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

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

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

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


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

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

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

Роман
7939
Роман  
semiromid:

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

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

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

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

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

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