Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1155

 
igorbel:

input datetime test                                =0;

Компилируем. При нулевой дате 1970.01.01 в настройках невозможно поставить час 00, 01 или 02.

Вот на этой странице пример ввода времени во входных параметрах

 
int    total=OrdersTotal();      
for(int i=0;i<total;i++)
        {
         Print("i=",i);
         if(!OrderSelect(i,SELECT_BY_POS))
           {
            Print("order not selected. Error=",GetLastError());
            continue;
           }
         if(OrderMagicNumber()!=magic_number)
           {
            Print("magic number not correct.");
            continue;
           }
         if(OrderSymbol()!=Symbol())
           {
            Print("symbol not correct.");
            continue;
           }
         if(OrderType()!=OP_SELL)
           {
            Print("order type not correct.");
            continue;
           }
         if(OrderCloseTime()>0)
           {
            Print("order close time not correct.");
            continue;
           }
         if(!OrderClose(ticket,lots,price,slippage,clrClose))
              {
               Print("order Sell with ticket=",ticket,", was not closed. Error=",GetLastError());
              }
            else
              {               
               Print("order Sell with ticket=",ticket,", was closed.");
              }
        }

Почему получаю ошибку 4051 в OrderSelect()? Первый открытый ордер правильно закрывается, на втором order not selected. Error=4051. В total правлиьное значение 2.

 
igorbel:

Почему получаю ошибку 4051 в OrderSelect()? Первый открытый ордер правильно закрывается, на втором order not selected. Error=4051. В total правлиьное значение 2.

При удалении и закрытии цикл должен быть обратным:

for(int i=total-1;i>=0;i--)
 
igorbel:

Какой-то дивный баг что ли.

Добавляем во входных:

input datetime test                                =0;

Компилируем. При нулевой дате 1970.01.01 в настройках невозможно поставить час 00, 01 или 02.

переменную input нельзя изменять в советнике
переменную extern — можно

 
Taras Slobodyanik:

переменную input нельзя изменять в советнике
переменную extern — можно


Не в коде советника. В окне входных параметров, когда цепляешь советника на график. 

 
Artyom Trishkin:

При удалении и закрытии цикл должен быть обратным:


спасибо

 

Добрый день, прошу помочь с такими вопросами (2-мя):

1. Есть ли такой советник, сохранял результаты тестирования по истории в ексель файл. К примеру, я протестировал советник и хочу получить параметры советника, там прибыль, тип сделки, результат, ДНИ НЕДЕЛИ и прочее.

Или дайте пожалуйста совет как провести детальный анализ или поделитесь пожалуйста опытом, как вы тестируете советники и понимаете, что он что то стоит или полное г.

2. Как мне передавать в функцию массив или структуру? Т.е. у меня есть множество переменных, я эти переменные добавляю в какую либо структуру и передаю в функцию.

Затем в этой функции открываю эту структуру и получаю нужные мне переменные.   Делаю это для того, чтобы не "таскать" в какую либо функцию все значения переменных (для удобства).

Спасибо.

 
rabanik:

Добрый день, прошу помочь с такими вопросами (2-мя):

1. Есть ли такой советник, сохранял результаты тестирования по истории в ексель файл. К примеру, я протестировал советник и хочу получить параметры советника, там прибыль, тип сделки, результат, ДНИ НЕДЕЛИ и прочее.

Или дайте пожалуйста совет как провести детальный анализ или поделитесь пожалуйста опытом, как вы тестируете советники и понимаете, что он что то стоит или полное г.

2. Как мне передавать в функцию массив или структуру? Т.е. у меня есть множество переменных, я эти переменные добавляю в какую либо структуру и передаю в функцию.

Затем в этой функции открываю эту структуру и получаю нужные мне переменные.   Делаю это для того, чтобы не "таскать" в какую либо функцию все значения переменных (для удобства).

Спасибо.

Ответ здесь.

//+------------------------------------------------------------------+
//| передача параметров по ссылке                                    |
//+------------------------------------------------------------------+
double SecondMethod(int &i,int &j)
  {
   double res;
//---
   i*=2;
   j/=2;
   res=i+j;
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int a=14,b=8;
   Print("a и b перед вызовом:",a," ",b);
   double d=SecondMethod(a,b);
   Print("a и b после вызова:",a," ",b);
  }
//+------------------------------------------------------------------+
//--- результат выполнения скрипта
//  a и b перед вызовом: 14 8
//  a и b после вызова: 28 4
Передача параметров - Функции - Основы языка - Справочник MQL4
Передача параметров - Функции - Основы языка - Справочник MQL4
  • docs.mql4.com
Передача параметров - Функции - Основы языка - Справочник MQL4
 

Уважаемые господа!

помогите понять,в чем дело.

использовал оператор switch(int err)

получил сообщение semicolon expected

int ErrorDescription()

  { 

 Alert("beg ErrorDescription")


   switch(err)

   {    

      case 0:   err="Нет ошибок";                                                     break;

      case 1:   err="Нет ошибки, но результат неизвестен";                            break;

      case 2:   err="Общая ошибка";                                                   break;

      case 3:   err="Неправильные параметры";        

в чем дело,не могу понять где semicolon должен быть? Непонятно...

 
buyanov:

Уважаемые господа!

помогите понять,в чем дело.

использовал оператор switch(int err)

получил сообщение semicolon expected

int ErrorDescription()

  { 

 Alert("beg ErrorDescription")


   switch(err)

   {    

      case 0:   err="Нет ошибок";                                                     break;

      case 1:   err="Нет ошибки, но результат неизвестен";                            break;

      case 2:   err="Общая ошибка";                                                   break;

      case 3:   err="Неправильные параметры";        

в чем дело,не могу понять где semicolon должен быть? Непонятно...

А после Alert() смотрели? Где там ";" ?

int ErrorDescription()
  { 
   Alert("beg ErrorDescription");   // где у вас ";" ???
   switch(err)
   {    
      case 0:   err="Нет ошибок";                                                     break;
      case 1:   err="Нет ошибки, но результат неизвестен";                            break;
      case 2:   err="Общая ошибка";                                                   break;
      case 3:   err="Неправильные параметры";        
И почему даёте огрызок функции?
Причина обращения: