однократная проверка выполнения условия

 
Суть в следующем необходимо заставить эксперта при первом проходе по int start() выполнить проверку одного условия if (Ask == 1.2760 && k==0)
Затем под этим я пишу k = 1;
в надежде на то что условие будет всегда не выполнимо, но ни тут то было, эксперт продолжает работать не обращая внимания на k = 1;
дальше я пишу if (Ask == plus )
но это условие так же никогда не выполняется.
Почему не передается переменная plus и ни где не сохраняется переменная k, которую я меняю с 0 на 1.

//+------------------------------------------------------------------+
//|                                                        proba.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net/"
extern double TakeProfit = 20;
extern double TakeLost = 50;
extern double Lots = 0.1;
extern int k = 0;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
double plus;
int ticket,total,k;
  total=OrdersTotal();
   if(total<1) 
   {
 
if (Ask == 1.2760 && k==0)
 
      {
        k = 1;    
        plus=1.2760 + 0.005;
        ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-TakeLost*Point,
                      Ask+TakeProfit*Point,"My order #1",16384,0,Blue);
          if(ticket>0)
            {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY order opened : ",OrderOpenPrice());
            }
            else Print("Error opening BUY order : ",GetLastError()); 
            return(0); 
            }
       return(0);
      }
   if (Ask == plus ) 
        {
       ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-TakeLost*Point,
                     Ask+TakeProfit*Point,"My order #1",16384,0,Blue);
      if(ticket>0)
            {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY order opened : ",OrderOpenPrice());
            }
            else Print("Error opening BUY order : ",GetLastError()); 
            return(0); 
         }
        return(0);
      }
     
//----


Да еще хотел спросить могу ли в int start() пользоваться переменными, которые будут вычисляться в int init().
 

Обьявление переменной k нужно удалить из функции start()
У тебя переменная k обьявлена 2 раза. В функции старт она будет обнуляться на каждои тике, также переменная plus (вынеси ее обьявление с функции start()) - соответственно и результат. ..

 
Tango писал (а):

Обьявление переменной k нужно удалить из функции start()
У тебя переменная k обьявлена 2 раза. В функции старт она будет обнуляться на каждои тике, также переменная plus (вынеси ее обьявление с функции start()) - соответственно и результат. ..


Спсибо разобрался, где я ошибся.
Переменные нужно было объявлять здесь
extern double TakeProfit = 20;
extern double TakeLost = 50;
extern double Lots = 0.1;
int k;
double plus;
Причина обращения: