Verificação da parada mínima nos EAs publicados no mercado. - página 12

 
Igor Volodin:

Você não pode dividir por um ponto dessa maneira, o valor da funçãoSymbolInfoDouble(symToWorkmodify,SYMBOL_POINT) pode ser igual a zero.
Isto também se aplica a outras funções do mercado.

Por exemplo, o uso doAccountInfoInteger(ACCOUNT_LEVERAGE) nos cálculos causou a queda de alguns Consultores Especialistas no campeonato de 2010 com o erro dedivisão zero, quando esta função retornou 0 no OnInit.

Se você olhar para a referência,SymbolInfoDouble(), SymbolInfoInteger() deve sempre ser verificado quanto a erros.
 
Vladimir Gribachev:

Se é tão ruim assim, aqui vai

Mais uma vez, observe que o tópico é sobre uma situação em que o rochedo é 0. Você citou um resultado de teste com um rochedo maior que zero.

E se é tão ruim assim, como corretamente apontadopor Andrey F. Zelinsky

você pode adicionar um cheque para o 130º erro e adicionar +1 às paradas. Mas isso não faz sentido algum.
A verificação de erro 130 é uma prática normal, como qualquer outro erro no programa. Mas acrescentar 1 às paradas, primeiro, não ajuda, segundo, é uma má solução.
 
Ihor Herasko:

Mais uma vez, observe que o tópico é sobre a situação quando o rochedo é 0. Você deu um resultado de teste com um rochedo maior que zero.

Mostre-me onde, no estojo do servidor MetaQuotes-Demo = 0

mesmo se o nível de parada = 0, então a perda de parada mínima é igual ao valor do spread.

Se spread = 0 também, então me mostre tal corretor e eu irei lá para cortar meu dinheiro.

A verificação de erro 130 é uma prática normal, como qualquer outro erro no programa. Quanto a acrescentar 1 às paradas, primeiro não ajuda, segundo, é uma má decisão.

Quem disse que era bom.

Eu coloquei o código de verificação, você colocou corujas para verificação, mostrei que no servidor onde os moderadores verificam o funcionamento desta verificação.

Se você precisa zombar do sistema e não encontrar uma solução que o topikstarter queria, você precisa criar um novo tópico chamado "Vamos explodir os miolos!

ZS. O guarda-tópico precisava de uma solução para ser testado no mercado. Os moderadores testam em seus servidores, não nos Alpes ou em qualquer lugar.

 
Vladimir Gribachev:

Se o spread também for 0, então me mostre um corretor e eu irei lá para cortar a massa.

Não você não vai, vai haver uma comissão
 

:-) Eu o li e sorri.


Não perguntei o que fazer se o servidor retorna 0, modere seu ego - estou me dirigindo especificamente a uma pessoa, ele vai entender ou não - mas isso não importa.

O correio foi escrito não para fins de comunicação, mas para exemplos específicos de programadores que colocam seus produtos no mercado, é estranho ouvir de um homem que nunca vendeu um único produto - sobre o que fazer e o que não fazer.

O TEMA É SOBRE A VERIFICAÇÃO NO MERCADO.

Não estamos falando sobre o que uma EA deve verificar e como lidar com os erros. - Por mim, tudo bem.

 
Vladislav Andruschenko:

Eu não perguntei o que fazer se o servidor retorna 0

Então você deveria ter sido mais claro na linha de assunto:

Neste momento 90% dos corretores têm spreads e minstops flutuantes e retornam 0.

 
Ihor Herasko:

Então você precisa ser mais claro na linha:

Eu estava perguntando sobre como contornar o erro de mercado se o servidor retornar 0 - e ao verificar em macret o moderador coloca stoploss = 1, mas o EA não pode mudar para min stop como é 0, - ele está flutuando.

É claro que a EA retorna o erro 130 e diz que a perda de carga está errada, faz mudanças, mas no mercado, este comando não funciona.

meu posto soava assim:

Olá a todos, amigos!

há uma característica do mercado: você tem que verificar todos os valores para a parada mínima.

Se o valor da variável for menor que a min-stop, então atribua uma min-stop, para que não hajaerro 130.

Atualmente 90% dos corretores têm spread flutuante e min STOP e rendimento 0.

Há uma construção de código que atribui todas as variáveis à parada mínima.

 int OnInitLevels(string symToWorkmodify)
  {
   if(lot<SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MIN))lots=SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MIN);else
   if(lot>SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MAX))lots=SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MAX);else lots=lot;
   if(StopLoss>0 && StopLoss<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))StopLosss=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else StopLosss=StopLoss;
   if(TakeProfit>0 && TakeProfit<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TakeProfits=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TakeProfits=TakeProfit;
   if(TrailingStop>0 && TrailingStop<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TrallingStops=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TrallingStops=TrailingStop;
   if(TakeProfitALL>0 && TakeProfitALL<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TakeProfitsAver=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TakeProfitsAver=(int)TakeProfitALL;
   if(TrailingStop>0 && TrailingStop<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TrallingStops=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TrallingStops=TrailingStop;
   return(0);
  }

Mas não funciona mais no mercado, porque agora o minstop = 0 em todos os lugares,

Quem está lidando com este problema?

 
Vladimir Gribachev:

Mostre-me onde, no estojo do servidor MetaQuotes-Demo = 0

Não no servidor da MetaQuotes, mas na verificação no mercado (ver o primeiro post do tópico):

mas não passa mais no mercado, porque agora min stoplevel = 0 em todos os lugares ,

Vladimir Gribachev:

mesmo que a perda por perda de carga mínima = 0, então a perda por perda de carga mínima é igual ao spread.

Não é um fato. Poderia haver 2 ou 3 propagações. Talvez você simplesmente não tenha encontrado tais situações. Mas isso não significa que eles não existam. Se você não sabe do que estou falando, você pode tentar evitá-los.

 
Ihor Herasko:

Não no servidor da MetaQuotes, mas ao verificar no mercado (ver o primeiro post do tópico):

Não é um fato. Pode haver 2 ou 3 spreads. Talvez você simplesmente não tenha encontrado tais situações. Mas isso não significa que eles não existam. A situação no corretor que mencionei é exatamente a mesma.

i>Esse é o ponto, estabelecer uma dura parada minima para espalhar 1-2-3 é uma desculpa.

você precisa de uma solução real para o problema das paradas flutuantes.

Eles não sabem que tipo de parada flutuante eles têm, mas não lhe dizem como fazer isso. Sinto muito. Ou ele simplesmente não me diz.

 

Acho que você deve ser claro sobre a questão)). Nesse meio tempo, você está confuso:

я не спрашивал что делать если сервер возвращает 0

e através do correio:

Eu estava perguntando sobre como contornar o erro do mercado se o servidor retornar 0

Razão: