Подскажите, как задать переменную

 
я так понимаю вас интересуют внешние переменные ? extern вам в помощь :)
 
xrust >>:
я так понимаю вас интересуют внешние переменные ? extern вам в помощь :)

Нет, мне не внешние...


Если у меня открыт ордер, то...

double SL=(Стоплосс открытого ордера);
double TP=(Тейкпрофит открытого ордера);
double OP=(Цена открытия открытого ордера);

 

OrderStopLoss()

OrderTakeProfit()

OrderOpenPrise()

 
MakarFX >>:

Нет, мне не внешние...


Если у меня открыт ордер, то...

double SL=(Стоплосс открытого ордера);
double TP=(Тейкпрофит открытого ордера);
double OP=(Цена открытия открытого ордера);

Если надо данные открытого ордера то для начала его надо выбрать,

а потом брать его данные.

 
xrust >>:

OrderStoploss()

OrderTakeprofit()

OrderOpenprise()

double SL=OrderStoploss();
double TP=OrderTakeprofit();
double OP=OrderOpenprise();


Если я так сделаю, эту будет касаться только открытого ордера?

т.к. в советнике постоянно три ордера: один открытый и два отложных...

 

Нет, конечно вам сначала надо найти ордер при помощи функции OrderSelect(), или по тикету если вы его знаете, или в результате перебора ордеров по условию

можно так :

//+------------------------------------------------------------------+
// Проверка последнего ордера по условию                             |
//+------------------------------------------------------------------+
bool LastCloseOrd(string Sy = "",//Если Sy=="" на принадлежность символу не проверяем
                  int  Type = -1,//Если Typ==-1 любой тип ордера
                  int Magic = -1,//Если Magic=-1любой магик
                  int Pr_Ls =  0){//Если Pr_Ls =0 без проверки на профит, если <0 то фильтр лосевых , если >0 то фильтр профитных ордеров
                  int time=0;
if(OrdersHistoryTotal()<1){return(false);}//Если нет закрытых ордеров выходим 
  for(int i=0;i<OrdersHistoryTotal();i++){//Перебираем закрытые ордера
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){//Выбираем ордер из истории
      if(OrderCloseTime()!=0){//Если ордер уже закрыт
        if(Sy==""||OrderSymbol()==Sy){//если совпадает символ, или нет проверки на символ
          if(Type==-1||OrderType()==Type){//если совпадает тип, или нет проверки на тип
            if(Magic==-1||OrderMagicNumber()==Magic){//если совпадает магик , или не проверки на магик
              if(OrderCloseTime()>time){//если время закрытия ордера больше чем предыдущее
                time=OrderCloseTime();//записываем время закрытия (в конце цикла у нас в ловушке булет сидеть последний закрытый ордер
              }                                                  //попадающий под все условия выставленных фильтров)
            }
          }
        }
      }
    }
  }  
if(Pr_Ls==0&&time!=0){return(true);}//если нет условия на профит-лосс подтверждаем наличие ордера
if(Pr_Ls<0&&OrderProfit()<0){return(true);}//если ордер лосевый подтверждаем наличие ордера
if(Pr_Ls>0&&OrderProfit()>0){return(true);}//если ордер профитный подтверждаем наличие ордера
return(false);//нет ни одного попадающего под выставленные условия ордера
}

описывал в соседней ветке, можете сходить к Игорю Киму в веточку, и подыскать там наиболее устраивающую вас функцию, и заодно опыта и понимания наберетесь

пардон перепутал, сейчас выложу точто надо

 
  if(total>0)
 	for ( cnt = 0;  cnt < total;  cnt ++ )
   {
   OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    {
    if(OrderType()==OP_SELL)
Ордер я выбираю вот так, а как дальше не могу понять(((
 

так где то

  for(int i=0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
      if(OrderSymbol()==Symbol()){
        if(OrderType()<2){
          double prise=OrderOpenPrice();
          double sl=OrderStopLoss();
          double tp =OrderTakeProfit();
        }
      }
    }
  }
 

Спасибо, сейчас испробую)))