Ошибки, баги, вопросы - страница 2839

 
A100:

Сомневаюсь что все верно, потому что допустим:

Результат в MQL: 3

, а            в C++: 1

В любом случае пусть проверят

Я бы не был таким однозначным при интерпретации MQL кода на С++.
Код для С++ (online: https://onlinegdb.com/Hy1FIj9Qv):

class A {
public:
        virtual void f() { printf( "1" ); }
};
class B : public A {
public:
        virtual void g_ptr() { ((A*)(this))->f(); }   //3
        virtual void g_ref() { ((A&)(*this)).f(); }   //3
        virtual void g_cast() { ((A)(*this)).f(); }   //1
};
class C : public B {
public:
        virtual void f() { printf( "3" ); }
};
void OnStart()
{
        B *b = new C;
        b->g_ptr();
        b->g_ref();
        b->g_cast();
}

int main()
{
    OnStart();
    return 0;
}
 
Sergey Dzyublik:

Я бы не был таким однозначным при интерпретации MQL кода на С++.
Код для С++ (online: https://onlinegdb.com/Hy1FIj9Qv):

И как предлагаете 3ий вариант g_cast записать на MQL ?

 
A100:

И как предлагаете 3ий вариант g_cast записать на MQL ?

Можно явно вызвать функцию из базового класса:

class A {
public:
        virtual void f() { Print( 1 ); }
};
class B : public A {
public:
        virtual void g() { this.A::f(); }   //1
};
class C : public B {
public:
        virtual void f() { Print( 3 ); }
};
void OnStart()
{
        B *b = new C;
        b.g();
}
 
Sergey Dzyublik:

Можно явно вызвать функцию из базового класса:

Если и когда исправят

template<typename T>
class A {
public:
        void f() {}
};
void OnStart()
{
        A<int> a;
        a.A<int>::f(); //Error: 'A' - undeclared identifier
}

можно конечно и явно будет вызывать в общем случае

 
A100:

И как предлагаете 3ий вариант g_cast записать на MQL ?

Ну вот так можно:

A(this).f();
 

Build 2584
Ошибка не исправлена.

При первом запуске сервиса, WebRequest возвращает 200.
При повторном запуске сервиса ПКМ, WebRequest возвращает ошибку 1001.
Удалив сервис и запустив снова, всё повторяется.

#property service
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"


//+------------------------------------------------------------------+
//| Service program start function                                   |
//+------------------------------------------------------------------+
void OnStart()
{
   string headers = "";
   char   request[];
   
   char   result[];
   string resHeader = "";
   
   string url = "https://httpbin.org/get";

   ResetLastError();
   
   int res = WebRequest("GET", url,  headers, 5000, request, result,  resHeader);
      
   if(res == -1)
   {
      Print("Ошибка в WebRequest. Код ошибки: ", GetLastError());
      MessageBox("Необходимо добавить адрес '" + url + "' в список разрешенных URL во вкладке 'Советники'", "Ошибка", MB_ICONINFORMATION);
      return;
   }
   else
      Print("res: "+(string)res);
   
   Print(CharArrayToString(result));
}
//+------------------------------------------------------------------+
 
Не могу войти в свою учётную запись через андроид - пишет что нужно разрешить куки, но они и так по умолчанию разрешены

... зашел через ucbrowser, но через хром почему-то не заходит
 

Здравствуйте. Что за беда с валидатором? Постоянно выдает ошибку "no trading operations", на EURUSD всегда, на других парах периодически. Началось того, что не мог пройти валидацию советником, постоянно выдавал эту ошибку, я давай искать проблему, убирать проверки и условия, и закончилось тем, что написал простейший советник, который на каждом тике открывает ордера, и что думаете? Ошибка никуда не делась. Вот код этого простого советника. Как быть?

//+------------------------------------------------------------------+
//|                                                        Valid.mq4 |
//+------------------------------------------------------------------+
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{

}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   int result = 0;
   //---
   result = OrderSend(NULL, OP_BUY, 1, Ask, 100, 0, 0, NULL, 5875, 0, clrNONE);
   //---
   result = OrderSend(NULL, OP_BUY, 1, Ask, 100, Ask - 1000 * _Point, Ask + 1000 * _Point, NULL, 5875, 0, clrNONE); 
   //---
   result = OrderSend(NULL, OP_SELL, 1, Bid, 100, 0, 0, NULL, 5875, 0, clrNONE);
   //---
   result = OrderSend(NULL, OP_SELL, 1, Bid, 100, Bid + 1000 * _Point, Bid - 1000 * _Point, NULL, 5875, 0, clrNONE); 
   //---
   return;
}
//+------------------------------------------------------------------+

Ошибка

 
Alexandr Nikolaev:

Здравствуйте. Что за беда с валидатором? Постоянно выдает ошибку "no trading operations", на EURUSD всегда, на других парах периодически. Началось того, что не мог пройти валидацию советником, постоянно выдавал эту ошибку, я давай искать проблему, убирать проверки и условия, и закончилось тем, что написал простейший советник, который на каждом тике открывает ордера, и что думаете? Ошибка никуда не делась. Вот код этого простого советника. Как быть?


В реальном мире минимальный лот не всегда равен 1.0 да и денег на торговом счёте может быть всего $2.5 ...
 
Vladimir Karputov:
В реальном мире минимальный лот не всегда равен 1.0 да и денег на торговом счёте может быть всего $2.5 ...

Дело не в лоте, я любой лот ставил, и нормализацию лота делал, да и ошибки были бы, а тут не на что не ругается, кроме как нет ни одной торговой операции.