Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 212

 
solnce600:

Obrigado por sua ajuda. Vou buscar um pouco de oxigênio e depois decifrarei seus conselhos.

Talvez você possa me dar alguns conselhos mais específicos, ou consertar um fragmento do meu código.

Então ele vai ficar no meu cérebro e eu não vou cometer os mesmos erros.

Obrigado (risos)



Para consertar qualquer peça, você tem que escrever um ToR, você está pronto para isso?
 
ALXIMIKS:

Pergunta: Qual é a última ordem fechada no histórico de pedidos quando OrderSelect é selecionada?

1) Zero "0";

2) O último "OrderHystoryTotal -1

3) Random (aleatório)

4) Depende de quando o pedido foi aberto (o que está mais próximo de 1 ou 2 então?)

Você tem certeza absoluta sobre isso, que é assim que as encomendas estão localizadas na lista? E se a história for reordenada em um momento desagradável e as ordens nela contidas começarem a ser localizadas de forma diferente? A maneira mais confiável é encontrar o extremo pelo tempo, não por uma suposição hipotética em sua cabeça...

Uma coisa é fazer um brinquedo para um testador, mas outra coisa é trabalhar no mundo real. Deixe-o acostumar-se a levar em conta todas as possíveis armadilhas que podem "de repente" acontecer...

 
ALXIMIKS:

Pergunta: Qual é a última ordem fechada no histórico de pedidos quando OrderSelect é selecionada?


https://www.mql5.com/ru/forum/131859/page4#434227
 
solnce600:

Eu ficaria muito grato se você pudesse explicar "com os dedos" em relação ao meu exemplo.

Onde minha lógica está falhada. Eu não entendo do que se trata.

Obrigado.



se(sua_primeira_condição)

{

// aqui será

// executar

// todos

// estes

// cordas, somente se

// sua_primeira_ condição_ é verdadeira

}

// esta linha será executada em qualquer caso



se(sua_condição_de_segunda_condição)

// esta cadeia só será executada se sua_condição_de_segundo_condição for verdadeira

// esta seqüência será executada em qualquer caso, mesmo que sua_primeira_precondição retorne falsa

// esta seqüência se manterá verdadeira mesmo que sua_condição_de_segundo_condição retorne falsa.


 
Vinin:

Para consertar qualquer peça, você tem que escrever um ToR, você está pronto para isso?
Ainda não.
 
artmedia70:

Você tem certeza absoluta de que é assim que as encomendas são colocadas na lista? E se, em algum momento desagradável, a história for reordenada e os mandados começarem a ser arranjados de forma diferente? A maneira mais confiável é encontrar o último pelo tempo, não por um hipotético palpite em sua cabeça...

Uma coisa é fazer um brinquedo para um testador, mas outra coisa é trabalhar no mundo real. Deixe-o acostumar-se a levar em conta todas as coisas possíveis que possam "de repente" acontecer.


Esta pergunta não é muito correta ((

Não faz muito sentido passar por todas as ordens fechadas todas as vezes antes da abertura.

O que podemos fazer? Bem, os dados da última ordem fechada devem ser salvos em um arquivo e atualizados quando o número total de ordens fechadas mudar. (Isto já representa algum tipo de economia).

E se houver 1000 ou 5000 pedidos na história? O histórico do pedido já foi limpo, ou é sempre limpo? Em caso afirmativo, por quem?

Perguntei que parte da OrderSelect conterá as últimas ordens fechadas, já que aumenta o tempo necessário para a busca quando o histórico aumenta,

Eu gostaria apenas de restringir a busca.

 
digits:

Boa tarde.

Minha estratégia leva em conta o spread, o spread é definido por uma função:

Mas como a propagação é constante no testador de estratégia, eu preciso de um emulador de propagação aleatória. Quero emular as mudanças de spread no testador na faixa de 2 a 3 pontos (4 dígitos) em 80% dos casos e mais de 3 pontos em 20% dos casos. Talvez você tenha idéias de como implementar isto, ou links onde esta idéia foi resolvida.


Provavelmente ninguém está interessado neste tópico, mas por causa de sua opinião eu postarei uma versão onde o spread é de apenas 2 ou 3 pips.

double Spread_(){
   int compare = 0;
   int MaRand = 0;
   double sp = 0.0;
   double spread = 0.0;
     if (IsTesting() == TRUE){
         MathSrand(OrderTicket() + TimeLocal() / Bid);
         MaRand = MathRand();
         MaRand = MaRand % 2;
         if(MaRand == compare){
         sp = 2.0;
         }else{
         sp = 3.0;
       }
       spread = sp;
    }else{
       RefreshRates();
       spread = MathRound((Ask - Bid) / Point);
     }
   return(spread);
}  

 
digits:

Provavelmente ninguém está interessado neste tópico, mas por causa de sua opinião eu postarei uma versão onde o spread é de apenas 2 ou 3 pontos.


Você deve mudar seu avatar. Torná-lo algo neutro. Os links são proibidos.
 

Olá pessoal, qualquer um pode dar uma resposta clara!!! Tech-análise+martin

Procurei por toda a rede e não encontrei uma resposta clara se alguém tiver alguma informação, por favor, me avise.

 
artmedia70:

se(sua_primeira_condição)

{

// haverá

// executar

// todos

// estes

// cordas, somente se

// sua_primeira_ condição_ é verdadeira

}

// esta linha será executada em qualquer caso



se(sua_condição_de_segunda_condição)

// esta cadeia só será executada se sua_condição_de_segundo_condição for verdadeira

// esta seqüência será executada em qualquer caso, mesmo que sua_primeira_precondição retorne falsa

// esta cadeia será executada em qualquer caso, mesmo que sua_condição_de_segundo_condição retorne falsa



Se eu entender quais são minhas primeira e segunda condições e o fio que sempre executa - estarei perto de resolver este mistério.

ESTA É A PRIMEIRA CONDIÇÃO

se ((ot==0))
&&(Bid===Preço)
&&(Open[1]-Close[1]>100*Point&&Open[1]-Close[1]<120*Point)
&&(High[1]-Open[1]>40*Point&&High[1]-Open[1]<60*Point)
&&(Close[1]-Low[1]>40*Point&&Close[1]-Low[1]<60*Point))

ESTA É A SEGUNDA CONDIÇÃO

if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))

ESTE É UM FIO QUE SERÁ SEMPRE EXECUTADO

retorno(0);

Certo?