Функции постоянно возвращают -1 - страница 4

 
qroner:

То же самое. Может Переустановить метатрейдер

Прогоните этот код в тестере в режиме визуализации и покажите скрин графика:

//+------------------------------------------------------------------+
//|                                                         TEST.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

input int Magic = 777;
input int Distance = 30;

int ticket_b;
int ticket_s;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   Comment("");
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   if(OrdersTotal() < 2)
   {
      ticket_b = OrderSend(Symbol(), OP_BUY, 0.01, Ask, 0, 0, 0, "", Magic, 0, clrBlue);
      ticket_s = OrderSend(Symbol(), OP_SELL, 0.01, Bid, 0, 0, 0, "", Magic, 0, clrRed);
   }
 
   Comment("ticket buy #", ticket_b,
           "\nticket sell #", ticket_s, 
           "\nprofit ticket #", IntegerToString(FindOrdPlus(Distance)));  
}
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//        Возвращает тикет сделки c положительным профитом           |
//+------------------------------------------------------------------+
int FindOrdPlus(int Dist)
{
   double dist = NormalizeDouble(Dist * Point, Digits);
   int type = -1;
   for(int i = OrdersTotal()-1; i >= 0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         type = OrderType();
         if((type == OP_BUY || type == OP_SELL) && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
         {
            if(type == OP_BUY)
            {
               if(OrderOpenPrice() <= Bid - dist) return(OrderTicket());
            }
            if(type == OP_SELL)
            {
               if(OrderOpenPrice() >=  Ask + dist) return(OrderTicket());
            }
         }
      }
   }
   return(-1);
}
//+------------------------------------------------------------------+
 
Проблема все же в коде. Новый терминал скачал...
 
qroner:
Проблема все же в коде. Новый терминал скачал...

Не поможет нужен другой комп. )))


 И по коду

         if(type == OP_BUY)
            {
           //Это выражение будет истинно, сразу после установке позиции
           if(OrderOpenPrice() <= Bid + dist) return(OrderTicket());
            }
         if(type == OP_SELL)
            {
           // Здесь тоже
           if(OrderOpenPrice() >=  Ask - dist) return(OrderTicket());
            }




 

Наверное нужно сделать так

       if(type == OP_BUY)
            {
               if(OrderOpenPrice()+ dist <= Bid) return(OrderTicket());
            }
       if(type == OP_SELL)
            {
               if(OrderOpenPrice()- dist >=  Ask ) return(OrderTicket());
            }

Как то так

 
Alekseu Fedotov:

И по коду

Да сделал ошибку.

Наверное нужно сделать так

Да, либо так , либо поменять местами + и - .

Выложенный код поправил.

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