Fehler, Irrtümer, Fragen - Seite 2095

 

Es gibt einen neuen Fehler im Spread-Tester. Sie ist sowohl im visuellen Modus als auch im Standardmodus vorhanden (der Experte sieht die aufgeblähten Spreads).

Sie können dies überprüfen, indem Sie den MA-Experten aus den Standardbeispielen mit den Standardparametern ausführen.

Für einige Daten wird die Spanne von 2-5 auf 200-500 für den ganzen Tag von 0:00 bis 23:59 Uhr erweitert. Ich habe es bei 2 Maklerfirmen überprüft, das Problem liegt wahrscheinlich nicht bei den Angeboten, sondern im Tester selbst.

Hier ist ein Beispiel für das Datum 16.10.2017. Der Test sollte ab dem 16.10.2017 durchgeführt werden. Im Hintergrund ist das Terminal mit dem zu diesem Datum gescrollten Chart zu sehen - der Spread liegt dort im normalen Bereich.

Ein weiteres Beispiel für ein anderes. EIN WEITERES BEISPIEL EINES ANDEREN MAKLERUNTERNEHMENS

Ich habe einen Expert Advisor eingerichtet, der die Spreads kontrolliert, und es sind diese 200 bis 500, die er sieht. Daher arbeitet es den ganzen Tag, ohne dem Algorithmus zu folgen.

Das andere gefundene Datum ist der 19.09.2017. Ran den Test von September bis heute - etwa 20-30% der Tage mit überteuertem Spread. Bis zum Jahr 2000 wurde eine Überprognose gesehen.

Senden an SD.

PS. Beantwortet. Wird mit dem neuen Build behoben.
 
elibrarius:

...

Senden an SD.

Ich warte auch auf eine Antwort auf diese Frage:

Offen, Gestartet: 2017.12.16 14:36, #1911211

 

OrderSend auf MetaQuotes-Demo hängt sich auf - manchmal läuft es für ein paar Sekunden, manchmal kann das Skript nicht entfernt werden (nur durch Schließen des Terminals).

 
Mehrere Fehler in TRADE_ACTION_CLOSE_BY
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  MqlTradeRequest Request = {0};
  MqlTradeResult Result;      
      
  Request.action = TRADE_ACTION_CLOSE_BY;
  Request.position = OrderSend(_Symbol, OP_SELL, 0.01, Bid, 100, 0, 0);
  Request.position_by = OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0);

  Request.symbol = _Symbol; // Если убрать эту строку, то сообщения в логе изменятся

  Print(OrderSend(Request, Result)); // false
}

Ergebnis

'7489613': instant sell 0.01 GBPUSD at 1.34334 (deviation: 100)
'7489613': accepted instant sell 0.01 GBPUSD at 1.34334 (deviation: 100)
'7489613': deal #176902665 sell 0.01 GBPUSD at 1.34334 done (based on order #193547458)
'7489613': order #193547458 sell 0.01 / 0.01 GBPUSD at 1.34334 done in 73.458 ms
'7489613': instant buy 1.00 GBPUSD at 1.34342 (deviation: 100)
'7489613': accepted instant buy 1.00 GBPUSD at 1.34342 (deviation: 100)
'7489613': deal #176902666 buy 1.00 GBPUSD at 1.34342 done (based on order #193547459)
'7489613': order #193547459 buy 1.00 / 1.00 GBPUSD at 1.34342 done in 76.044 ms
'7489613': failed close position #193547459 buy 0.99 GBPUSD by position #193547458 [Invalid request]


Alles überschneidet sich eigentlich perfekt, aber nur in den Protokollen sind fehlerhafte Meldungen, und die OrderSend-Rückgabe ist negativ. Wenn Sie die hervorgehobene Zeile im Quelltext entfernen, können Sie in den Protokollen eine völlig unzureichende Meldung sehen.

 

ME Styler-Wanze MT4/MT5

 #define  f(x) x   //пробел вначале строки и перед конечным выражением
#define  f(x) x    //стилизатор удалил пробел в начале строки. Пробел перед конечным выражением остался

 #define  f(x) (x)   //пробел вначале строки и перед конечным выражением, ЗАКЛЮЧЕННЫМ В СКОБКИ
#define  f(x)(x) //стилизатор удаляет не только пробел в начале строки, но и разделяющий пробел между аргументом и конечным выражением. 

//В итоге компилятор выдает ошибку во втором случае
//'(' - unexpected in macro definition

 

Echte M1-Zecken. Wenn die Spanne im Datenfenster des Testers negativ ist (vis. Modus), wird die Spanne falsch. Ihr Server, 2017.10.23 01:00 und 01:01 Minuten

Ich habe einen Expert Advisor erstellt, der den Spread überprüft. Wenn der Spread negativ ist, sieht der Expert Advisor den falschen Spread, - erhöht um 1. Der Screenshot zeigt -1 im EA, -2 auf dem Chart. Wenn der Spread positiv ist, ist im Expert Advisor alles richtig.

Der Spread für echte Ticks kann sich stark vom Spread für den Eröffnungskurs unterscheiden. Hier ist ein Beispiel mit einer Differenz von 39 Punkten. 2017.10.23 00:53
Zu den Eröffnungspreisen:


Über
echte Zecken:

Etwas, von dem ich dachte, dass es in beiden Modi übereinstimmen sollte...

 
elibrarius:

Ich habe einen Expert Advisor erstellt, der den Spread überprüft. Wenn der Spread negativ ist, sieht der Expert Advisor den falschen Spread - erhöht um 1. Der Screenshot zeigt -1 im Expert Advisor, -2 auf dem Chart. Wenn der Spread positiv ist, ist im Expert Advisor alles korrekt.

Ich bin sicher, dass Sie bei der Berechnung der Spanne einen Fehler im Code gemacht haben. Wenn Sie ihn nicht finden können, zeigen Sie bitte den Code.

 

Was ist mit den Funktionen von Copy... passiert? ? früher haben sie Zeitreihen zurückgegeben, aber jetzt nicht mehr:


Im Prinzip ist es nicht schwer, die Array-Indizierung selbst zu erweitern, aber früherer Code, bei dem ich Funktionen verwendet habe, die Zeitreihen nach dem Kopieren erweitern... wird jetzt wahrscheinlich nicht mehr funktionieren
 
Konstantin:

Was ist mit den Funktionen von Copy... passiert? Früher haben sie die Zeitreihen zurückgegeben, jetzt nicht mehr:


Im Grunde ist es nicht schwer, die Array-Indizierung selbst zu erweitern, aber der frühere Code, in dem ich Funktionen verwendet habe, die Zeitreihen nach dem Kopieren erweitern... wird jetzt wahrscheinlich nicht mehr funktionieren

Dies war ursprünglich der Fall und ist in der Hilfe beschrieben.


 
fxsaber:

Ich bin sicher, dass Sie bei der Berechnung der Spanne einen Fehler im Code gemacht haben. Wenn Sie ihn nicht finden können, zeigen Sie mir bitte den Code.

Hm. Finden Sie es ))))

int OnInit()
  {
   return(INIT_SUCCEEDED);
}

void OnTick()
  {
  int s[];
  CopySpread(_Symbol,_Period,0,1,s);
  Print(s[0]);
  }

Grund der Beschwerde: