[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 588

 

Diga-me onde encontrar programadores que escrevem EAs!

 

Você também tem que controlar o tempo de abertura do bar:

datetime bartime;

int init()
{
   ...
   bartime=0;
   ...
}

int start
{
   ...
   if(bartime<Time[0]) //если пришел новый бар
   {
       //делаем то что нужно
   }
   ...
   bartime=Time[0]; //обязательно запомнили обсчитанный бар
}

 
supernovik:

Diga-me onde encontrar programadores que escrevem EAs!

https://www.mql5.com/ru/forum/116708
 
alsu:
...

3. preencha a matriz para(i=1;i<=PerB;i++) MyATR[i-1]=(High[i]-Low[i])/Low[i]; índice i começa a partir de 1, pois só precisamos de barras fechadas

...

confira, talvez seja apenas um erro

Ok obrigado, vou tentar pela manhã (minha cabeça não está boa agora), mas neste caso (i=1) poderei me referir ao preço Open [0] da barra atual?

P. S. Ok, acho que tenho a essência - vou tentar à tarde.

 
Craft:
OK, vou tentar, mas neste caso (i=1) poderei me referir ao preço Aberto da barra atual Open[0]&
É claro que você pode, nada pode impedi-lo. De modo geral, na MQL é preciso tratar os índices de array com muito cuidado e verificá-los constantemente quanto à exatidão, pois, dada a falta de ferramentas de depuração, a busca de um possível erro pode levar semanas. Além disso, muitas vezes leva a "pseudo-grails" - programas que inadvertidamente espreitam 1 barra no futuro e, portanto, dão resultados excepcionais durante os testes, mas falham em tempo real.
 

Não resistiu até a manhã. Ficou um pouco melhor, mas não foi possível evitar o florescimento do pedido. Como posso fazer um único pedido na condição exigida? Você mencionou: Não, isso não funcionaria. Somente através da análise do histórico de pedidos - como podemos fazer isso ou o que mais é adequado?

 
alsu:

Você também tem que verificar o tempo de abertura do bar:


Alsu, isso estava se referindo ao meu exemplo?
 
Por favor, avise-me, estou lutando com a escrita da EA. Preciso abrir um novo pedido fechando o antigo em tp ou sl.



Eu ficaria feliz em ajudar!
 
Top2n:
Por favor, diga-me, estou tentando escrever um EA. Eu deveria abrir um novo pedido quando fechar o antigo por tp ou sl.
Eu agradeceria!

Você precisa inserir (copiar) separadamente no código (fora do Start) f-i que indica como a última posição foi fechada.

Estes estão disponíveis em: https: //www.mql5.com/ru/forum/107476

pg. 21

A função éCloseLastPosByTake().
Esta função retorna uma bandeira para fechar a última posição por Take. A bandeira é hasteada - Verdadeiro - TakeProfit foi acionada. Bandeira arriada - Falso - a posição foi fechada por outro motivo

A função isCloseLastPosByStop(). Esta função retorna uma bandeira para fechar a última posição por meio de uma parada. A bandeira está hasteada - Verdadeiro - StopLoss acionado. Bandeira arriada - Falso - a posição foi fechada por outro motivo

-------------------

Muito provavelmente, isto também exigirá um tipo f:

Função GetTypeLastClosePos(). Página 20

Esta função retorna o tipo da última posição fechada ou -1

=================================

Então, no caso mais simples, o - As condições de abertura serão :

//--------------Для бай-сделок-------------

if ( isCloseLastPosByTake(NULL, OP_BUY, -1)==verdadeiro || isCloseLastPosByStop(NULL, OP_BUY, -1)==verdadeiro) {

// se a última posição de compra tiver fechado na tomada ou parada, uma nova posição de compra será aberta

/------------

O mesmo para as negociações de venda ....

 

Por favor, diga-me como os feiticeiros experientes distinguem um EA de um indicador e um roteiro (sem "dissecá-lo" no editor). Tenho tudo misturado em minhas pastas. A pasta EA está cheia de indicadores não funcionais e a pasta de indicadores está cheia de scripts não funcionais. Então eu (só por precaução) copio o novo indicador EA em ambas as pastas.

Acho que este é um grande erro cometido pelos criadores da linguagem. A extensão do arquivo deve ser diferente.

O que os aksakals têm a dizer?