Fehler, Irrtümer, Fragen - Seite 621

 
sergey1294:
Zuerst dividiert man ganze Zahlen, um eine ganze Zahl zu erhalten, lesen Sie über die Typkonvertierung https://www.mql5.com/ru/docs/basis/types/casting
Ja, das stimmt, aber das war früher nicht der Fall. Ich habe mir nicht einmal die Mühe gemacht.
 
ivandurak:
Ja, in der Tat, aber vorher war es nicht so. Ich habe mir nicht einmal die Mühe gemacht.

War es früher in Vierern? denn in Fünfern war es von Anfang an so und wird es immer so sein (1/2=0; 1./2.=0.5).

Wenn Sie Duplikate angeben möchten, fügen Sie explizit einen Punkt hinzu.

// Script program start function                                    
void OnStart()
  {
   int i;
   double   a,b ;
   for(i=0;i<10;i++)
      {
         a=1./2.;
         b=1./2.;
         Print("a=",a," ","b=",b) ;
      }   
  }
 
Urain:

War es früher in Vierern? Denn es war von Anfang an in Fünfern.

Wenn Sie explizit Duplikate angeben wollen, fügen Sie einen Punkt hinzu.

Das war weder in der vierten noch in der fünften Generation der Fall.

Ganzzahlige Arithmetik (auch in Form von reinen Ganzzahlkonstanten) ist eindeutig.

 

Ich bin auf eine Diskrepanz zwischen dem Tester und dem Demokonto gestoßen:

Nach erfolgreicher Handelsoperation werden Preisfelder in der Antwortstruktur des Handelsservers unterschiedlich ausgefüllt. Im Demokonto ist im Preisfeld alles so, wie es sein soll - der Preis, zu dem die Transaktion getätigt wurde, im Testgerät bleibt dieses Feld 0.

Zum Testen habe ich einen Expert Advisor skizziert, der jeden Tick kauft und den Rückgabecode und den Preis im Protokoll anzeigt:

//+------------------------------------------------------------------+
//|                                                  test-expert.mq5 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
         MqlTradeRequest trade_request;
         MqlTradeResult  trade_result;
         ZeroMemory(trade_request);
         ZeroMemory(trade_result);
         trade_request.action=TRADE_ACTION_DEAL; 
         trade_request.volume=0.1; 
         trade_request.type=ORDER_TYPE_BUY; 
         trade_request.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK); 
         trade_request.symbol=_Symbol;
         OrderSend(trade_request,trade_result);
         Print(trade_result.retcode, "купили по цене ",trade_result.price);
  }
//+------------------------------------------------------------------+

Wenn ich es auf einem Demokonto ausführe, enthält das Protokoll die folgenden Zeichenfolgen:

2012.01.16 12:48:29 test-expert (EURUSD,H1) 10009 gekauft bei 1.266

Und bei der Ausführung im Visualizer werden diese :

2012.01.16 12:49:12 2011.12.30 00:00:11 10009 gekauft zu einem Preis von 0,0

Sagen Sie mir, ist das ein Fehler, ein Bug, oder mache ich etwas falsch?
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 

Gibt es eine Möglichkeit, die Vorgeschichte im Prüfgerät zu kontrollieren?

Ein Test für 1 Stunde, vom Zeitraum 1.01.2011 bis heute, lädt nur 6000 Balken. In den Einstellungen ist - max Bars unbegrenzt. Geschichte ist alles von 1971 auf die Minute geladen.

 

Diese Frage ist unerwartet aufgetaucht:

Wenn ein Indikator über iCustom in einen Expert Advisor geladen wird, wird der Indikator geladen und funktioniert ordnungsgemäß - nur seine OnTimer-Funktion wird nicht aufgerufen.

Soll das so sein, oder ist das ein Fehler?

Der gleiche Indikator, der einfach an ein Diagramm angehängt wird, funktioniert einwandfrei.

Build 574.

 
Dima_S:

Diese Frage ist unerwartet aufgetaucht:

Wenn ein Indikator über iCustom in einen Expert Advisor geladen wird, wird der Indikator geladen und funktioniert ordnungsgemäß - nur seine OnTimer-Funktion wird nicht aufgerufen.

Soll das so sein oder ist das ein Fehler?

Das war so geplant.
 
antt:
So soll es auch sein.
Sehr originell)
 
Dima_S:
Sehr originell)

Zeitgeberereignisse werden für den Graphen und von dort aus für die Programme, die darauf laufen, generiert (auf den Graphen geworfen). Das ist die Ideologie - Programmdurchführung:

Das Client-Terminal sendet die erzeugten Ereignisse an die entsprechenden offenen Karten. Außerdem können Ereignisse von Diagrammen (Diagrammereignisse) oder mql5-Programmen (benutzerdefinierte Ereignisse) erzeugt werden. Die Erzeugung von Ereignissen zum Erstellen und Löschen von grafischen Objekten in einem Diagramm kann durch die Einstellung der Eigenschaften CHART_EVENT_OBJECT_CREATE und CHART_EVENT_OBJECT_DELETE eines Diagramms aktiviert oder deaktiviert werden. Jedes mql5-Programm und jedes Diagramm hat seine eigene Ereigniswarteschlange, in der alle neuen Ereignisse gespeichert werden.

Das Programm empfängt nur Ereignisse von der Karte, auf der es läuft. Alle Ereignisse werden nacheinander in der Reihenfolge ihres Eingangs bearbeitet.

Daher erhält der Indikator, der vom Expert Advisor aufgerufen wird, keine Timer-Ereignisse. Versuchen Sie, den Indikator mit der Funktion ChartIndicatorAdd aus dem Expert Advisor auf das Diagramm anzuwenden, wird sich etwas ändern?

 
Dima_S:
Sehr originell)
Die Veranstaltung war ursprünglich für Experten gedacht und ist im Wesentlichen eine Kartenveranstaltung. Die Verwendung des Ereignisses in Indikatoren wurde später hinzugefügt, mit der Einschränkung, dass der Indikator dem Diagramm hinzugefügt werden muss.