Mercado: sem operações comerciais - página 7

 
Vitaly Muzichenko:

Construir uma função normal com muito retorno, não uma verificação verdadeiro/falso

E ele gosta de fazer verificações extras. Você tem que verificar se é um testador de estratégia, então verifique adicionalmente o que a funçãocheckVolumeValue devolveu...

 
Evgeny Belyaev:

Você está lendo diagonalmente?

Alguma outra pergunta para mim?

Onde está seu graal quando vemos o sinal?

Você não jogou seus EAs no mercado, a julgar pela composição dos produtos.

então...

olá

;)

 
Vladislav Andruschenko:


Bem, não deve haver problema com isso, então.

a mesma multimoeda, passa no teste.

E nenhuma operação comercial pode ser do humor do testador :-) - Não sei se ele está de mau humor (ou seja, refrescante, dormindo, tendo um dia de folga) e não faz nenhuma troca.

Basta tentar um spread diferente ou esperar um dia e tudo volta a saltar no clima.

Estou verificando sem nenhum problema, as funções estão funcionando perfeitamente. Removido o cheque para o lote mínimo, era para que, se o mínimo permitia mais de 0,01, então não houvesse comércio.
No validador, eu vi muito mais de 0,01, portanto não negociei.

 
Renat Akhtyamov:

Você não jogou o EA no mercado, a julgar pela composição dos produtos

então...

olá

;)

Bem, eu fiz, então isso é outro aborrecimento. Você quer o link ou quer encontrá-lo você mesmo?

Onde está seu graal quando vemos o sinal?

Eu até fiz um trabalho para um homem.


 

Olhe, eu tenho mochos primeiro o lote é retirado das configurações, o que significa que ele só pode ser inferior ao permitido se o usuário cometeu um erro ao entrar no lote.

Por exemplo, o usuário fez um erro de digitação e escreveu 0,005 enquanto queria negociar 0,05 lote - se você verificar, as corujas vão negociar 0,01 lote (assumindo que 0,01 é lote mínimo)

E quando eu verificar que um usuário receberá uma impressão sobre um lote inserido incorretamente, você pode adicionar um alerta, por precaução.

Acredito que esta é uma questão de decisão pessoal, quem o quer e assim ....

A propósito, aqui está parte do código (eu também escrevi anteriormente) na qual o cheque também falhou:

double CheckVolumeValue(double volume)
{
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
   {
      Print("Volume is less than the minimum");
      return(min_volume);
   }

   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
   {
      Print("Volume is greater than the maximum");
      return(max_volume);
   }
 ......

}
 
Evgeny Belyaev:

Eu meio que fiz, então isso é uma chatice de novo. Você quer o link ou você mesmo pode encontrá-lo?

Onde está seu graal quando vemos o sinal?

Prefiro não falar com caçadores de idéias sobre tais tópicos

 
Renat Akhtyamov:

Prefiro não falar sobre esse tipo de coisa com os caçadores de idéias.

Por que você está falando então? )

Você está me aborrecendo. Estamos todos esperando por um sinal com volumes calculados da CME. Não há uma compensação na CME?

 
Maksim Neimerik:

Olhe, eu tenho mochos primeiro o lote é retirado das configurações, o que significa que ele só pode ser inferior ao permitido se o usuário cometeu um erro ao entrar no lote.

Por exemplo, o usuário fez um erro de digitação e escreveu 0,005 enquanto queria negociar 0,05 lote - se você verificar, as corujas vão negociar 0,01 lote (assumindo que 0,01 é lote mínimo)

Se você quiser negociar a 0,005 e quiser negociar a 0,05 - você pode acrescentar um alerta.

Acredito que esta é uma questão de decisão pessoal, quem o quer e assim ....

A propósito, aqui está parte do código (eu também já escrevi antes) quando o cheque também falhou:

Você tem que fazer tudo primeiro, e depois verificar se há min/max

double CheckVolumeValue(double volume)
{
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
 ...

   if(volume<min_volume)
   {
      Print("Volume is less than the minimum");
      return(min_volume);
   }

   
   if(volume>max_volume)
   {
      Print("Volume is greater than the maximum");
      return(max_volume);
   }
}

e imediatamente ao retornar fazer a normalização

return(NormalizeDouble(volume,LotDigit(symb)));
 
Vitaly Muzichenko:

Faça tudo primeiro, e depois verifique se há min/max

e depois fazer a normalização imediatamente após o retorno.

Em geral, está na hora de terminar esta conversa.

Alguns defeitos imaginários que você viu imediatamente, mas a essência (eu escrevi sobre o retorno do lote) ficou sem sua atenção ...

Obrigado a todos por sua ajuda!

 
Maksim Neimerik:

Em resumo, está na hora de terminar esta conversa.

Algumas falhas imaginárias que você viu imediatamente, mas a essência (eu escrevi sobre o retorno do lote) ficou sem sua atenção...

Obrigado a todos por sua ajuda!

Maxim, você pode me ouvir?

Reler o código que eu dei e sua mensagem

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

Mercado: Sem operações comerciais

Vitaly Muzichenko, 2020.01.27 18:37

Você tem que fazer tudo primeiro, e depois verificar se há min/max.

double CheckVolumeValue(double volume)
{
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
 ...

   if(volume<min_volume)
   {
      Print("Volume is less than the minimum");
      return(min_volume);
   }

   
   if(volume>max_volume)
   {
      Print("Volume is greater than the maximum");
      return(max_volume);
   }
}

e normalizá-lo imediatamente em um retorno

return(NormalizeDouble(volume,LotDigit(symb)));

Você verifica a min/max e depois faz cálculos, de modo que o cálculo pode ser qualquer coisa. Você deve verificar a existência de min/max após os cálculos, não antes

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

E aqui está o meu)