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

 
Artyom Trishkin:

Não está claro o que precisamos no final - alguns pensamentos estranhos.


Estas são duas perguntas em um único posto enquanto se resolve o mesmo problema :-)

1. Como retornar um erro de criação de objeto a partir de uma função que deve retornar dados

2. Existe uma maneira de percorrer as posições para um determinado símbolosem usar PositionsTotal todas as vezes?

 
psyman:


Estas são duas perguntas em um único posto enquanto se resolve o mesmo problema :-)

1. Como retornar um erro de criação de objeto a partir de uma função que deve retornar dados

2. Existe uma maneira de percorrer as posições para um determinado símbolosem usar PositionsTotal todas as vezes?

1. Por que uma função de criação de objeto que deveria apenas criar um objeto e retornar verdadeiro sobre o sucesso ou falso sobre o erro deveria retornar algo mais? Não deveria. A função deve fazer uma coisa e devolver o resultado de seu trabalho. Ou, se você quiser fazer um monstro, retorne os dados através de variáveis por referência.

2. Depende do tipo de conta que você tem.

3. Abra finalmente a ajuda - há muitas "descobertas maravilhosas" lá

 
Artyom Trishkin:

1. Por que uma função de criação de objeto que deveria apenas criar um objeto e retornar verdadeiro se for bem sucedida, ou falso se falhar, retornar qualquer outra coisa? Não deveria. Uma função deve fazer uma coisa e devolver o resultado de seu trabalho. Ou, se você quiser fazer um monstro, retorne os dados através de variáveis por referência.

2. Depende do tipo de conta que você tem.

3. Abra finalmente a ajuda - há muitas "descobertas estranhas" lá


Entendo o que você quer dizer. Obrigado, vou simplificar o código.

O tipo de conta é hedge.

Talvez as perguntas pareçam simples, mas elas aparecem após a leitura da ajuda, nem todos os detalhes são descritos ali, tenho que procurar detalhes em artigos ou aqui.

 
Roman Shiredchenko:

Camaradas - olhem o indicador para a exatidão. Há uma fórmula Valor = (Aberto[0]-SMA(P,n))/SMA(P,n))*100%.

Coloquei-o na tabela - ele calcula e traça tudo. Começo a verificar seu valor em alguma barra usando a calculadora - não coincide com a que eu desenhei...

Aqui está um exemplo, estou calculando Open 1.0178, MA(13) 1.0182 usando a fórmula ((1.0178-1.0182)/1.0182) * 100% - o resultado na calculadora é -0,0393. E o gráfico MT4 mostra -0,0929. É um erro no código ou a calculadora não calcula corretamente alguns valores lá? Por favor, ajude. Estou anexando o indicador.

Você o tem na fórmula Open[0], é assim que deve ser feito.

 
Alekseu Fedotov:

Você tem Open[0] em sua fórmula, portanto, ela é projetada dessa forma.

Bem, sim. É assim que eu vejo os preços de abertura... Há um abridor e um cloze... confuso...
 
Seric29:
Como preencher um array 4-dimensional do formato em Mas[1][2][2][2] com valores, como atribuir um valor a cada célula do array, neste caso, existe um array 2-dimensional em Arr[1][2]={3,4}; como preencher um array 4-dimensional?

Usar um conjunto de estruturas, é muitas vezes mais fácil, claro e produtivo em termos de execução de programas

struct My_St
{
   datetime tm; 
   int      mg;    
   double   tp;     
   double   sl;     
};
My_St st[];
 

Tenho várias ferramentas, etiquetadas analiticamente.

Eu quero mudar o esquema de cores deles.

Não quero fazê-lo à mão, quero fazê-lo de uma maneira inteligente.

Existe alguma maneira de fazê-lo? Por exemplo, todo o texto que tenho é preto e quero branco.

Obrigado

 
Roman Shiredchenko:
Bem, sim. É assim que eu estou olhando para os preços de abertura.... Há lá um abridor e um klose que parece... confuso...

Não sei, essa é a idéia.


Qual foi a idéia aqui,

se tomarmos o valor de qualquer barra (do histórico =5000; // o número de barras no histórico calculado)

então a abertura do mesmo bar, mas não zero,

sua fórmula(Open[0]-SMA(P,n))/SMA(P,n))*100%


Romano, boa sorte.

 
Igor Makanu:

As matrizes multidimensionais são normalmente preenchidas em loops com os valores certos - é mais difícil cometer um erro, para uma matriz tetradimensional deveria ser algo assim, mas eu poderia estar errado:

Não, você não está errado. Meu erro foi escrevê-lo assim.

A[1][2][4][2] = {{{1,2}, {0,2}, {1,2}, {1,2}},{{1,2}, {1,2}, {1,2}, {1,2}}}, 

Eu deveria tê-lo escrito assim.

A[1][2][4][2] = {{{{1,2}, {0,2}, {1,2}, {1,2}},{{1,2}, {1,2}, {1,2}, {1,2}}}}, 

Há 4 colchetes ao redor das bordas e eu tenho 3, e a leitura é a seguinte.

A[1] - означает 1ну строку, один ярус
A[1][2] 2ка в следующих скобочках говорит о том что мы имеем дело с 2мя 3ёх-мерными массивами, другими словами, это как 2 параллельных мира
A[1][2][4][2] - последующие [4][2] описываю 3ёхмерный массив, т.е. каждый из массивов имеет 4 столбца, и в каждом по 2 значения вот пример
{{1,2}, {0,2}, {1,2}, {1,2}} 4 столбца в каждом по значения

Em geral, obrigado, se eu viver o suficiente, vou trabalhar com ele.

 
Seric29:

Quando você passa uma estrutura para uma função, você tem que escrever uma função para cada estrutura, então a função é muito estática e carece de versatilidade. Mas as estruturas têm um lado positivo, você pode combinar conjuntos de diferentes tipos em estruturas e lê-lo como umconjunto multidimensional inteiro, mas infelizmente perdi o link para este site onde foi mostrado como fazer isso. Para dizer a verdade não sou muito bom com estruturas, muito menos texto se a declaração global de variáveis do que um ponto de acesso aos campos da estrutura, também não entendo as classes, reli o material muitas vezes no último pouco mais compreendido, mas expliquei frases muito complicadas e incômodas, muito científicas usadas na explicação, então basicamente não entendi muito do material, e o que exatamente objetos dinâmicos podem ser feitos a mim também.

Razão: