Приболел я чтоли...или что то недопонял...Помогите пж

 

Не могу сообразить...

Вроде все не так то уж и сложно. Нужно мне функцию, в которой проверялось бы наличие открытых ордеров и тип открытого ордера:

По моему я тут понавертел :(

int WhatOpen()
{
int Order=0;
if (OrderType()==OP_BUY)
Order=1;
if (OrderType()==OP_SELL)
Order=2;
Alert (Order);
}
return(0);

Пытаюсь просто проверить работу функции. Чтоб выскакивало сообщение с возвращаемым параметром...Все время выскакивает "2" независимо от того какая открыта позиция о_О

Подскажите пж, как можно это осуществить, и, что я тут понаписал

 
AYuBelov писал(а) >>

Не могу сообразить...

....

Чего-то немного не в дугу... Про OrderSelect Вы наверно забыли.

 
Figar0 писал(а) >>

Чего-то немного не в дугу... Про OrderSelect Вы наверно забыли.

Значит поспешил я...стратегию пытаюсь быстрей реализовать :(

 

Пользуйтесь на здоровье


//Вычисляем количество открытых длинных (на покупку) и коротких (на продажу) ордеров 
 int long_pos=0, short_pos =0;
 if (OrdersTotal()>0)
   {
   for(i=0;i<OrdersTotal();i++)
     {
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
     if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == Magic)
       {
       long_pos=1;
       }
     if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == Magic)
       {
       short_pos=1;
       }
     }
   }
//----
 
Kontra писал(а) >>

Пользуйтесь на здоровье

Вот спасибочки :) Щас только осилю как тут чего ) С Magic недопонял

 
//+------------------------------------------------------------------+
//| проверяет рыночный ордер на принадлежность согласно условиям     |
//+------------------------------------------------------------------+
bool IfOrder(string Sy="",int Typ=-1,int Magik=-1){
if(Sy=="0"||Sy==""){Sy=Symbol();}
  if(OrderSymbol()==Sy){
    if(OrderType()==Typ||Typ==(-1)){
      if(OrderMagicNumber()==Magik||Magik==(-1)){
        return(true);
      }
    }
  }
return(false); 
}
 
Magic - MagicNumber ордера. Задается внешними переменными.
 
Kontra писал(а) >>
Magic - MagicNumber ордера. Задается внешними переменными.

Ммм значит я дундучок еще...он ругается что переменная неописана. Почитаю ка я учебник то

 

в начале файла пишем строку:

extern int Magic = 123321;

и ничего не будет ругаться...

 
Kontra писал(а) >>
Magic - MagicNumber ордера. Задается внешними переменными.

int WhatOpen() // Функция проверки наличия открытых ордеров
{
int long_pos=0, short_pos =0, Magic, Order;
if (OrdersTotal()>0)
{
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == Magic)
{
Order=1;
}
if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == Magic)
{
Order=2;
}
}
} Alert(Order);
}
return;

Вобана что получилось, мне над было что возвращало:

Нет открытых-0;

Long - 1;

Short -2.

Спасибо большое

 
Kontra писал(а) >>

в начале файла пишем строку:

extern int Magic = 123321;

и ничего не будет ругаться...

А я вообще ее обозначил без значения и ничего вроде :)

Причина обращения: