Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 782

 
Seric29:

Eu tenho uma idéia para escrever uma função que vai pegar e deslocar uma matriz. A questão é como fazer esta função para que ela mesma determine que tipo de matriz é unidimensional ou bidimensional, para que eu não tenha que especificar nos argumentos toda vez que a matriz é bidimensional ou regular. Ao mesmo tempo, quero aplicar um modelo, para que não tenha que especificar o tipo de matriz.

Como posso fazer para que não tenha de especificar que tipo de matriz?

Faça sobrecarga:

template<typename T>
void MoveArray(T &array1[][]) // 2ух мерный.
{
// тело
}
template<typename T>
void MoveArray(T &array1[])// одномерный.
{
// тело
}
 
Ilya Prozumentov:

Sobrecarga a fazer:

A segunda dimensão pode ser dinâmica?
 
Alexey Viktorov:
A segunda dimensão pode ser dinâmica?

Não é dinâmico, é apenas escrito como um argumento recebido, basta colocar colchetes.

 

Como posso implementar em um loop (ou de alguma outra forma) a enumeração de possíveis variantes de condição?


Por exemplo, existem 2 indicadores MA e MACD, ou seja, eles representam 3 possíveis variantes de condição:

1 opção - if(iMA ...) {...};

2º cenário - if(iMACD ...) {...};

variante 3 - if(iMA ... iMACD ...) {...};


É fácil combinar parâmetros de entrada, mas como posso combinar condições? Isto é especialmente útil se houver mais de 2 indicadores ou fórmulas


Dê links para exemplos, se disponíveis

 
Alexandr Sokolov:

Como implementar em um loop (ou de outra forma) a enumeração de possíveis variantes de condições?

Se eu entendi corretamente, a resposta pode ser encontrada no tópico.

 

Olá novamente, novamente eu não entendo algo óbvio.

Afinal de contas, como passar uma matriz para uma função?

double b[5]={1,2,3,4,5};
void OnStart()
  {
//---
Func(b[]);

  }
//+------------------------------------------------------------------+
void Func(double &a[])
      {
         Alert(a[3]);
      }

Erros:
']' - expressão esperada
b' - conversão de parâmetros não permitida

Suponhamos que eu saiba como eliminar o primeiro erro:

Func(b[3]);

Mas então o que, apenas o terceiro elemento será passado? Isso não faz sentido.
Como posso passar a matriz como um todo?
Obrigado.

 
Mikhail Sobolev:

Olá novamente, novamente eu não entendo algo óbvio.

Afinal de contas, como passar uma matriz para uma função?

Erros:
']' - expressão esperada
b' - conversão de parâmetros não permitida

Suponhamos que eu saiba como eliminar o primeiro erro:

Mas então o que, apenas o terceiro elemento será passado? Isso não faz sentido.
Como posso passar a matriz como um todo?
Obrigado.

Func(b);
 
int OnCalculate (const int rates_total,      // размер массива price[] 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const int begin,            // откуда начинаются значимые данные 
                 const double& price[]       // массив для расчета 
                );

Por favor, explique a mecânica do início variável


Este link parece ter informaçõeshttps://www.mql5.com/ru/docs/basis/function/events, mas ou eu não o entendo ou ainda não o encontrei. Não consigo entender qual é o valor padrão no início e como ele muda à medida que os ciclos nos indicadores passam


Por exemplo, sei que return() dentro da função OnCalculate() atribui o valor de retorno à variável pré-calculada e será usado nos cálculos na próxima chamada de OnCalculate(), ou seja, na próxima chamada de OnCalculate()


Por favor, descreva nas mesmas palavras simples a mecânica da variável começa dentro da função OnCalculate()

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 

Boa tarde.

Você pode me dizer por que a função OnTick não escreve dados no arquivo usando este código?

//====== Escrever dados no arquivo =========

h1=FileOpen("test_bar.csv",FILE_CSV|FILE_WRITE|FILE_READ",");

FileSeek(h1, 0, SEEK_END);

FileWrite(h1, TimeToStr(Time[1],TIME_DATE|TIME_MINUTES),i,Open[1],High[1],Low[1],Close[1], Parabola57Up, ");

FileClose(h1);


E isto durante os testes de história. Quando o Expert Advisor está trabalhando on-line, ele continua gravando.

Obrigado

 
Alexandr Sokolov:

Como posso implementar em um loop (ou algo mais) a enumeração de possíveis variantes de condição?


Por exemplo, existem 2 indicadores MA e MACD, ou seja, eles representam 3 possíveis variantes de condição:

1 opção - if(iMA ...) {...};

2º cenário - if(iMACD ...) {...};

variante 3 - if(iMA ... iMACD ...) {...};


É fácil combinar parâmetros de entrada, mas como posso combinar condições? Isto é especialmente útil se houver mais de 2 indicadores ou fórmulas


Dê-me alguns links para exemplos, se você os tiver.

Quero fazer uma auto-optimização, mas não apenas por parâmetros de entrada de indicadores. Entendo

Mas como fazerum loopingde condições? Por exemplo, existem 3 indicadores (não consideramos a seleção de parâmetros de entrada no laço para simplificar) e são 7 combinações possíveis de condições/combinações

Por exemplo, as três primeiras condições têm um indicador
1) if(indicador #1 ...) {...};
2) if(indicador #2 ...) {...};
3) if(indicador #3......) {...} {...};

As três segundas condições por dois indicadores
4) if(#1 ... && #2 ...) {...};
5) if(#1 ... && #3 ...) {...};
6) if(#2 ... && #3 ...) {...};

E na última sétima condição todos os três indicadores disponíveis
7) if(#1 ... && #2 ... && #3 ...) { ... };

E se também for possível, seria bom fazer um loop na enumeração das condições lógicas. Por exemplo, não escreva && ||| > < == e assim por diante, mas faça um loop

. Seria bom se pudéssemos escrever todas as variantes possíveis manualmente e a EA combinaria e verificaria todas as variantes possíveis dos parâmetros de entrada, indicadores combinados ou individuais e condições lógicas.

Razão: