Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 66

 
mario065:

Hallo,

Nein, natürlich nicht.

Wenn es mehr als einen Truthahn gibt, musst du für jeden so viele Paare machen, wie er frisst.

Ein Handler zur Verwendung aller Paare.

Verwenden Sie einen Handle nach dem anderen, d.h. kopieren Sie die Indikatorpuffer und weisen Sie dann den Wert des nächsten Indikators dem Handle zu.

Aber ich verstehe nicht, warum Sie brauchen, um auf Handles zu speichern, wenn sie elementare Integer sind und haben fast keine Auswirkungen auf Ressourcen?

 
Reshetov:

Verwenden Sie die Handles nacheinander, d.h. kopieren Sie die Indikatorpuffer und weisen Sie dem Handle dann den Wert des nächsten Indikators zu.

Aber ich verstehe nicht, warum Sie brauchen, um auf Handles zu speichern, wenn sie elementare Ganzzahlen sind und haben praktisch keine Auswirkungen auf die Ressourcen?

Hallo zusammen.

Letztes Jahr habe ich eine externe Funktion wie diese geschrieben:

void CalculatePairs(string dSymbol) {

   atrHandle1=iATR(dSymbol, TimeFrame1, ATRPeriod);
   atrHandle2=iATR(dSymbol, TimeFrame5, ATRPeriod);
   atrHandle3=iATR(dSymbol, TimeFrame15, ATRPeriod);
   atrHandle4=iATR(dSymbol, TimeFrame30, ATRPeriod);
   atrHandle5=iATR(dSymbol, TimeFrame60, ATRPeriod);
   muvHandle1=iMA(dSymbol,TimeFrame1,MAPeriod,0,MAMethod,InpPr);
   muvHandle2=iMA(dSymbol,TimeFrame5,MAPeriod,0,MAMethod,InpPr);
   muvHandle3=iMA(dSymbol,TimeFrame15,MAPeriod,0,MAMethod,InpPr);
   muvHandle4=iMA(dSymbol,TimeFrame30,MAPeriod,0,MAMethod,InpPr);
   muvHandle5=iMA(dSymbol,TimeFrame60,MAPeriod,0,MAMethod,InpPr);
   if(atrHandle1<0 || atrHandle2<0 || atrHandle3<0 || atrHandle4<0 || atrHandle5<0 ||
   muvHandle1<0 || muvHandle2<0 || muvHandle3<0 || muvHandle4<0 || muvHandle5<0 )
     {
      Alert("Error Creating Handles for indicators - error: ",GetLastError(),"!!");
     }

   double ma1[],ma2[],ma3[],ma4[],ma5[];
   double atr1[],atr2[],atr3[],atr4[],atr5[];

   ArraySetAsSeries(ma1, true);ArraySetAsSeries(ma2, true);ArraySetAsSeries(ma3, true);
   ArraySetAsSeries(ma4, true);ArraySetAsSeries(ma5, true);
   ArraySetAsSeries(atr1, true);ArraySetAsSeries(atr2, true);ArraySetAsSeries(atr3, true);
   ArraySetAsSeries(atr4, true);ArraySetAsSeries(atr5, true);

   if (NormalizeDouble(CopyBuffer(muvHandle1,0,0,1,ma1),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle2,0,0,1,ma2),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle3,0,0,1,ma3),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle4,0,0,1,ma4),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle5,0,0,1,ma5),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle1,0,0,1,atr1),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle2,0,0,1,atr2),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle3,0,0,1,atr3),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle4,0,0,1,atr4),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle5,0,0,1,atr5),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}

   Result = 0;
}
double FGroup(){
      CalculatePairs(Currency1);{
         Pair1 = Result;}

Natürlich gab es bis zu den Berechnungen den Fehler 4806, aber dann funktionierte es gut.

Heute habe ich diesen Code geöffnet und mich gefragt, ob es einen anderen Weg gibt.

Ein Fehler ist ein Fehler.

Wie viele Handles sollte ich für 8 Paare und 5 Zeitrahmen erhalten?

Dies ist keine Frage der Ressourcen, ich muss etwas Besseres tun.

Документация по MQL5: Основы языка / Функции / Описание внешних функций
Документация по MQL5: Основы языка / Функции / Описание внешних функций
  • www.mql5.com
Основы языка / Функции / Описание внешних функций - Документация по MQL5
 
mario065:

Hallo zusammen.

Letztes Jahr habe ich eine externe Funktion wie diese geschrieben:

Bis zu den Berechnungen gab es natürlich die Fehlermeldung 4806, aber dann funktionierte es gut.

Ich habe diesen Code heute geöffnet und mich gefragt, ob es einen anderen Weg gibt.

  1. Eine Möglichkeit wofür?
  2. Wozu brauche ich die Funktion CalculatePairs(), wenn sie außer Fehlern nichts anzeigt?

Entfernen Sie genau diese Funktion aus Ihrem Code und schlafen Sie gut.

 
Reshetov:
  1. Der Weg wovon?
  2. Wozu brauchen Sie die Funktion CalculatePairs(), wenn sie nichts als Fehler produziert?

Entfernen Sie genau diese Funktion aus Ihrem Code und schlafen Sie gut.

Es gibt einige "große" Berechnungen, die nicht angezeigt werden.

Dann nehmen andere Funktionen das ausgewählte Paar und machen wieder etwas.

Die Methode ist einfach.

Zum Beispiel:

Wir machen einen Griff des Indikators, es hat kein Symbol, Zeitrahmen.

Wenn wir einen CopyBuffer erstellen, geben wir den Zeitrahmen und das Paar an.

Zum Beispiel:

int OnInit()

Es sieht folgendermaßen aus: Handle = Indikatorname

void OnTick()

Es würde wie folgt aussehen: CopyBuffer(angegebenes Symbol, Zeitrahmen, woher wir es kopieren, wie viel wir kopieren, wohin wir es kopieren)

Dies ist nur ein Dialog :) mit Ihnen.

 
mario065:

Es gibt einige "tolle" Berechnungen, die nicht gezeigt wurden.

Verstehe, Sie haben ArraySetSeries() auf Arrays ohne Daten angewendet, d.h. bevor Informationen in sie geladen werden, während Sie es nach dem Kopieren von Puffern benötigen.
 
Reshetov:
Verstehe: Sie haben ArraySetSeries() auf Arrays ohne Daten angewandt, d.h. bevor Informationen in sie geladen wurden, während dies nach dem Kopieren von Puffern geschehen sollte.

Ganz genau.

Aber ich denke, es wird für alle einfacher sein, wenn es in CopyBuffer gemacht wird - d.h. man gibt an, welches Paar und welchen Rahmen.

Der Indikator selbst führt die gleiche Berechnung durch, wenn er nur das Paar und den Rahmen angibt.

Wenn die Architektur von MT5 selbst es erlaubt, dies einfacher zu tun.

Gute Idee :) .

 
Reshetov:
Verstehe: Sie haben ArraySetSeries() auf Arrays ohne Daten angewandt, d.h. bevor Informationen in sie geladen wurden, während Sie es nach dem Kopieren von Puffern benötigen.
Kein Unterschied.
 
Ich habe sozusagen alles konfiguriert, mich abgemeldet, Einstellungen im Terminal vorgenommen, aber ich möchte nicht automatisch handeln. Wenn ich versuche, meinen schwebenden Auftrag zu platzieren, installiert er sich und schreibt mir über die Synchronisierung und löscht alle Aufträge im Terminal, und dann sehe ich Aufträge vom Lieferanten. was muss ich tun?
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Yedelkin:

Wenn der Expert Advisor MFI verwendet, muss sein Code eine Zeile enthalten, in der das Handle dieses Indikators abgerufen wird:"MQL5 Reference / Technical Indicators / iMFI". Daher wird der Umgang mit dem Indikator des gleitenden Durchschnitts hier beschrieben:"MQL5 Referenzhandbuch / Technische Indikatoren / iMA ".

Versuchen Sie auch, den Artikel"Indikator für Indikator in MQL5" zu lesen.

Ich habe den Artikel gelesen. Meine Frage "Wie kann ich die iMA-Handles im MFI-Indikatorfenster entfernen und den Schlusskurs des Balkens registrieren?" wurde damit jedoch nicht beantwortet.

Der von Ihnen erwähnte iMA-Handle bezieht sich nicht auf den iMA im Indikatorfenster. Beschreibung mit der Standardmethode entfernt der Berater den iMA-Handle aus dem Chart.
 
Leser: Lesen Sie den Artikel. Meine Frage "Wie entferne ich die Griffe des iMA, die sich im MFI-Indikatorfenster befinden und den Schlusskurs des Balkens registrieren?" wurde jedoch nicht beantwortet.

Sie haben das Problem ursprünglich wie folgt umrissen: "Der Expert Advisor verwendet MFI; Ma ist nicht auf dem Chart (Fenster #1), sondern im Fenster mit dem MFI-Indikator (Fenster #2)". Ich antwortete:"Wenn Ihr Expert Advisor MFI verwendet, dann muss sein Code eine Zeile mit dem Handle dieses Indikators enthalten: "MQL5 Reference Guide / Technical Indicators / iMFI" .

Daher schlage ich vor, dass Sie zunächst herausfinden, wie genau Ihr Expert Advisor den Indikator-Handle von "Fenster #2" erhält. Und wir werden uns dort etwas einfallen lassen.

Leser : Ich habe den Artikelgelesen . Dies beantwortet jedoch nicht meine Frage ". iMA im Fenster des MFI-Indikators und die Registrierung des Schlusskurses des Balkens".
Eine klärende Frage: Auf welchen Daten bauen Sie den MA-Indikator auf: auf den Werten des MFI-Indikators oder auf den Schlusskursen der Balken? Es wurde noch nichts über die "Registrierung von Barschlusskursen" gesagt. Aus diesem Grund habe ich einen Link zu dem Artikel "Indikator aus Indikator" angegeben.
Grund der Beschwerde: