MetaTrader 5 su un conto live - pagina 2

 
IgorM:

Intendevo il prezzo, non lo SL o il TP? E a quale prezzo il server dovrebbe aprire un ordine a mercato per me, al prezzo che mi ha dato o al prezzo che volevo?

perché non dovrei inviare al server il prezzo con uno spread positivo?)

WZZ: USDJPY : 82.49 ; 82.510000000001 ; 82.49 - forse 82.55 in una volta ?

ecco un esempio di invio di una richiesta con prezzi normalizzati

//+------------------------------------------------------------------+
//| Функция открытия ордеров                                         |
//+------------------------------------------------------------------+
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:
Cioè, la tesi dell'"umidità della piattaforma" non è stata confermata in alcun modo.

Non ho mai parlato dell'umidità della piattaforma - rileggi i miei post

Ho fatto i miei commenti sull'argomento - se pensate che siano infondati, lasciateli stare, ma penso che la vostra azienda venda software per broker sulla piattaforma MT5

sergey1294:

ecco un esempio di invio di una richiesta con prezzi normalizzati

grazie ma ho un'idea leggermente diversa di trading e di prezzo che voglio aprire un ordine a cercare di normalizzare 82.47,82.459999999999,82.47

Non sono sicuro che il server abbia "inventato" un prezzo di 82.46 perché tale prezzo non è stato registrato nei suoi registri e se non è il prezzo di mercato - non ne ho bisogno - lasciatelo rimanere sul server e non andare nei miei registri con gli errori

 
IgorM:

Non ho mai parlato dell'umidità della piattaforma - rileggi i miei post

Ho fatto i miei commenti sull'argomento - se pensate che siano infondati, così sia, ma penso che la vostra azienda venda software per broker sulla piattaforma mt5

sps ma ho un'idea leggermente diversa di trading e il prezzo a cui voglio aprire un ordine, provare a normalizzare 82.47,82.45999999999999,82.47

Non sono sicuro che il server abbia "inventato" un prezzo 82.46 perché tale prezzo non era nei suoi registri e se il prezzo non è di mercato - non ne ho bisogno - lascialo rimanere sul server e non andare nei miei registri con errori

Purtroppo non conoscete l'aritmetica di base dei numeri reali e la loro rappresentazione nei computer. Questa è la radice del vostro malinteso sui prezzi "non normalizzati".

82.4599999999(9) è la doppia rappresentazione di 82.46

 
IgorM:

Non ho mai parlato dell'umidità della piattaforma - rileggi i miei post

Ho fatto i miei commenti sull'argomento - se pensate che siano infondati, così sia, ma penso che la vostra azienda venda software per broker sulla piattaforma mt5

sps ma ho un'idea leggermente diversa di trading e il prezzo a cui voglio aprire un ordine, provare a normalizzare 82.47,82.45999999999999,82.47

Non sono sicuro che il server "inventerà" un prezzo di 82.46 poiché non c'è tale prezzo nei suoi registri e se non è il prezzo di mercato non ne ho bisogno - lasciamolo rimanere sul server e non andare con errori nei miei registri

Allora non ci sarà alcun problema di esecuzione, ma se il prezzo cambia quando si invia la richiesta, nessuna normalizzazione aiuterà, si otterrà un requote e sarà necessario inviare una nuova richiesta per il nuovo prezzo.
 
Renat:

Purtroppo non conoscete l'aritmetica di base dei numeri reali e la loro rappresentazione nei computer. Questa è la radice del tuo malinteso sui prezzi "non normalizzati".

82.45999999(9) è la doppia rappresentazione di 82.46

OK, troverò il tempo di rileggere materiale probabilmente già dimenticato, cioè un tale prezzo (82.45999999(9)) sarà accettato dal server di trading per aprire un ordine a mercato?

sergey1294 Per favore presta attenzione a ciò che gli sviluppatori ti hanno dato come esempi e classi pronte, almeno la classe CTrade fornita dagli sviluppatori non ha le funzioni NormalizeDouble(), così come gli esempi in MQL5 Reference / Trading Functions / OrderSend

Non ho intenzione di inventare e scrivere inizialmente i programmi sbagliati se ho letto gli esempi nella fonte originale, nel Riferimento MT4 l'esempio OrderSend() non contiene anche la normalizzazione del prezzo

 
IgorM:

OK, troverò il tempo di rileggere probabilmente già dimenticato da me, cioè un tale prezzo (82.45999999(9)) sarà accettato dal server di trading per aprire un ordine a mercato?

Sì, se è il prezzo corretto/esistente nel flusso di tick.


sergey1294 Per favore presta attenzione a ciò che gli sviluppatori ti hanno dato come esempi e classi pronte, almeno la classe CTrade fornita dagli sviluppatori non ha le funzioni NormalizeDouble(), così come gli esempi in MQL5 Reference / Trading Functions / OrderSend

Non ho intenzione di inventare e scrivere inizialmente programmi sbagliati se ho letto esempi concreti nel sorgente

Se usi i normali Bid e Ask per fare scambi, sono sempre normalizzati. I prezzi calcolati (ad esempio gli stop) devono essere normalizzati prima di inviare un ordine di compravendita.

I metodi standard di CTrade non normalizzano forzatamente i prezzi degli ordini in entrata, perché è categoricamente inaccettabile - non si possono sostituire i prezzi dichiarati a un livello superiore.

 
Renat:
Sì, purché sia il prezzo corretto/esistente nel flusso di tick.


Se usate i normali Bid e Ask per gli scambi, sono sempre normalizzati. Ma i prezzi calcolati (ad esempio gli stop) devono già essere normalizzati da voi stessi prima di inviare un ordine di trading.

I metodi standard di CTrade non normalizzano i prezzi d'offerta forzati in entrata perché questo è categoricamente inaccettabile - non è possibile sostituire i prezzi indicati ad un livello più alto.

cp! non ti dispiace menzionarlo più volte nel manuale di MT5, in modo che non ci siano equivoci e si possa subito mandare a leggere l'aiuto :)

ZS: so di SL e TR, ma non ricordo o l'ho letto nella guida o l'ho capito sul forum

 
IgorM:

cp! se tu fossi così gentile da menzionarlo più volte nel manuale di MT5 in modo che non ci siano equivoci e che tu possa essere mandato direttamente a leggere il manuale :)

Sì, stiamo costantemente aggiornando la documentazione e aggiungendo chiarimenti.
 
IgorM:

Leggo sempre questo forum e molto spesso mi stupisco dei tuoi post profondi e informativi ;)

Per quanto riguarda l'argomento, dubito che le quotazioni sui conti demo differiscono da microreal, ma i conti demo molto spesso hanno prezzi non normalizzati, il forte movimento - non è possibile aprire o chiudere l'ordine da loro, vorrei vedere qualche ordine, in modo che poi non incolpare MT5

Per quanto riguarda il gusto e il colore, è una saggezza popolare - il prezzo non normalizzato interferisce con il lavoro di qualcuno, anche se personalmente non penso che sia un grande problema (poiché uso gli ordini pendenti da molto tempo, e tali prezzi non sono un grande problema per me). Ma il problema per me sono cose come l'indisponibilità di OnTimer() a funzionare nel tester o altre cose simili.

Ma anche con questi input, quando si sceglie un terminale per fare trading su un conto da cento (con un deposito di 200 dollari), personalmente farò la mia scelta a favore di MT5.

CON TUTTI I SUOI ATTUALI SVANTAGGI!

 
Interesting:

Alcune persone sono infastidite dal "prezzo non normalizzato", ma personalmente non penso che sia un grande problema (perché ho usato i ritardi per molto tempo, e quei prezzi non sono un grande problema per me). Ma il problema per me sono cose come l'indisponibilità di OnTimer() a funzionare nel tester o altre cose simili.

Questo errore è una conseguenza di un'ottimizzazione non riuscita ed è stato corretto nella nuova build 358.
Motivazione: