MetaTrader 5 auf einem Live-Konto - Seite 2

 
IgorM:

Ich meinte den Preis, nicht den SL oder TP? Und zu welchem Preis sollte der Server eine Marktorder für mich öffnen, zu dem Preis, den er mir gegeben hat oder zu dem Preis, den ich wollte?

warum sollte ich dem Server nicht den Preis mit einer positiven Spanne senden?)

WZZ: USDJPY : 82,49 ; 82,510000000001 ; 82,49 - vielleicht 82,55 auf einmal ?

Hier ein Beispiel für das Senden einer Anfrage mit normalisierten Preisen

//+------------------------------------------------------------------+
//| Функция открытия ордеров                                         |
//+------------------------------------------------------------------+
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:
Das heißt, die These von der "Plattformfeuchtigkeit" hat sich in keiner Weise bestätigt.

Ich habe die Feuchtigkeit der Plattform nie erwähnt - lesen Sie meine Beiträge noch einmal.

Ich habe mich zu diesem Thema geäußert - wenn Sie der Meinung sind, dass sie unbegründet sind, lassen Sie es sein, aber ich denke, dass Ihr Unternehmen Software für Makler auf der MT5-Plattform verkauft

sergey1294:

Hier ein Beispiel für das Senden einer Anfrage mit normalisierten Preisen

Danke, aber ich habe eine etwas andere Vorstellung vom Handel und dem Preis, zu dem ich einen Auftrag eröffnen möchte, versuche, 82,47,82,459999999999,82,47 zu normalisieren

Ich bin mir nicht sicher, ob der Server einen Preis von 82,46 "erfunden" hat, denn ein solcher Preis wurde nicht in seinen Protokollen aufgezeichnet, und wenn es sich nicht um den Marktpreis handelt, brauche ich ihn nicht - er soll auf dem Server bleiben und nicht mit Fehlern in meinen Protokollen erscheinen.

 
IgorM:

Ich habe die Feuchtigkeit der Plattform nie erwähnt - lesen Sie meine Beiträge noch einmal.

ich habe meine Kommentare zu diesem Thema gemacht - wenn Sie sie für unbegründet halten, so sei es, aber ich denke, dass Ihr Unternehmen Software für Broker auf der mt5-Plattform verkauft

sps, aber ich habe eine etwas andere Vorstellung vom Handel und dem Preis, zu dem ich einen Auftrag eröffnen möchte, versuchen, 82,47,82,459999999999,82,47 zu normalisieren

Ich bin nicht sicher, dass der Server "erfunden" einen Preis 82,46, weil ein solcher Preis nicht in seinen Protokollen war und wenn der Preis nicht Markt - ich brauche es nicht - lassen Sie es auf dem Server bleiben und nicht auf meine Protokolle mit Fehlern gehen

Leider sind Ihnen die Grundrechenarten der reellen Zahlen und ihre Darstellung in Computern nicht bekannt. Das ist die Wurzel Ihres Missverständnisses von "nicht-normierten" Preisen.

82,4599999999(9) ist die doppelte Darstellung von 82,46

 
IgorM:

Ich habe die Feuchtigkeit der Plattform nie erwähnt - lesen Sie meine Beiträge noch einmal.

ich habe meine Kommentare zu diesem Thema gemacht - wenn Sie sie für unbegründet halten, so sei es, aber ich denke, dass Ihr Unternehmen Software für Broker auf der mt5-Plattform verkauft

sps, aber ich habe eine etwas andere Vorstellung vom Handel und dem Preis, zu dem ich einen Auftrag eröffnen möchte, versuchen, 82,47,82,459999999999,82,47 zu normalisieren

Ich bin mir nicht sicher, ob der Server einen Preis von 82,46 "erfinden" wird, da es keinen solchen Preis in seinen Protokollen gibt, und wenn es nicht der Marktpreis ist, brauche ich ihn nicht - er soll auf dem Server bleiben und nicht mit Fehlern in meinen Protokollen gehen

Dann gibt es keine Probleme mit der Ausführung, aber wenn sich der Preis ändert, wenn Sie die Anfrage senden, hilft keine Normalisierung, Sie erhalten eine neue Anfrage und müssen eine neue Anfrage für den neuen Preis senden.
 
Renat:

Leider sind Ihnen die Grundrechenarten der reellen Zahlen und ihre Darstellung in Computern nicht bekannt. Dies ist die Ursache für Ihr Missverständnis von "nicht normalisierten" Preisen.

82,45999999(9) ist die doppelte Darstellung von 82,46

OK, ich werde die Zeit finden, das wahrscheinlich schon vergessene Material erneut zu lesen, d.h. ein solcher Preis (82,45999999(9)) wird vom Handelsserver akzeptiert, um eine Marktorder zu eröffnen?

sergey1294 Bitte achten Sie darauf, was die Entwickler Ihnen als fertige Beispiele und Klassen zur Verfügung gestellt haben, zumindest die von den Entwicklern bereitgestellte CTrade-Klasse hat keine NormalizeDouble()-Funktionen, sowie die Beispiele in der MQL5-Referenz / Trading Functions / OrderSend

Ich werde nicht erfinden und zunächst die falschen Programme schreiben, wenn ich die Beispiele in der Originalquelle gelesen habe, in der MT4 Referenz enthält das OrderSend() Beispiel auch keine Preisnormalisierung

 
IgorM:

OK, ich werde Zeit finden, um wieder zu lesen wahrscheinlich schon von mir vergessen, dh ein solcher Preis (82,45999999(9)) wird von der Trading-Server akzeptiert werden, um einen Marktauftrag zu öffnen?

Ja, wenn es sich um den richtigen/vorhandenen Preis im Tick-Stream handelt.


sergey1294 Bitte beachten Sie, was die Entwickler Ihnen als fertige Beispiele und Klassen zur Verfügung gestellt haben, zumindest die von den Entwicklern bereitgestellte CTrade-Klasse hat keine NormalizeDouble()-Funktionen, ebenso wie die Beispiele in der MQL5-Referenz / Trading Functions / OrderSend

Ich werde keine falschen Programme erfinden und schreiben, wenn ich konkrete Beispiele im Quelltext gelesen habe.

Wenn Sie die regulären Geld- und Briefkurse für den Abschluss von Geschäften verwenden, sind diese immer normalisiert. Berechnete Preise (z.B. Stopps) müssen normalisiert werden, bevor ein Handelsauftrag gesendet wird.

Die Standardmethoden von CTrade normalisieren nicht zwangsweise die Preise der eingehenden Orders, weil das kategorisch inakzeptabel ist - man kann die über dem Niveau deklarierten Preise nicht ersetzen.

 
Renat:
Ja, sofern es sich um den richtigen/vorhandenen Preis im Tick-Stream handelt.


Wenn Sie die regulären Geld- und Briefkurse für den Handel verwenden, sind diese immer normalisiert. Die berechneten Preise (z.B. Stopps) müssen jedoch bereits vor dem Absenden eines Handelsauftrags von Ihnen normalisiert werden.

Bei den Standardmethoden von CTrade werden die erzwungenen eingehenden Geldkurse nicht normalisiert, da dies kategorisch inakzeptabel ist - Sie können keine Preise ersetzen, die auf einem höheren Niveau angegeben sind.

cp! nichts dagegen, es mehrmals im MT5-Handbuch zu erwähnen, damit es keine Missverständnisse gibt und Sie sofort die Hilfe lesen können :)

ZS: Ich weiß über SL und TR Bescheid, aber ich kann mich nicht erinnern, es in der Hilfe gelesen zu haben oder es im Forum herausgefunden zu haben.

 
IgorM:

cp! wenn Sie so freundlich wären, dies mehrmals im MT5-Handbuch zu erwähnen, damit es keine Missverständnisse gibt und Sie direkt zum Lesen des Handbuchs geschickt werden können :)

Ja, wir aktualisieren die Dokumentation ständig und fügen Erläuterungen hinzu.
 
IgorM:

ich lese dieses Forum ständig und bin immer wieder erstaunt über Ihre tiefgründigen und informativen Beiträge ;)

Was das Thema, ich bezweifle, dass die Angebote auf Demo-Konten unterscheiden sich von microreal, aber die Demo-Konten haben sehr oft nicht normalisierte Preise, die starke Bewegung - Sie können nicht öffnen oder schließen Sie den Auftrag von ihnen, würde ich gerne sehen, um einige, so dass dann nicht die Schuld MT5

Was den Geschmack und die Farbe betrifft, so ist es eine Volksweisheit, dass ein nicht normalisierter Preis die Arbeit von jemandem stört, obwohl ich persönlich nicht glaube, dass es ein großes Problem ist (da ich seit langem anhängige Aufträge verwende und solche Preise für mich kein großes Problem darstellen). Aber das Problem für mich ist, dass OnTimer() im Tester nicht funktionieren will oder ähnliche Dinge.

Aber auch mit diesen Eingaben, bei der Wahl eines Terminals für den Handel auf einem Cent-Konto (mit einer Einzahlung von $ 200), werde ich persönlich meine Wahl zu Gunsten von MT5 machen.

MIT ALL SEINEN DERZEITIGEN NACHTEILEN!

 
Interesting:

Einige Leute stören sich am "nicht normalisierten Preis", aber ich persönlich halte das nicht für ein großes Problem (denn ich verwende Verzögerungen schon seit langem, und diese Preise sind für mich kein großes Problem). Aber das Problem für mich sind solche Dinge wie die Unwilligkeit von OnTimer() im Tester zu arbeiten oder andere ähnliche Dinge.

Dieser Fehler ist eine Folge einer nicht gelungenen Optimierung und wurde in der neuen 358.