Fehler, Irrtümer, Fragen - Seite 1241

 
barabashkakvn:

Die Update-Suche wird bei der Verbindung mit dem MetaQuotes-Demo-Server ausgelöst. Dies ist in den folgenden Fällen möglich:

  1. Umstellung eines Handelskontos von einem anderen Konto auf ein auf MetaQuotes-Demo eröffnetes Handelskonto;
  2. Beim Neustart des Terminals.
Ich danke Ihnen.
 
joo:

:O

Nein, der Fehler wird nicht mehr angezeigt.

Schrodinger ging im Zimmer auf und ab und suchte nach einem ausgemisteten Kätzchen, das aber weder tot noch lebendig in einer Schachtel lag. )))

 
tol64:

Schrodinger ging im Zimmer auf und ab und suchte nach einem vermurksten Kätzchen, aber das Kätzchen saß in einer Schachtel, weder tot noch lebendig. )))

In der Tat sehr seltsam. Was wird beim nächsten Mal nicht mehr funktionieren?
 
joo:
In der Tat sehr seltsam. Was wird beim nächsten Mal nicht mehr funktionieren?
Das kann man nicht sagen. Wir müssen das überprüfen. )
 
joo:

Ich habe die Drucke angebracht - der Fehler ist weg...

Der Beobachtereffekt in der Quantenmechanik ist etwas...

Wir haben Ihre Situation nur reproduziert, als wir NaN in den Ausdruck eingefügt haben.
 
Renat:
Wir haben Ihre Situation nur reproduziert, als wir NaN in den Ausdruck eingefügt haben.

Funktioniert fabs nun richtig oder nicht?

 
joo:

Funktioniert fabs richtig oder nicht?

Richtig.
 

Guten Tag, ich bitte um Hilfe bei der Umsetzung eines, wie ich meine, einfachen Plans.

Ich habe einen EA, der mit einem Symbol gut funktioniert. Ich möchte es so "optimieren", dass es für mehrere Symbole gleichzeitig funktioniert. Dazu muss ich ein Datenarray erstellen, auf dessen Elemente alle Instanzen des EA zugreifen können, die mit mehreren verschiedenen Symbolen verbunden sind. D.h. es gibt nur ein Datenfeld, aber mehrere Instanzen von EAs. Jede EA-Instanz kann Array-Elemente lesen und ändern.

So wie ich es verstehe, müssen Sie ein Array mit statischen Elementen (static) erstellen.

Ein einfaches Beispiel: Zählen Sie die Gesamtzahl der Ticks in allen Charts, an die die EAs angehängt sind. Verbinden wir den EA mit 2 Charts und erhöhen wir im OnTick()-Ereignis den Zähler um 1. Der Einfachheit halber habe ich versucht, anstelle des Arrays einen statischen Variablenzähler zu verwenden. Leider arbeitet jeder EA nur mit seinem Zähler, der Zähler ist nicht "gemeinsam". Ergebnis:

symbol1, tick1 : Zähler = 0;

symbol1, tick2 : Zähler = 1;

symbol2, tick1 : Zähler = 0; - hier erwartet Zähler = 2

Ich habe zum Beispiel eine einfache Klasse mit einem Zähler erstellt:

//+------------------------------------------------------------------+
//|                                                   TestStatic.mqh |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class TestStatic
  {
private:
static int counter;
public:
                     TestStatic();
                    ~TestStatic();

static void IncreaseCounter();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
TestStatic::TestStatic()
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
TestStatic::~TestStatic()
  {
  }
//+------------------------------------------------------------------+
int TestStatic::counter=0;
TestStatic::IncreaseCounter()
  {
   Print("Symbol: "+_Symbol +", counter: "+ TestStatic::counter);
   TestStatic::counter++;
  };

Hier ist der EA-Code:

//+------------------------------------------------------------------+
//|                                                Exp_testMulti.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
#include <TestStatic.mqh>

static string tickCounter[2][2];

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   TestStatic::IncreaseCounter();
    
  }
//+------------------------------------------------------------------+

Bitte helfen Sie mir, es zu verstehen, vielen Dank im Voraus!

 
VangoghFX:

Guten Tag, ich bitte um Hilfe bei der Umsetzung eines meiner Meinung nach einfachen Plans.

Ich habe einen EA, der mit einem Symbol gut funktioniert. Ich möchte es so "optimieren", dass es für mehrere Symbole gleichzeitig funktioniert. Dazu muss ich ein Datenarray erstellen, auf dessen Elemente alle Instanzen des EA zugreifen können, die mit mehreren verschiedenen Symbolen verbunden sind. D.h. es gibt nur ein Datenfeld, aber mehrere Instanzen von EAs. Jede EA-Instanz kann Array-Elemente lesen und ändern.

So wie ich es verstehe, müssen Sie ein Array mit statischen Elementen (static) erstellen.

Ein einfaches Beispiel: Zählen Sie die Gesamtzahl der Ticks in allen Charts, an die die EAs angehängt sind. Verbinden wir den EA mit 2 Charts und erhöhen wir im OnTick()-Ereignis den Zähler um 1. Der Einfachheit halber habe ich versucht, anstelle des Arrays einen statischen Variablenzähler zu verwenden. Leider arbeitet jeder EA nur mit seinem Zähler, der Zähler ist nicht "gemeinsam". Ergebnis:

symbol1, tick1 : Zähler = 0;

symbol1, tick2 : Zähler = 1;

symbol2, tick1 : Zähler = 0; - hier erwartet Zähler = 2

Ich habe zum Beispiel eine einfache Klasse mit einem Zähler erstellt:

Hier ist der EA-Code:

Bitte helfen Sie mir, es zu verstehen, vielen Dank im Voraus!

Nachmittags. Insbesondere, um Ihr Beispiel mit Ticks, globale Variablen des Terminals zu implementieren (es wurde vor kurzem ein Artikel zu diesem Thema veröffentlicht). Über ein solches Angebot... Ich bin nicht sicher, ich sollte es versuchen. Aber ich kann eine andere Variante vorschlagen. In einem Expert Advisor, verschreiben die notwendigen Symbole für die Arbeit und machen, wie Sie vorgeschlagen, eine statische / globale Array der notwendigen Daten. Und lassen Sie den EA alle erforderlichen Symbole in einer Schleife durchlaufen.
 
Tapochun:
Guten Tag. Speziell für Ihr Beispiel mit Ticks funktionieren globale Terminalvariablen (dazu gab es kürzlich einen Artikel ). Über ein solches Angebot... Ich bin nicht sicher, ich muss es ausprobieren. Aber ich kann eine andere Variante vorschlagen. In einem einzigen Expert Advisor, verschreiben die notwendigen Symbole für die Arbeit und machen, wie Sie vorgeschlagen, eine statische / globale Array der notwendigen Daten. Und lassen Sie den Expert Advisor alle notwendigen Symbole durchlaufen.

Vielen Dank für Ihre Antwort.

Ich habe das Beispiel mit den Zecken als das einfachste und anschaulichste Beispiel verwendet, um die allgemeine Idee zu beschreiben. Der Expert Advisor verwendet komplexere Algorithmen.

Die Variante, bei der die N-Symbole in einem EA geschrieben werden, gefällt mir nicht, weil sie zu umständlich und schwer zu handhaben ist. Es gibt mehrere Artikel zu diesem Thema auf dem Portal, und ich habe sie gesehen: aber ich mag keine großen Schleifen, Arrays, Kopieren von Daten, eine Menge von Packungen von Variablen für jedes Symbol, etc. Ich möchte einen einfacheren und meiner Meinung nach effizienteren Ansatz verwenden: einen EA-Code für jedes Symbol (das Symbol wird durch den Chart bestimmt, mit dem der EA verknüpft ist) - und jede Kopie des EA arbeitet parallel zu den anderen. In diesem Fall werden jedoch die analytischen Informationen, die für die Entscheidungsfindung benötigt werden, untereinander ausgetauscht.

Die Idee, globale Variablen zu haben, hat mich besucht, aber es ist eher ein prozeduraler Ansatz, und ich möchte alle Vorteile der OOP nutzen. Ich habe vor, eine separate Klasse zu schreiben, die die notwendigen analytischen Daten in Form eines Arrays an Expert Advisors weitergibt und sie Handelsentscheidungen treffen lässt.

Grund der Beschwerde: