MetaTrader 5 sobre uma conta real - página 2

 
IgorM:

Referia-me ao preço, não ao SL ou TP? E a que preço deve o servidor abrir uma ordem de mercado para mim, ao preço que me deu ou ao preço que eu queria?

porque não deveria enviar ao servidor o preço com um spread positivo?)

WZZ: USDJPY : 82,49 ; 82,510000000001 ; 82,49 - talvez 82,55 de uma só vez ?

aqui está um exemplo de envio de um pedido com preços normalizados

//+------------------------------------------------------------------+
//| Функция открытия ордеров                                         |
//+------------------------------------------------------------------+
void OpenOpders(string sym,ENUM_ORDER_TYPE type)
  {
   int n=0;
   bool res=true;
   while(res)
     {
      n++;
      Alert(n," - Попытка открыть ордер: ",TypeToStr(type)," на  ",sym,", Лот - ",Lots);
      double Bid=SymbolInfoDouble(sym,SYMBOL_BID);
      double Ask=SymbolInfoDouble(sym,SYMBOL_ASK);
      int digit=(int)SymbolInfoInteger(sym,SYMBOL_DIGITS);
      double price=0.0;

      if(type==ORDER_TYPE_BUY)price=NormalizeDouble(Ask,digit);
      else if(type==ORDER_TYPE_SELL)price=NormalizeDouble(Bid,digit);

      request.action       = TRADE_ACTION_DEAL;
      request.symbol       = sym;
      request.volume       = Lots;
      request.price        = price;
      request.deviation    = Slip;
      request.type         = type;
      request.type_filling = ORDER_FILLING_AON;

      OrderSend(request,result);

      switch(Fun_Error(result.retcode))
        {
         case 0:res=false;break;
         case 1:res=true;break;
         case 2:res=false;break;
        }
     }
  }
//+------------------------------------------------------------------+
//| Функция обработки ошибок                                         |
//+------------------------------------------------------------------+
int Fun_Error(int Error)
  {
   switch(Error)
     {
      case 10004: Alert("Реквота");return(1);
      case 10006: Alert("Запрос отвергнут");Sleep(3000);return(1);
      case 10007: Alert("Запрос отменен трейдером");Work=false;return(0);
      case 10008: Alert("Ордер размещен");return(2);
      case 10009: Alert("Заявка выполнена");return(2);
      case 10010: Alert("Заявка выполнена частично");return(2);
      case 10011: Alert("Ошибка обработки запроса");return(1);
      case 10012: Alert("Запрос отменен по истечению времени");return(1);
      case 10013: Alert("Неправильный запрос");Work=false;return(0);
      case 10014: Alert("Неправильный объем в запросе");Work=false;return(0);
      case 10015: Alert("Неправильная цена в запросе");Work=false;return(0);
      case 10016: Alert("Неправильные стопы в запросе");Work=false;return(0);
      case 10017: Alert("Торговля запрещена");Work=false;return(0);
      case 10018: Alert("Рынок закрыт");Work=false;return(0);
      case 10019: Alert("Нет достаточных денежных средств для выполнения запроса");Work=false;return(0);
      case 10020: Alert("Цены изменились");return(1);
      case 10021: Alert("Отсутствуют котировки для обработки запроса");Sleep(3000);return(1);
      case 10022: Alert("Неверная дата истечения ордера в запросе");Work=false;return(0);
      case 10023: Alert("Состояние ордера изменилось");return(2);
      case 10024: Alert("Слишком частые запросы");Work=false;return(0);
      case 10025: Alert("В запросе нет изменений");Sleep(3000);return(1);
      case 10026: Alert("Автотрейдинг запрещен сервером");Work=false;return(0);
      case 10027: Alert("Автотрейдинг запрещен клиентским терминалом");Work=false;return(0);
      case 10028: Alert("Запрос заблокирован для обработки");return(2);
      case 10029: Alert("Ордер или позиция заморожены");return(2);
      case 10030: Alert("Указан неподдерживаемый тип исполнения ордера по остатку");Work=false;return(0);
      case 10031: Alert("Нет соединения с торговым сервером");Sleep(3000);return(1);
      case 10032: Alert("Операция разрешена только для реальных счетов");Work=false;return(0);
      case 10033: Alert("Достигнут лимит на количество отложенных ордеров");return(2);
      case 10034: Alert("Достигнут лимит на объем ордеров и позиций для данного символа");return(2);
      default:    Alert("Ошибка № - ",Error);Work=false;return(0);
     }
  }
//+------------------------------------------------------------------+
//| Функция преоброзования типа ордера в строку                      |
//+------------------------------------------------------------------+
string TypeToStr(ENUM_ORDER_TYPE type)
  {
   switch(type)
     {
      case  ORDER_TYPE_BUY:  return("BUY");
      case  ORDER_TYPE_SELL: return("SELL");
     }
   return("");
  }
 
Renat:
Ou seja, a tese da "humidade da plataforma" não foi confirmada de forma alguma.

Nunca mencionei a humidade da plataforma - reler os meus posts

Fiz os meus comentários sobre o assunto - se pensa que não têm fundamento, deixe-os estar, mas penso que a sua empresa vende software para corretores na plataforma MT5

sergey1294:

aqui está um exemplo de envio de um pedido com preços normalizados

obrigado mas tenho uma ideia ligeiramente diferente de negociação e preço quero abrir uma ordem para tentar normalizar 82,47,82,45999999999999,82,47

Não tenho a certeza se o servidor "inventou" um preço 82,46 porque tal preço não foi registado nos seus logs e se não é o preço de mercado - não preciso dele - deixe-o ficar no servidor e não passar por erros nos meus logs

 
IgorM:

Nunca mencionei a humidade da plataforma - reler os meus posts

fiz os meus comentários sobre o assunto - se pensa que são infundados, assim seja, mas penso que a sua empresa vende software para corretores na plataforma mt5

sps mas tenho uma ideia ligeiramente diferente de negociação e do preço a que quero abrir uma ordem, tentar normalizar 82,47,82,45999999999999,82,47

Não tenho a certeza se o servidor "inventou" um preço 82,46 porque tal preço não estava nos seus logs e se o preço não é de mercado - não preciso dele - deixá-lo permanecer no servidor e não ir aos meus logs com erros

Infelizmente, não tem conhecimento da aritmética básica dos números reais e da sua representação em computadores. Esta é a raiz do seu mal-entendido de preços "não normalizados".

82,4599999999(9) é a dupla representação de 82,46

 
IgorM:

Nunca mencionei a humidade da plataforma - reler os meus posts

fiz os meus comentários sobre o assunto - se os acha infundados, que assim seja, mas penso que a sua empresa vende software para corretores na plataforma mt5

sps mas tenho uma ideia ligeiramente diferente de negociação e do preço a que quero abrir uma ordem, tentar normalizar 82.47,82.45999999999999,82.47

Não tenho a certeza se o servidor vai "inventar" um preço 82,46 pois não existe tal preço nos seus logs e se não é o preço de mercado não preciso dele - deixe-o ficar no servidor e não vá com erros nos meus logs

Não compreende bem quais são as suas ideias de preço, o preço aceite tem cinco ou quatro casas decimais, pelo que precisa de reduzir o preço até essa casa decimal.
 
Renat:

Infelizmente, não tem conhecimento da aritmética básica dos números reais e da sua representação em computadores. Esta é a raiz do seu mal-entendido de preços "não normalizados".

82,45999999(9) é a dupla representação de 82,46

OK, vou encontrar tempo para reler material provavelmente já esquecido, ou seja, tal preço (82,45999999(9)) será aceite pelo servidor de negociação para abrir uma ordem de mercado?

sergey1294 Preste atenção ao que os programadores lhe deram como exemplos e classes prontas, pelo menos os programadores desde que a classe CTrade não tenha funções NormalizeDouble(), bem como os exemplos na MQL5 Reference / Trading Functions / OrderSend

Não vou inventar e escrever inicialmente os programas errados se li os exemplos na fonte original, na Referência MT4 o exemplo OrderSend() também não contém nenhuma normalização de preços

 
IgorM:

OK, vou encontrar tempo para reler provavelmente já esquecido por mim, ou seja, tal preço (82.45999999(9)) será aceite pelo servidor de negociação para abrir uma ordem de mercado?

Sim, se for o preço correcto/existente no fluxo da carraça.


sergey1294 Preste atenção ao que os programadores lhe deram como exemplos e classes prontas, pelo menos os programadores desde que a classe CTrade não tenha funções NormalizeDouble(), bem como os exemplos na MQL5 Reference / Trading Functions / OrderSend

Não vou inventar e escrever inicialmente os programas errados se tiver lido exemplos concretos na fonte

Se utilizar o regular Bid and Ask para fazer negócios, estes são sempre normalizados. Os preços calculados (por exemplo, paragens) precisam de ser normalizados antes de se enviar uma ordem de comércio.

Os métodos padrão CTrade não normalizam à força os preços de entrada de encomendas, porque é categoricamente inaceitável - não se pode substituir os preços declarados acima do nível.

 
Renat:
Sim, desde que seja o preço correcto/existente no fluxo da carraça.


Se utilizar as ofertas e pedidos regulares, estas são sempre normalizadas. Mas os preços calculados (por exemplo, paragens) já precisam de ser normalizados você mesmo antes de enviar uma ordem de comércio.

Os métodos padrão do CTrade não normalizam os preços de entrada forçada, uma vez que isto é categoricamente inaceitável - não se pode substituir os preços indicados a um nível superior.

cp! não se esqueça de o mencionar várias vezes no manual MT5, para que não haja mal-entendidos e possa imediatamente enviar para ler a ajuda :)

ZS: Eu sei sobre SL e TR, mas não me lembro nem o li na ajuda nem o descobri no fórum

 
IgorM:

cp! se tiver a gentileza de mencionar isto várias vezes no manual MT5 para que não haja mal-entendidos e possa ser enviado directamente para ler o manual :)

Sim, estamos constantemente a actualizar a documentação e a acrescentar esclarecimentos.
 
IgorM:

leio este fórum a toda a hora e muitas vezes fico espantado com as vossas mensagens profundas e informativas ;)

Quanto ao assunto, duvido que as cotações das contas demo difiram das contas microreais, mas as contas demo têm frequentemente preços não normalizados, o forte movimento - não se pode abrir ou fechar a encomenda por eles, gostaria de ver alguma encomenda, para que depois não se possa culpar o MT5

Quanto ao gosto e cor, é uma sabedoria popular - o preço não-normalizado incomoda algumas pessoas, embora eu pessoalmente não o considere um grande problema (uma vez que uso encomendas pendentes há muito tempo, e tais preços não são um grande problema para mim). Mas o problema para mim são coisas como uma indisponibilidade do OnTimer() para trabalhar no testador ou outras coisas semelhantes.

Mas mesmo com estes inputs, ao escolher um terminal para negociar em conta de cêntimos (com um depósito de 200 dólares), farei pessoalmente a minha escolha a favor do MT5.

COM TODAS AS SUAS ACTUAIS DESVANTAGENS!

 
Interesting:

Algumas pessoas são incomodadas por "preços não normalizados", mas eu pessoalmente não penso que seja um grande problema (porque há muito tempo que uso atrasos, e esses preços não são um problema assim tão grande para mim). Mas o problema para mim são coisas como a indisponibilidade do OnTimer() para trabalhar no testador ou outras coisas semelhantes.

Este erro é uma consequência de uma optimização mal sucedida e foi corrigido no 358º edifício.
Razão: