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

 

Por favor, informe como melhor proceder ao otimizar uma EA:

Há muitos parâmetros que são responsáveis pelas configurações do indicador e há um parâmetro que habilita/desabilita este mesmo indicador.


Não faz absolutamente nenhum sentido otimizar as configurações do indicador se ele for desativado.

Pergunta: Como posso cortar tais excessos sem sentido?

 
ANDREY:

Obrigado pela ajuda e pelas novas informações para mim. Mas me atingiu e eu descobri uma maneira muito mais simples....
1 . enquanto abro a primeira encomenda em um candelabro de minutos, eu guardo na variável X a BAIXA desse candelabro no momento da abertura dessa primeira encomenda.
Quando um candelabro zero se abre (o próximo candelabro depois daquele em que a ordem foi aberta), eu recebo LoY[1]
. Então eu giro a lógica e concluo
1. Se X = LoY[1], então a ordem foi aberta depois do LoY do candelabro em que foi aberto
2
. Se LoY[1]< X, significa que o preço desceu mais uma vez após a abertura do pedido e foi inferior a X. Significa que o pedido foi aberto antes de LoY[] ser formado no candelabro
Tempo BAIXO Eu só precisava saber quando o pedido foi aberto . antes ou depois da formação de LoY[].
E todos os pedidos em uma vela de um minuto abrem uma acima da outra com uma diferença de 2 pips. Ou seja, quando o primeiro abriu, os outros também abriram neste castiçal.
Obrigado pela ajuda.

Mas eu tenho mais uma pergunta.
Abri um pedido em um castiçal de um minuto a preço X. Após alguns segundos no mesmo castiçal, outro pedido foi aberto a um preço de X+2 pips. Entre os dois pontos X e X+2, há um preço baixo.
Preciso descobrir o baixo. Se lidarmos com castiçais diferentes, eu usaria as funções iLow e iLowest
, mas estas funções devem especificar barras como limites de intervalo. Mas meus limites de intervalo não são barras, mas os preços X e X+2 porque há apenas uma barra.
Eu sei como encontrar o mínimo que preciso. Mas para fazer isso, preciso rastrear o valor do preço em 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 isso.
Obrigado

Escrever os carrapatos em um arquivo
 
MakarFX:
Escrever os carrapatos em um arquivo

Obrigado pelas informações que são novas para mim. Eu nunca escrevi carrapatos em um arquivo. Onde posso ler mais sobre o assunto para entender como fazê-lo ?

? Outra pergunta ..... posso escrever carrapatos com preços em uma matriz, para classificar a matriz com carrapatos e obter o carrapato com o valor do preço mínimo? Ou com a ajuda de

ArrayMinimum


Obrigado pela ajuda.

 
ANDREY:

Obrigado pelas informações que são novas para mim. Eu nunca escrevi carrapatos em um arquivo. Onde posso ler mais sobre o assunto para entender como fazê-lo ?

? Outra pergunta ..... posso escrever carrapatos com preços em uma matriz, para classificar a matriz com carrapatos e obter o carrapato com o valor do preço mínimo? Ou com a ajuda de

ArrayMinimum


Obrigado pela ajuda.

Escreva para o arquivo FileWriteString

Em geral, é difícil entender o que você precisa.

 
MakarFX:

FileWriteString

É difícil saber o que você está procurando.

Um pedido foi aberto em um castiçal de um minuto pelo preço de X. Alguns segundos depois, no mesmo castiçal, foi aberto outro pedido em X+2. Entre X e X+2, há um preço baixo.
Preciso descobrir o baixo. Se lidarmos com castiçais diferentes, eu usaria as funções iLow e iLowest
, mas estas funções devem especificar barras como limites de intervalo. Mas meus limites de intervalo não são barras, mas os preços X e X+2 porque há apenas uma barra.
Eu sei como encontrar o mínimo que preciso. Mas para fazer isso, preciso rastrear o valor do preço em 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
 
ANDREY:

Obrigado pelas informações que são novas para mim. Eu nunca escrevi carrapatos em um arquivo. Onde posso ler mais sobre o assunto para entender como fazê-lo ?

? Outra pergunta ..... posso escrever carrapatos com preços em uma matriz, para classificar a matriz com carrapatos e obter o carrapato com o valor do preço mínimo? Ou com a ajuda de

ArrayMinimum


Obrigado pela ajuda.

Isso é possível. Somente é necessário escrever no arquivo .bin por funçã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          // сколько читать 
   );
 
Alexey Viktorov:

Você pode. Você só tem que escrever no arquivo .bin com a função

e leia

Obrigado pelas novas informações para mim .... e não apenas novo .... oooooooooo novo ?:=) Eu mesmo tentarei aprender....

 
ANDREY:

Obrigado pelas novas informações para mim .... e não apenas novo .... Muito novo ?:=) Vou tentar digeri-lo eu mesmo....

O que há de novo aqui? Você abre a documentação, lê os títulos, encontra a seção "Operações de arquivo" onde é dada a descrição de diferentes funções, incluindo FileWriteArray()

Não é a primeira vez que lhe lembro que você deve ler a documentação com mais freqüência. Mesmo que você não precise dele no momento. Ao ler os títulos das seções, você entenderá o que está descrito na documentação. Você é o que mais precisa.

 
Alexey Viktorov:

O que há de novo aqui? Abra a documentação, leia os cabeçalhos, encontre a seção "Operações de arquivo" onde várias funções são descritas, incluindo FileWriteArray()

Não é a primeira vez que lhe lembro que você deve ler a documentação com mais freqüência. Mesmo que não haja nada que você precise no momento. Ao ler os títulos das seções, você entenderá o que está descrito na documentação. Você é quem precisa disso.

Obrigado pelos valiosos conselhos. No momento estou lendo a documentação somente quando estou escrevendo código e estou diante de uma pergunta para a qual não sei a resposta. Ao escrever meu código anterior, nunca encontrei a necessidade de escrever dados em arquivos, portanto, é um tópico totalmente novo para mim.
Diga-me, minha idéia não pode ser realizada de uma maneira mais simples, sem 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;
}
}

Ou seja, escrevi o preço de cada carrapato diretamente na matriz, não em um arquivo.

 
ANDREY:

Obrigado pela ajuda e pelas novas informações para mim. Mas me atingiu e eu descobri uma maneira muito mais simples....
1 . enquanto abro a primeira encomenda em um candelabro de minutos, eu guardo na variável X a BAIXA desse candelabro no momento da abertura dessa primeira encomenda.
Quando um candelabro zero se abre (o próximo candelabro depois daquele em que a ordem foi aberta), eu recebo LoY[1]
. Então eu giro a lógica e concluo
1. Se X = LoY[1], então a ordem foi aberta depois do LoY do candelabro em que foi aberto
2
. Se LoY[1]< X, significa que o preço desceu mais uma vez após a abertura do pedido e foi inferior a X. Significa que o pedido foi aberto antes da formação de LoY[] na vela dada

Você pode verificar o tempo, mas está esperando por um novo pedido e depois pedir o máximo ou mínimo de tempo.

Razão: