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

 
Vladislav Andruschenko:

o spread é levado em conta, o spread foi de 8 pips. + min stop 18=26 pips

27 está ok.

E além disso, se uma pessoa precisa colocar uma perda de 100 pips, isso significa que ela perderá 100 pips, então para BAY do preço ASC você precisa contar 100 pips.

e para venda a partir do BID, respectivamente.

Eu não disse onde colocar o SL. Eu disse qual o preço a ser usado ao verificar.
 
Andrey Khatimlianskii:
Eu não disse onde colocar o SL. Eu disse qual o preço a ser usado ao verificar.
Obrigado. Essa opção também conta.
 
Taras Slobodyanik:

Então como você pode não adivinhar? se o corretor dá um nível de parada não razoável? %)

...é claro que depois de todas as verificações, você tem que adivinhar para saber o mínimo travessão

Não se pode adivinhar no layout. Você tem que saber tudo. Com antecedência. Para não cometer um único erro. Embora eu acredite que os erros do servidor não sejam um erro. É um aviso.
 

Não tenho experiência em vender EAs no mercado, mas depois de ler todas as opiniões, vou colocar meus cinco centavos.

Você pode tentar selecionar várias opções no menu

1 Variante - Default. Isto é quando a parada mínima é inteiramente determinada peloMODE_STOPLEVEL. Certifique-se de pedir um novoSTOPLEVEL antes de cada ação na ordem.

2 Variante, seMODE_STOPLEVEL == 0, então o batente deixa o spread para trás.

3 Opcionalmente, definimos manualmente nosso próprio nível de parada, ou algum multiplicador multiplicado pelo spread.

É necessário introduzir o controle. Se um EA está sendo testado ou otimizado, o nível de parada não pode ser menor do que o spread. Acho que isto permitirá que o mercado passe em qualquer teste de estresse, incluindo um com StopLoss = 1.

 
Dmytro Zelenskyy:

Não tenho experiência em vender EAs no mercado, mas depois de ler todas as opiniões, vou colocar meus cinco centavos.

Você pode tentar selecionar várias opções no menu

1 Variante - Default. Isto é quando a parada mínima é inteiramente determinada peloMODE_STOPLEVEL. Certifique-se de pedir um novoSTOPLEVEL antes de cada ação na ordem.

2 Variante, seMODE_STOPLEVEL == 0, então o batente deixa o spread para trás.

3 Opcionalmente, definimos manualmente nosso próprio nível de parada, ou algum multiplicador multiplicado pelo spread.

É necessário introduzir o controle. Se um EA está sendo testado ou otimizado, o nível de parada não pode ser menor do que o spread. Acho que isto permitirá que o mercado passe em qualquer teste de estresse, incluindo um com StopLoss = 1.

Infelizmente, não.

No mercado, tudo deve ir automaticamente.

Agora aqui está uma nova coisa engraçada com o ouro, há citações de 3 dígitos, mas o último dígito deve ser arredondado, ou seja, o último dígito deve ser 0,

O último dígito deve ser 0, portanto, ao arredondá-lo, ele arredonda de acordo com uma regra matemática, e não na direção que permite que você contorne a regra de parada mínima.

É claro que posso simplesmente colocar - através de uma verificação de mercado para colocar todos os níveis em 10 níveis de parada - por assim dizer, a fim de deixar os moderadores passar, mas eu gostaria de lidar com isso corretamente.

tenho que arredondá-lo para cima para comprar e para baixo para vender. oh............

 
Vladislav Andruschenko:

Infelizmente, não.

No mercado, tudo deve ir automaticamente.

Agora aqui está um novo truque sobre o ouro, há aspas de 3 dígitos, mas o último dígito deve ser arredondado, ou seja, o último dígito deve ser 0,

O último dígito deve ser 0, portanto, ao arredondar, ele é arredondado por uma regra matemática, e não para o lado que permite contornar a regra min-stop.

É claro que posso simplesmente colocar - através de uma verificação de mercado para colocar todos os níveis em 10 níveis de parada - por assim dizer, a fim de deixar os moderadores passar, mas eu gostaria de lidar com isso corretamente.

Tenho que arredondá-lo para cima para comprar e para baixo para vender. oh............

Eu também já enfrentei este problema ao testar ouro e prata.

double NormalizePrice(string symbol,double value)
  {
   double ts=SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE);
   if(ts==0)return(value);
   return(NormalizeDouble(value/ts,0)*ts);
  }

exemplo de uso

      double ask=NormalizeDouble(SymbolInfoDouble(symbol,SYMBOL_ASK),digits);
      if(NormalizeDouble(NormalizePrice(symbol,ask),digits)!=ask)return;
 

isto é o que parece minha função de tirar proveito e parar de perder, por exemplo

void ModifyTP(string symbol,double tp)
  {
   if(tp<=0)return;
   bool res;
   double last=SymbolInfoDouble(symbol,SYMBOL_LAST);
   double bid=SymbolInfoDouble(symbol,SYMBOL_BID);
   double ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
   double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
   int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);

   if(last<=0.0)
     {
      bid=SymbolInfoDouble(symbol,SYMBOL_BID);
      ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
     }
   else
     {
      bid=SymbolInfoDouble(symbol,SYMBOL_LAST);
      ask=SymbolInfoDouble(symbol,SYMBOL_LAST);
     }

   if(bid<=0.0)return;
   if(ask<=0.0)return;

   int total=OrdersTotal();

   for(int i=0; i<total; i++)
     {
      if(!OrderSelect(i,SELECT_BY_POS))continue;
      if(OrderMagicNumber()!=Magic)continue;
      if(OrderSymbol()!=symbol)continue;
      if(OrderType()>1)continue;
      if(OrderTakeProfit()!=0)continue;

      if(OrderType()==OP_BUY) tp=NormalizeDouble(NormalizePrice(symbol,bid+tp*point),digits);
      if(OrderType()==OP_SELL) tp=NormalizeDouble(NormalizePrice(symbol,ask-tp*point),digits);
      if(tp<0)continue;
      res=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tp,0);
      if(!res)
        {
         int error=GetLastError();
         rezult=StringConcatenate(OrderSymbol(),": error modifying TakeProfit order ",StrToType(OrderType())," №- ",error," ",ErrorDescription(error)," Ticket: ",OrderTicket());
         Print(rezult);
        }
     }
  }
 
Sergey Gritsay:

Também diante do problema dos testes em ouro e prata, escrevi uma função como esta

exemplo de uso

Se eu usar ouro no servidor mt5 - 3 casas decimais, mas parar e abrir o preço deve ser ajustado para !!!! Se você ainda quiser jogar com 2 casas decimais, arredonde até 2 casas decimais em vez de 3, e você também pode ver alguns truques humorísticos com paradas min. em ouro e prata,

assim:

   request.tp=NormalizeDouble(request.tp,SymbolInfoInteger(symToWork2,SYMBOL_DIGITS)-Rounding);
   request.sl=NormalizeDouble(request.sl,SymbolInfoInteger(symToWork2,SYMBOL_DIGITS)-Rounding);
   request.price=NormalizeDouble(request.price,SymbolInfoInteger(symToWork2,SYMBOL_DIGITS)-Rounding);

ondeArredondamento= para mt5 de ouro é 1.

Você precisa arredondar o preço, caso contrário ele o informará que o preço está errado, mas quando você arredondar, o servidor corrigirá o preço correto e a transação será fechada.

O mt4 não tem tais peculiaridades - há 2 casas decimais e você arredonda até 2 casas decimais sem nenhum problema.

minha opinião pessoal sobre o erro 130:

tenho todas as verificações de erro 130 - há uma saída de log de erros.

Há também a normalização.

No mercado eles me fizeram normalizar para min parar, respectivamente + spread, (por exemplo, eu deveria comprar do preço ASK e verificar para min parar ao preço BID).

Portanto, ela deve ser forçada ao usuário, se um comerciante usa a EA e define, por exemplo, 20 pontos de Stop Loss, então a EA deve automaticamente substituí-la por 50 pontos (MinStop + Spread), o que não é correto. O comerciante deve ver o erro 130 e corrigir a parada por sua própria conta e risco.

Outra opção - se um usuário definir a perda de tempo abaixo do mínimo - para proibir a comercialização e modificação, porque os moderadores não permitirão que o Expert Advisor com o erro 130.

Mas proibir o comércio é errado, parar e se espalhar é flutuante, agora é menos do que o mínimo - então está tudo bem.

Não acho que seja uma boa idéia usar o mercado para tal abordagem.

IMHO: um erro 130 deve ser e um usuário deve ver o 130º erro do servidor, não de um Expert Advisor dizendo: "Sua parada está abaixo do mínimo, corrija isso".

Regra do mercado: não pule o Expert Advisor que gera erro 130 - porque o verificador colocou 1 ponto no Stop Loss - bem, isto é um fracasso.

Uma mesma versão do Expert Advisor pode ou não ser aprovada.

Eu postei uma versão - tudo está bem, depois de um tempo eu vi que a EA imprime muito (apenas o fato de que o stop loss é menor que o mínimo), eu corrigi rapidamente e esperei por uma semana até que começassem os testes, novamente 2 semanas de estagnação porque novamente eu vejo 130 erros em algum símbolo

 
Vladislav Andruschenko:

Em ouro no servidor mt5 - 3 casas decimais, mas as paradas e o preço de abertura devem ser definidos para !!!!. Se você quiser alterar o preço do ouro e da prata, você precisa ajustá-lo para 2 casas decimais, ou seja, arredondá-lo para 2 casas decimais e não para 3, e haverá um truque com sua parada de mina em ouro e prata,

assim:

ondeArredondamento= para mt5 de ouro é 1.

Você precisa arredondar o preço, caso contrário ele o informará que o preço está errado, mas quando você arredondar, o servidor corrigirá o preço correto e a transação será fechada.

O mt4 não tem tais peculiaridades - há 2 casas decimais e você arredonda até 2 casas decimais sem nenhum problema.

minha opinião pessoal sobre o erro 130:

tenho todas as verificações de erro 130 - há uma saída de log de erros.

Há também a normalização.

No mercado eles me fizeram normalizar para min parar, respectivamente + spread, (por exemplo, eu deveria comprar do preço ASK e verificar para min parar ao preço BID).

Portanto, ela deve ser forçada ao usuário, se um comerciante usa a EA e define, por exemplo, 20 pontos de Stop Loss, então a EA deve automaticamente substituí-la por 50 pontos (MinStop + Spread), o que não é correto. O comerciante deve ver o erro 130 e corrigir a parada por sua própria conta e risco.

Outra opção - se um usuário definir a perda de tempo abaixo do mínimo - proíbe a comercialização e modificação, pois os moderadores não permitirão que o Expert Advisor cometa um erro de 130.

Mas proibir o comércio é errado, parar e se espalhar é flutuante, agora é menos do que o mínimo - então está tudo bem.

Não acho que seja uma boa idéia usar o mercado para tal abordagem.

IMHO: um erro 130 deve ser e um usuário deve ver o 130º erro do servidor, não de um Expert Advisor dizendo: "Sua parada está abaixo do mínimo, corrija isso".

Regra do mercado: não pule o Expert Advisor que gera erro 130 - porque o verificador colocou 1 ponto no Stop Loss - bem, isto é um fracasso.

Uma mesma versão do Expert Advisor pode ou não ser aprovada.

Eu postei uma versão - tudo está bem, depois de um tempo eu vi que a EA imprime muito (apenas o fato de que o stop loss é menor que o mínimo), eu corrigi rapidamente e esperei por uma semana até que eles começassem a verificar, novamente 2 semanas de estagnação porque 130 erros aparecem novamente em algum símbolo

IMHO - muitas mensagens do servidor - não um erro, e o código de retorno. E não pretende ser evitado por todo tipo de truques, mas sim que o Assessor Especialista seja capaz de tomar decisões. São decisões baseadas na resposta do servidor a suas ações. Caso contrário, seria apenas um brinquedo idiota que não permite monitorar o mercado e corrigir suas ações com base na "comunicação" com o servidor.

Portanto, "facetar" os moderadores no erro 130 é exagero. Devemos ser atenciosos: uma coisa é quando um Expert Advisor continua a bater no servidor após o erro 130, e outra coisa é quando ele reage a ele e muda suas ações. Por que não estamos autorizados a fazer este último? É simplesmente porque alguém (o moderador) não quer dar uma olhada mais de perto no trabalho da EA? É como ver 130 - em casamento. Não importa que o especialista provavelmente precise de tal resposta do servidor para sua própria lógica, é importante simplesmente rejeitá-la, e não olhar mais além. É assim que funciona?

 
Artyom Trishkin:

IMHO - muitas mensagens do servidor não são um erro, mas um código de retorno. E você precisa dele não para evitá-lo com todo tipo de truques, mas para que o Consultor Especialista possa tomar decisões. São decisões baseadas na resposta do servidor a suas ações. Caso contrário, seria apenas um brinquedo idiota que não permite acompanhar o mercado e corrigir suas ações com base em uma "comunicação" recíproca com o servidor.

Portanto, é um exagero "forçar" os moderadores a cometerem o 130º erro. Precisamos ser atenciosos: uma coisa é se o Expert Advisor continuar a bater no servidor após o erro 130, mas outra coisa é quando ele reage a ele e muda suas ações. Por que não estamos autorizados a fazer este último? É simplesmente porque alguém (o moderador) não quer dar uma olhada mais de perto no trabalho da EA? É como ver 130 - em casamento. Não importa que o especialista provavelmente precise de tal resposta do servidor para sua própria lógica, é importante apenas rejeitá-la, e não procurar mais. É assim que funciona?

É por isso que minha EA tem capturado movimentos mín/máx e, portanto, está batendo no servidor não com 1 pip stoploss, mas com um nível mín + spread normal, mas o spread está flutuando. Portanto, a EA irá bater no servidor até que ele retorne um spread normal.

Em outras palavras, no momento da abertura, ele verifica se há uma parada mínima - reconstrói seus valores - e depois bate no servidor. Mas se você precisar colocar uma parada de 10 pips, você tem que esperar pela propagação do min e bater no servidor.