Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 89

 
Alexey Kozitsyn:
Das sollten Sie nicht tun. Das wäre ein großer Verlust an Ressourcen. Und was ist falsch an einer schnellen Reaktionszeit ohne Schleifenbildung?
Ich danke Ihnen. Es ist nur so, dass das offizielle mql4-Tutorial es als Beispiel nennt, deshalb bin ich daran interessiert. Ich dachte, das könnte besser funktionieren als der übliche Weg.
 
LRA:
Ein Tick ist das Eintreffen neuer Daten vom Server. Und sie müssen sofort nach ihrem Eintreffen bearbeitet werden. Wenn Sie es in einer Schleife mit 5 ms Verzögerung machen, dann werden die meisten Ticks genau während dieser Verzögerung kommen. Die Verarbeitung wird also um 0 ... verzögert. 5 ms.
Ja, das ist durchaus logisch. Ich dachte nur, dass die start()-Funktion selbst auch Zeit mit ihrer Schleife verbringt, und vielleicht stiehlt ihre Iteration einige Sekundenbruchteile oder mehr (es kann erforderlich sein, einen Server anzusprechen, um einen großen Datenstapel auf einmal zu erhalten), im Gegensatz zu einer reinen Schleife. Vielleicht ist es nur meine Einbildung, weil ich die inneren Mechanismen nicht verstehe, aber es gibt einen Grund, warum diese Methode in das mql4-Tutorial aufgenommen wurde.
 
smart_man:
Ich danke Ihnen. Es ist nur so, dass das offizielle mql4-Tutorial dies als Beispiel anführt, also war ich interessiert. Ich dachte, vielleicht funktioniert das irgendwie besser als der übliche Weg.
Ja, aber der Leitfaden ist etwas veraltet. Das ist natürlich besser als gar nichts, aber es ist nützlich, gleichzeitig die Dokumentation durchzusehen und zu prüfen, ob Funktionen wie start() noch enthalten sind. Es ist jetzt besser, den OnTick()-Handler für Expert Advisors zu verwenden.
 

Guten Tag!

 
Guten Tag, können Sie mir den günstigsten Broker für das Währungspaar USD/RUB, den minimalen Spread und den minimalen Swap etc. mit Provision nennen?
 
kanybek06:
Hallo, können Sie mir den günstigsten Broker für das Währungspaar USD/RUB nennen?

Da Sie noch ganz am Anfang stehen, werden Sie mit jedem sehr zufrieden sein. Recherchieren Sie im Internet und vergleichen Sie sie. Kommunizieren Sie mit ihnen, stellen Sie Fragen. Sie werden eine Antwort erhalten.

Hier geht es um Fragen zur Programmierung und zur Metatrader-Handelsplattform.

 

Wie kann man gegenläufige Aufträge am besten abschließen, wenn sie gleichzeitig abgeschlossen werden müssen?

1) jede einzelne (entweder manuell oder durch TP/SL)

oder

2) In Verbindung mit OrderCloseBy (nur manuell)?

Wird es eine einzelne Spread-Speicherung mit OrderCloseBy geben, wie im Tutorial beschrieben? Verbieten die Entwicklungshilferegelungen nicht einen solchen Abschluss, und wird diese Spanne zurückgegeben? Wie können wir das technisch überprüfen?

Ich danke Ihnen.

 
Es gibt eine Vorlagenklasse für die Arbeit mit einem Array.
#property strict
#include <ObjectVariables.mqh>
#include <Arrays\varQSort.mqh>
#include <Arrays\objQSort.mqh>

template<typename T1>
class ArrayList
{
   private:
      T1 array[];
      QuickSorts<T1> *qs;
      int size;
      int index;

   public:
      //прочие функции
      void QuickSort();//отсортировать массив
      //прочие функции
};
//+------------------------------------------------------------------+
//| Сортировка массива
template<typename T1>
void ArrayList::QuickSort()
{
   int idx = index;//сохранение положения индекса
   if(IsPointer(array[0])) // true - массив содержит указатели класса
      qs /*ошибка 2*/ = new ObjQSort<T1>();
   else
      qs /*ошибка 2*/ = new VarQSort<T1>();
   qs.Sort(array, 0, index);
   index = idx;
}

Für diese Vorlagenklasse müssen wir eine Sortierung implementieren, da ein Array komplexe Datentypen speichern kann. Zum Beispiel:
ArrayList<PP*> *dde; // PP - класс

Man kann verschiedene Funktionen für einfache und komplexe Typen schreiben, aber der Compiler versteht nicht, dass Funktionen streng nach Datentyp abgegrenzt sind und flucht weiter:
<' - unzulässige Operation ArrayList.mqh verwenden

Deshalb habe ich beschlossen, die Schnittstelle einzubetten:

#property strict
template <typename T1>
interface QuickSorts
{
   void Sort(T1 &array[], int beg, int end);
};
#property strict
#include <Arrays\QuickSorts.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
template <typename T1>
class VarQSort : public /*ошибка 1*/ QuickSorts
{
private:

public:
   void Sort(T1 &array[], int beg, int end);
   VarQSort(){}
   ~VarQSort(){}
};
template <typename T1>
void VarQSort::Sort(T1 &array[], int beg,int end)
{
   //алгоритм функции
}
#property strict
#include <Arrays\QuickSorts.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
template <typename T1>
class ObjQSort : public /*ошибка 1*/ QuickSorts
{
private:

public:
   void Sort(T1 &array[], int beg, int end){}
   ObjQSort(){}
   ~ObjQSort(){}
};

Alle Teile des Konstrukts sind kompilierbar. Aber wenn Sie versuchen, es zu deklarieren:
ArrayList<PP*> *dde; // PP - класс
dann werden beim Kompilieren der Datei diese Fehler angezeigt:

'QuickSorts' - Vorlage stimmt nicht überein varQSort.mqh /*Fehler 1*/
'=' - Typ-Fehlanpassung ArrayList.mqh /*Fehler 2*/


Was sollte ich im Code korrigieren, um diese Typinkongruenz zu beseitigen? Ich verstehe nicht, warum sie überhaupt erschienen ist.

P.S.
<' - unzulässige Operation varQSort.mqh verwenden
spukt mir auch in diesem Konstrukt im Kopf herum. Genau diesen Fehler wollte ich loswerden. Aber ich verstehe diesen Fehler, und ich verstehe diese beiden nicht.
 
виталик:
Hallo, bitte helfen Sie mit einem Stück Code zu sortieren gerissen von einem Indikator PivotsDaily v2.mq4, wie man es zu einer Stunde oder halbe Stunde zu konvertieren, nur in eine oder andere Weise, so wäre es klarer Änderungen, bitte helfen, danke im Voraus.

Sie haben bereits in einem anderen Thread geschrieben. Es ist genug. Es besteht keine Notwendigkeit, sich mit anderen zusammenzutun.
 
Hallo, Könnten Sie mich bitte beraten, ich schrieb ein EA vor 1,5 Jahren, es funktionierte, alles war gut. Ich habe es die ganze Zeit nicht benutzt, und jetzt lässt es sich nicht auf einer Karte installieren. Wer weiß, was der Grund dafür sein könnte? Kann es an einigen MT4-Updates liegen?