Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1155

 
igorbel:

input datetime test                                =0;

Compilar. Com uma data zero de 1970.01.01, não é possível ajustar a hora para 00, 01 ou 02 nos ajustes.

Aqui está um exemplo de entrada do tempo nos parâmetros de entrada

 
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.");
              }
        }

Por que estou recebendo um erro 4051 no OrderSelect()? A primeira ordem aberta é fechada corretamente, na segunda ordem não selecionada. Erro=4051. Valor válido 2 no total.

 
igorbel:

Por que estou recebendo um erro 4051 no OrderSelect()? A primeira ordem aberta é fechada corretamente, na segunda ordem não selecionada. Erro=4051. Valor válido 2 no total.

Ao apagar e fechar, o laço deve ser revertido:

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

Um bicho maravilhoso ou outro.

Adicionando as entradas:

input datetime test                                =0;

Compilar. Com a data 1970.01.01.01 zero, não é possível ajustar a hora para 00, 01 ou 02 nos ajustes.

a variável de entrada não pode ser alterada no EA
variável externa - sim

 
Taras Slobodyanik:

A variável de entrada não pode ser alterada no EA
a variável externa - você pode


Não no código EA. Na janela de parâmetros de entrada, quando você anexa a EA ao gráfico.

 
Artyom Trishkin:

O ciclo deve ser revertido ao apagar e fechar:


obrigado

 

Boa tarde, por favor, ajude com estas perguntas (2):

1. Existe tal EA, salve os resultados dos testes por histórico em um arquivo excelente. Por exemplo, eu testei um EA e quero obter os parâmetros do EA, lá lucro, tipo de comércio, resultado, DIAS DA SEMANA e assim por diante.

Também gostaria de saber como fazer uma análise detalhada ou compartilhar minha experiência sobre como testar uma EA e ver se vale a pena ou se é lixo total.

2. Como posso passar uma matriz ou estrutura para uma função? Isto é, tenho muitas variáveis, adiciono estas variáveis a uma estrutura e as passo a uma função.

Então eu abro esta estrutura nesta função e obtenho as variáveis que preciso. Isto é feito para evitar "arrastar" todos os valores de variáveis para uma função (por conveniência).

Obrigado.

 
rabanik:

Boa tarde, por favor, ajude com estas perguntas (2):

1. Existe tal EA, salve os resultados dos testes por histórico em um arquivo excelente. Por exemplo, eu testei um EA e quero obter os parâmetros do EA, lá lucro, tipo de comércio, resultado, DIAS DA SEMANA e assim por diante.

Quero saber como fazer uma análise detalhada ou compartilhar minha experiência como testar uma EA e ver se vale alguma coisa ou porcaria total.

2. Como posso passar uma matriz ou estrutura para uma função? Isto é, tenho muitas variáveis, adiciono estas variáveis a uma estrutura e as passo a uma função.

Então eu abro esta estrutura nesta função e obtenho as variáveis que preciso. Isto é feito para evitar "arrastar" todos os valores de variáveis para uma função (por conveniência).

Obrigado.

A resposta está aqui.

//+------------------------------------------------------------------+
//| передача параметров по ссылке                                    |
//+------------------------------------------------------------------+
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
 

Caros senhores!

Por favor, ajude-me a entender o problema.

Eu usei um operador de interruptor (int err)

recebeu uma mensagem

int ErrorDescription()

{

Alerta("beg ErrorDescription")


switch(err)

{

caso 0: err="No error"; break;

caso 1: err="Nenhum erro, mas resultado desconhecido"; quebra;

caso 2: err="General error"; break;

caso 3: err="Parâmetros errados";

o que acontece, não consegue descobrir onde o ponto-e-vírgula deve estar? Não está claro...

 
buyanov:

Caros senhores!

Por favor, ajude-me a entender o problema.

Eu usei um operador de interruptor (int err)

recebeu uma mensagem

int ErrorDescription()

{

Alerta("beg ErrorDescription")


switch(err)

{

caso 0: err="No error"; break;

caso 1: err="Nenhum erro, mas resultado desconhecido"; quebra;

caso 2: err="General error"; break;

caso 3: err="Parâmetros errados";

o que acontece, não consegue descobrir onde o ponto-e-vírgula deve estar? Não está claro...

Você já cuidou do Alert()? Onde está ";" ?

int ErrorDescription()
  { 
   Alert("beg ErrorDescription");   // где у вас ";" ???
   switch(err)
   {    
      case 0:   err="Нет ошибок";                                                     break;
      case 1:   err="Нет ошибки, но результат неизвестен";                            break;
      case 2:   err="Общая ошибка";                                                   break;
      case 3:   err="Неправильные параметры";        
E por que você está dando à função um fragmento?
Razão: