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

 
ANDREY:

Ainda bem que pude ser de alguma ajuda :=) :=) :=)

Agora sobre o meu código, que provavelmente é tão ruim que é desagradável de espreitar por aí. Mas me diga pelo menos qual seria a vantagem do meu código, se eu tivesse escrito um único array (com valores de preços) deste código em um arquivo e então o programa o leria deste arquivo e usaria seus valores em cálculos posteriores, com um array de apenas 60 elementos. O que exatamente em meu código seria ótimo?
Obrigado por sua ajuda.

Não se trata da qualidade do código. Não olho para o código de nenhuma outra pessoa. Exceto pelo que eu preciso ou na agonia de um ataque de caridade, :=))) mas isso acontece cada vez menos...

Se você quiser, pode descrever em palavras o que é necessário como resultado e o que você fez por ele. Então ficará claro o rumo que o problema está tomando na direção certa.

 
Alexey Viktorov:

ou na agonia de um ataque de caridade, :=))) ....

Li que as recaídas geralmente ocorrem no início da primavera. Gostaria que sua remissão terminasse mais cedo :=)))))

E gostaria que seus ataques fossem tão freqüentes quanto possível..... :=))) :=)))

 
ANDREY:

Obrigado pela dica. Já comecei a ler a seção FILE OPERATIONS do livro didático de Kovalev. De fato... algo está começando a ficar claro. Entendi que todos os EAs que testei li arquivos de texto com preços de barra (embora não criados por meu programa) com extensão .cvv no diretório de terminais do Tester.
Em outras palavras, as informações (dados) de qualquer programa são escritas no arquivo e lêem esses dados do arquivo, também por qualquer programa. Parece-me que os arquivos armazenam uma grande quantidade de dados que não é razoável armazenar no programa. Algo como um arquivo mqh.
Se você quiser me explicar o que significa a frase de Alexey Victorov : "....Você quer escrever .csv e ler array....." do post com referência ao meu código do post
. Eu pensei que ele se referia ao arquivo de texto .cvv, com preços de barras do diretório de testes. Mas o que ele quer dizer exatamente, eu ainda não entendo. Não estou escrevendo estes arquivos .cvv, mas o programa do revendedor Alpari... Como o programa lê de uma matriz - em geral entendo um pouco ... Ele acessa uma célula de um array por seu endereço, entra na célula e acessa o valor da célula (ou seja, lê-a). Como um programa pode ser lido em um array em vez de fora dele? Esta é uma contradição insolúvel, ...., como me parece, na minha opinião de leigo. Eu acho, por alguma razão, que em um array você só pode escrever alguns valores. E você só pode ler a partir de uma matriz.

Escrever um array em binário não tem Kovalev. O livro didático é de 2009. Havia apenas arquivos de lixo. E a matriz para o arquivo de lixo apareceu mais tarde. Os arquivos de lixeiras são escritos e lidos mais rapidamente. Eles não têm linhas de alimentação. Mas não são legíveis para os seres humanos).

 
Valeriy Yastremskiy:

Kovalev não tem um registro de matriz bifilar. O livro didático é de 2009. Só havia lá arquivos de lixo. E o arquivo array to bin apareceu mais tarde. Os arquivos de lixeiras são escritos e lidos mais rapidamente. Eles não têm linhas de alimentação. Mas não são legíveis para os seres humanos).

Muito obrigado pela informação, que é nova para mim. E eu entendo 50%.... Estudarei este tema em detalhes, se tenho certeza de que preciso dele em meu estágio atual de desenvolvimento.
No momento eu me concentrei no meu pequeno código , tentando encontrar o preço mínimo entre 2 ordens adjacentes abertas em uma vela de um minuto com uma diferença de 2 pontos, usando o mínimo de tempo e outros recursos do computador. Para isso, criei uma matriz. Algumas pessoas tentam me convencer aqui que esta matriz deve ser escrita em um arquivo usando uma função e então outra função deve ser usada para obter dados do arquivo (ou seja, da matriz) para cálculos adicionais.

Mas onde seria uma vantagem se eu escrevesse um único array (com valores de preços) deste código para um arquivo, e então o programa o lesse deste arquivo e usasse seus valores nos cálculos subseqüentes? E o array conteria apenas 60 elementos. O que seria ótimo no meu código, exatamente?

Naturalmente, no decorrer dos testes, Haverá muitas dessas ordens dentro dos minutos de velas, entre as quais teremos de calcular o mínimo, haverá muitos deles.. Meu código é apenas uma ilustração de uma idéia que veio até mim.
Alexey Viktorov não pode responder a esta pergunta porque ele ainda não teve um ataque de caridade .... e ele não teve a agonia e as convulsões em relação a isso :=).
Talvez você já tenha todos os pré-requisitos para me ajudar a seguir em frente.


Obrigado por sua ajuda.

 
ANDREY:

é difícil entender o criador do Graal. É possível passar todos os cálculos para o Indicador e obter um sinal para o Expert Advisor.

 
ANDREY:

Muito obrigado pela informação que é nova para mim. E eu entendi 50% disso.... E se eu tiver certeza de que preciso disso nesta fase do meu desenvolvimento, estudarei este tópico minuciosamente.
No momento eu me concentrei em meu código , tentando encontrar o preço mínimo entre 2 ordens adjacentes abertas em uma vela de um minuto com 2 pontos de diferença, usando o mínimo de tempo e outros recursos do computador. Para isso, criei uma matriz. Algumas pessoas tentam me convencer aqui que esta matriz deve ser escrita em um arquivo usando uma função e então outra função deve ser usada para obter dados do arquivo (ou seja, da matriz) para cálculos adicionais.

Mas onde seria uma vantagem se eu escrevesse um único array (com valores de preços) deste código para um arquivo, e então o programa o lesse deste arquivo e usasse seus valores nos cálculos subseqüentes? E o array conteria apenas 60 elementos. O que seria ótimo no meu código, exatamente?

Naturalmente, durante os testes, Haverá muitas dessas ordens dentro dos candelabros minúsculos entre os quais teremos que calcular o mínimo, haverá muitos deles.. Meu código é apenas uma ilustração de uma idéia que veio até mim.
Alexei Viktorov não pode responder a esta pergunta, porque ainda não teve um ataque beneficente .... e ele não teve a agonia e as convulsões em relação a isso :=).
Talvez você já tenha todos os pré-requisitos para me ajudar a seguir em frente.


Obrigado por sua ajuda.

Eu não entendo um pouco a lógica. Por que você precisaria escrever alguns dados em uma matriz? Você pode escrevê-los em variáveis. Uma matriz é quando há muitas variáveis do mesmo tipo. E se houver menos de 5 deles, você pode armazená-los em variáveis. Por que os dados armazenados no array devem ser escritos em um arquivo que possa ser lido posteriormente no mesmo Expert Advisor? Eles estão disponíveis de qualquer forma. Eles estão escritos no arquivo para troca entre diferentes Conselheiros Especialistas ou para processamento posterior, não neste EA. Além disso, a matriz é sempre global, se não me engano.

 
ANDREY:

Muito obrigado pela informação, que é nova para mim. E eu entendi 50% disso.... E se eu tiver certeza de que preciso disso nesta fase do meu desenvolvimento, estudarei este tópico minuciosamente.
No momento eu me concentrei em meu código , tentando encontrar o preço mínimo entre 2 ordens adjacentes abertas em uma vela de um minuto com 2 pontos de diferença, usando o mínimo de tempo e outros recursos do computador. Para isso, criei uma matriz. Algumas pessoas tentam me convencer aqui que esta matriz deve ser escrita em um arquivo usando uma função e então outra função deve ser usada para obter dados do arquivo (ou seja, da matriz) para cálculos adicionais.

Mas onde seria uma vantagem se eu escrevesse um único array (com valores de preços) deste código para um arquivo, e então o programa o lesse deste arquivo e usasse seus valores nos cálculos subseqüentes? E o array conteria apenas 60 elementos. O que seria ótimo no meu código, exatamente?

Naturalmente, durante os testes, Haverá muitas dessas ordens dentro dos candelabros minúsculos entre os quais teremos de calcular o mínimo, haverá muitos deles.. Meu código é apenas uma ilustração de uma idéia que veio até mim.
Alexei Viktorov não pode responder a esta pergunta, porque ainda não teve um ataque beneficente .... e ele não teve a agonia e as convulsões em relação a isso :=).
Talvez você já tenha todos os pré-requisitos para me ajudar a seguir em frente.


Obrigado pela ajuda.

O início é tão difícil de responder em detalhes... Mas vou tentar ser esperto mesmo assim...

Se bem me lembro, você tem que determinar quando o Baixo foi formado na vela em que a ordem foi aberta. Quando este castiçal é atual, não há problema: colocamos o menor dos dois números na variável e fazemos isso até que o castiçal feche. Mas se precisamos determiná-la quando esta vela já é o 10º, então já é um problema para mql4. É muito fácil fazê-lo em mql5, basta copiar "de e para" os tiques de tempo selecionados, e a matriz conterá tudo que você precisa. Mas para mql4, foi sugerido escrever os ticks em um arquivo, para que mais tarde você possa obter estes ticks e usar este array para determinar se o Low daquele castiçal é inferior ao valor mínimo no array, isto significa que Low foi antes da ordem ser aberta. Se forem iguais, significa que Low foi formado depois que a ordem foi aberta.

Entretanto... se o EA funcionar, basta determiná-lo em uma variável, como está escrito aqui; há uma função para este fim que você pode ler na documentação na seção Funções Matemáticas.

 
Alexey Viktorov:

O início é tão dist ante que é difícil responder em detalhes... Mas vou tentar ser esperto...

Se bem me lembro, você tem que determinar quando o Baixo da vela foi formado, sobre o qual a ordem foi aberta. Quando este castiçal é atual, não há problema: colocamos o menor dos dois números na variável e fazemos isso até que o castiçal feche. Mas se precisamos determiná-la quando esta vela já é o 10º, então já é um problema para mql4. É muito fácil fazê-lo em mql5, basta copiar "de e para" os tiques de tempo selecionados, e a matriz conterá tudo o que você precisa. Mas para mql4, foi sugerido que você escrevesse os carrapatos em um arquivo, para que mais tarde você possa obter estes carrapatos e usar este array para determinar se o Low daquela vela é inferior ao valor mínimo no array, isto significa que Low foi antes da ordem ser aberta. Se forem iguais, significa que Low foi formado depois que a ordem foi aberta.

Entretanto... se a EA funcionar, basta armazená-la em uma variável, como é descrito aqui, há uma função para este fim que você pode ler na documentação na seção Funções Matemáticas.

Muito obrigado pelas novas informações para mim.... especialmente sobre as capacidades mql4 em comparação com mql5 neste caso. Entretanto, por estranho que pareça, a tarefa que você descreve, eu mesmo a resolvi e a maneira como ela foi resolvida me surpreendeu com sua originalidade e otimalidade.
Depois disso enfrentei outro problema similar
me disseram para escrever carrapatos em um arquivo,

Em vez de escrever carrapatos em um arquivo, criei um código, que resolve minha tarefa sem escrever carrapatos em um arquivoUsando este código, tento encontrar o preço mínimo entre 2 ordens adjacentes abertas em uma vela de um minuto com 2 pontos de diferença usando omenor tempo e outros recursos do computador. Naturalmente, haverá muitas dessas ordensdentro de castiçais de um minuto entre os quais teremos que calcular o mínimo. Isto é apenas uma ilustração da minha idéia.

E agora estou interessado na resposta à pergunta Qual seria a vantagem do meu código se eu tivesse escrito carrapatos em um arquivo, como você me aconselhou?O que exatamente seria ótimo no meu código?


Sobre esta questão foi esclarecida por Valeriy Yastremskiy Mas eu gostaria de ouvir o feedback de alguém que me aconselhou a colocar carrapatos em um arquivo.
Obrigado pela ajuda.

 
Valeriy Yastremskiy:

A lógica é um pouco obscura. Por que escrever pares de dados em uma matriz. você pode escrevê-los em variáveis. Uma matriz é quando há muitas variáveis do mesmo tipo. E se houver menos de 5 deles, você pode armazená-los em variáveis. Por que os dados armazenados no array devem ser escritos em um arquivo que possa ser lido posteriormente no mesmo Expert Advisor? Eles estão disponíveis de qualquer forma. Eles são escritos no arquivo para o intercâmbio entre diferentes Conselheiros Especialistas ou para processamento posterior, não nesta EA. Além disso, a matriz é sempre global, se não me engano.

Obrigado pela dica. Concordo, às vezes pode haver 5 ou menos carrapatos. Mas em uma vela de um minuto pode haver muito mais carrapatos do que segundos e seu número entre ordens adjacentes também pode ser muito maior do que 5.
Fiquei particularmente satisfeito que meus pensamentos coincidiram com o vermelho destacado. Mas eu estava inseguro sobre eles como camaradas mais experientes reforçava minha incerteza.

 
ANDREY:

Muito obrigado pelas novas informações para mim.... especialmente sobre as capacidades mql4 em comparação com mql5 neste caso. No entanto, por estranho que pareça, eu mesmo resolvi o problema descrito acima e fiquei surpreso com sua originalidade e otimalidade .
Depois me deparei com outro problema semelhante formulado neste posto.

cada carrapato. Também sei como fazê-lo com um ciclo no momento de X+2. E como fazê-lo tudo de uma só vez no momento de X+2 como no caso de iLow eiLowest.
Eu ficaria muito grato se você pudesse me ensinar como fazer isto.
Obrigado


Fui aconselhado a registrar carrapatos em um arquivo

Fórum sobre comércio, sistemas comerciais automatizados e teste de estratégias comerciais.

Qualquer pergunta de novatos sobre MQL4 e MQL5, ajuda e discussão de algoritmos e códigos

Alexey Viktorov, 2021.04.09 18:33

Você pode. Você deve escrever em seu arquivo .bin usando o

uint  FileWriteArray( 
   int          file_handle,         // handle файла 
   const void&  array[],             // массив 
   int          start=0,             // начальный индекс в массиве 
   int          count=WHOLE_ARRAY    // количество элементов 
   );

e leia

uint  FileReadArray( 
   int    file_handle,               // handle файла 
   void&  array[],                   // массив для записи 
   int    start=0,                   // стартовая позиция для записи в массив 
   int    count=WHOLE_ARRAY          // сколько читать 
   );

Eu criei um código que resolve meu problema sem escrever carrapatos em um arquivo em vez de escrevê-los em um arquivo

escrevê-la em um arquivo? Como no meu código. Isto não é um código de trabalho, mas para ilustrar minha idéia de como encontrar o mínimo entre duas ordens adjacentes abertas em um castiçal de um minuto
Obrigado pela ajuda.

double P[60],Z;
int Tick,x,x1,G,G1,G2,T;

void OnTick()
{
Tick++;

if (OrdersTotal()==1&&Tick<2189)
{
P[x]=Bid;
Print("------------------------P[x]=Bid------------------------=", DoubleToString(P[x],5), "  x ",  x);
x++;
}
if (OrdersTotal()==2&&Tick==2189)
{
x1=x;
x=0;
ArraySort(P,WHOLE_ARRAY,0,MODE_ASCEND);
T=(60-x1);
Print("------------------------МИНИМУМ=------------------------=",DoubleToString(P[T],5), "  Tick ",  Tick, "  x1 ",  x);
}

if (Tick==2176||Tick==2188)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,Ask+300*Point,Ask-100*Point,"300",0);
G2=G;
G=Tick;
}
}

Isso significa que escrevi os preços de cada carrapato diretamente em uma matriz, não em um arquivo.


Comeste código, tento encontrar o preço mínimo entre duas ordens adjacentes abertas em uma vela de um minuto com uma diferença de 2 pontosusando o menor tempo e outros recursos computacionais. Naturalmente, haverá muitas dessas ordensdentro de castiçais de um minuto entre os quais teremos que calcular o mínimo. Isto é apenas uma ilustração da minha idéia.

E agora estou interessado na resposta à pergunta Qual seria a vantagem do meu código se eu tivesse escrito carrapatos em um arquivo, como você me aconselhou?O que exatamente seria ótimo no meu código?


Sobre esta questão foi esclarecida por Valeriy Yastremskiy Mas eu gostaria de ouvir o feedback de alguém que me aconselhou a colocar carrapatos em um arquivo.
Obrigado pela ajuda.

A fim de não se esforçar para ajudar, em particular eu, é melhor colocar a mensagem "no seu bolso" e colá-la em vez de ligá-la a ela.

Agora sobre este problema: o pedido nº 1 abriu... Neste ponto, Low é claro que é mais baixo do que o preço aberto do pedido. Bem, vamos encarar...

O pedido número 2 é aberto e devemos controlar o preço em........., usando a função matemática fmin() escrevemos novamente na variável o valor antes do fechamento da vela. Uma vez fechada a vela, deixamos de controlar os preços, não precisamos mais dela. O valor obtido será o preço mínimo no intervalo de tempo entre a abertura do segundo pedido e o fechamento da vela. Ou talvez eu esteja errado...

Razão: