Diskussion zum Artikel "Erstellen eines Expert Advisors, der mit verschiedenen Instrumenten handelt" - Seite 2

 
gisip:
Bei MQL4 funktioniert alles auch ohne Timer.
Ihre Aussage ist nicht ganz akzeptabel, wir reden hier über das Testen mit mehreren Währungen. Es gibt keinen Timer in MT4, aber es gibt auch keinen Multicurrency-Tester. Wenn Sie mit MT4 arbeiten, hängt der Expert Advisor in jedem Fall von der Intensität des Kursflusses des Instruments ab, mit dem er arbeitet. Stellen Sie sich eine solche Situation vor: Nehmen wir an, Sie haben einen Multicurrency Expert Advisor auf EURUSD, und wenn es in einem bestimmten Zeitrahmen keine Ticks auf diesem Paar gibt, wie wollen Sie dann die Ankunft neuer Ticks auf anderen Instrumenten verfolgen?
 
Interesting:

Nun, es gibt sie nicht in MQL4, auch Strukturen und Klassen gibt es dort nicht, schlagen Sie vor, sie hier aufzugeben?


IMHO

Die Standardbibliothek zu verwenden oder nicht, ist Geschmackssache (im schlimmsten Fall kann man nur seinen eigenen Code verwenden), aber alle Vorteile aufzugeben, nur weil sie in MT4 nicht verfügbar sind, ist nicht sehr vernünftig.....

Darüber habe ich überhaupt nicht geschrieben.

Ich habe geschrieben, dass MQL5 fehlerhaft ist und bei bestimmten Kombinationen von Instrumenten fehlerhafte Daten erzeugt.

Ein Beispiel: Wenn EURJPY oder EURGBP auf dem EURUSD-Chart überlagert wird, ist alles in Ordnung.

Aber wenn Sie EURCAD überlagern, sind die Daten auf dem Diagramm fehlerhaft, während es in MQL4 keinen solchen Fehler gab.

 
gisip:

Darüber habe ich überhaupt nicht geschrieben.

Ich habe geschrieben, dass MQL5 bei bestimmten Kombinationen von Instrumenten Probleme macht und fehlerhafte Daten erzeugt.

Zum Beispiel: Wenn EURJPY oder EURGBP auf dem EURUSD-Chart überlagert wird, ist alles normal.

Aber wenn Sie EURCAD überlagern, die Daten auf dem Chart mit einem Fehler, während in MQL4 dies nicht der Fall war, gibt es keinen Fehler.

Ich verstand, dass, aber Kos ist richtig (besonders schön Post von 2010.07.02 14:57). Ich kann nicht verstehen, warum alle Entwickler (einschließlich MQ ) hartnäckig den Timer ignorieren. Wenn wir berücksichtigen, dass es keine offiziellen Beispiele für Multicurrency-Trader gibt, dann ist bei MQ in dieser Sache alles klar, aber warum andere beharrlich OnTimer() ignorieren, bleibt für mich persönlich ein GROSSES Rätsel....
 
gisip:

Darüber habe ich überhaupt nicht geschrieben.

Ich habe geschrieben, dass MQL5 bei bestimmten Kombinationen von Instrumenten Probleme macht und fehlerhafte Daten erzeugt.

Zum Beispiel: Wenn EURJPY oder EURGBP auf dem EURUSD-Chart überlagert wird, ist alles normal.

Aber wenn Sie EURCAD überlagern, werden die Daten auf dem Chart mit einem Fehler, während in MQL4 dies nicht der Fall war, gibt es keinen Fehler.

Bitte geben Sie ein Beispiel mit einem Fehler.
 
Renat:
Bitte geben Sie mir ein Beispiel mit einem Fehler.
Nun, ich werde hier nicht alles schreiben, es scheint klar genug zu sein.
//--------- Option mit MQL4 ---------
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD";
double Buffer[];
SetIndexBuffer(0,Buffer); // Array dem Puffer zuweisen
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Linienstil

while(i >= 0){//-- Bewegung von rechts nach links (d.h. vom höchsten zum 0-Bar, der noch gebildet wird) --
Buffer[i] = (iHigh(InstrumentName,0,i) + iClose(InstrumentName,0,i) + iLow(InstrumentName,0,i)) / 3;
i--;//-- next Bar
}///next (while)



//----------- Jetzt fast die gleiche Variante in MQL5 --------
#property indicator_separate_window // Indic. wird in einem eigenen Fenster gezeichnet
#property indicator_buffers 1

#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1 Aqua

input string InstrumentName = "EURCAD";
double Buffer[];
int handle1;

copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);

//--Nun werfen wir auf EURUSD.

//--Es spielt keine Rolle, auf welchem Instrument wir den Indikator platzieren, der Chart sollte sich nicht verändern.
 
Bitte fügen Sie den Code korrekt ein, das macht es einfacher zu verstehen.
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
Rosh:
Bitte fügen Sie den Code korrekt ein, das macht es einfacher zu verstehen.

//--------- Option mit MQL4 ---------
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD";
double Buffer[];
int init()
{
SetIndexBuffer(0,Buffer); // Array dem Puffer zuweisen
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Linienstil
}
int start()
{
while(i >= 0){
Puffer[i] = (iHigh(InstrumentName,0,i) + iClose(InstrumentName,0,i) + iLow(InstrumentName,0,i)) / 3;
i--;//-- next Bar
}//next (while)
}


//----------- Nun fast die gleiche Variante in MQL5 --------
#property indicator_separate_window // Indikator. wird in einem eigenen Fenster gezeichnet
#property indicator_buffers 1

#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1 Aqua

input string InstrumentName = "EURCAD";
double Puffer[];
int OnInit()
{
{ IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
SetIndexPuffer(0,Puffer,INDICATOR_DATA);
}

int OnCalculate(....)
{
copied=CopyClose(InstrumentName,0,0,0,CountBars,Buffer);
}
//--Jetzt werfen wir ihn auf EURUSD.

//--Es spielt keine Rolle, auf welchem Instrument wir den Indikator platzieren, der Chart sollte sich nicht ändern.
 
Gisip, Sie sollten den Code über die Schaltfläche "SRC" einfügen...
 

Bitte machen Sie ein reproduzierbares Beispiel. Das heißt, Sie brauchen vorgefertigten Code, den Sie kompilieren, in ein Diagramm einfügen und Ergebnisse erhalten können.

Ohne dies werden nur wenige Menschen verstehen, wovon wir sprechen.
 

Ich werde denen helfen, die des Bewusstseins beraubt sind.

//----------- Jetzt fast die gleiche Variante in MQL5 --------
#property  indicator_separate_window    // Der Indikator wird in einem separaten Fenster gezeichnet
#property indicator_buffers 1

#property indicator_plots   1
#property indicator_type1   DRAW_LINE
#property indicator_color1  Aqua

input string InstrumentName = "EURCAD";
double Buffer[]; 
int OnInit() 
{
   IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
return(0);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
{
int copied;
int CountBars=rates_total;
  copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);
  return(copied);
}
//--Jetzt auf EURUSD werfen.

//--Es spielt keine Rolle, auf welchem Instrument wir den Indikator platzieren, das Diagramm sollte sich nicht ändern.

Idealerweise sollte es nicht, aber ich habe es quietschen mit Algorithmen erschien es nur auf 1 TF auf die anderen kategorisch zeigte Leere .....

auch nach einer Stunde des Testens.....

und Versuchen, die Geschichte hochzuladen