Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 832

 
Igor Makanu:

Expert Advisors haben keine Indikatorpuffer und zeichnen nicht im Terminal

Lesen Sie in der Hilfe, was der Unterschied zwischen Expert Advisors und Skripten und Indikatoren ist

Ich danke Ihnen für Ihre Antwort.

Können Sie mir sagen, wie ich diese Funktion implementieren kann?

 

Hallo! Hilfe bei der Übergabe eines Arrays an eine Funktion

eine Struktur haben

struct pattern
  {
   double            x;
   datetime          y;
 };  

Ich deklariere ein paar statische Arrays wie diese Struktur

pattern last_pattern_up[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS], last_pattern_dn[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS];

Jetzt möchte ich ein statisches Array in eine Funktion übergeben, aber es gibt mir einen Fehler - '[' - Array erforderlich

void MyFunction(pattern &array)
{
   Print(array[1][1].x," ",array[1][1].y);
   }

Wie übergebe ich ein Array korrekt an eine Funktion?

 
Tango_X:

Hallo! Hilfe bei der Übergabe eines Arrays an eine Funktion

eine Struktur haben

Ich deklariere ein paar statische Arrays wie diese Struktur

Jetzt möchte ich ein statisches Array in eine Funktion übergeben, aber es gibt mir einen Fehler - '[' - Array erforderlich

Wie übergebe ich ein Array korrekt an eine Funktion?

void MyFunction(pattern &array[][NUMBER_OF_PERIODS])
 
Artyom Trishkin:

Danke! Super!

 
Alexander Layzerevich:

Ich danke Ihnen für Ihre Antwort.

Können Sie mir sagen, wie ich diese Funktion implementieren kann?

nur separat einen Expert Advisor, der einen Indikator über iCustom() aufruft und separat einen Indikator für einen Chart

dass der Expert Advisor, wenn er den Indikator aufruft, eine neue Kopie des Indikators verwendet, d.h. wenn Sie den Expert Advisor auf einem Diagramm starten und seine Einstellungen ändern (die, die Sie an iCustom() übergeben), wird der Indikator auf dem Diagramm nicht reagieren

der Indikator, der vom Expert Advisor aufgerufen wurde, wird am Ende des Tests im Strategy Tester angezeigt. Während des Tests im visuellen Modus können Sie den Indikator auf den Strategy Tester Chart werfen....

Wenn Sie den Indikator anders verwenden wollen, können Sie einen Indikator Ihrer Wahl verwenden, aber ich weiß nicht, wie man die Parameter in der Vorlage ändern kann ... vielleicht hat es jemand getan

 
Alexander Layzerevich:

Ich danke Ihnen für Ihre Antwort.

Können Sie mir sagen, wie ich diese Funktion implementieren kann?

Linien zeichnen(OBJ_TREND)

 
Alexander Layzerevich:

Ich danke Ihnen für Ihre Antwort.

Können Sie mir sagen, wie ich diese Funktion implementieren kann?

Wenn Sie Linien des Indikators zeichnen, ohne den Indikator überhaupt zu verwenden, sondern nur mit Berechnungen, die vom Indikator zum Expert Advisor übertragen werden, dann nur mit grafischen Objekten - Trendlinien. Es ist allerdings teuer. Aber wir können den Sichtbarkeitsbereich der Balken im Diagramm begrenzen.

 

Vielen Dank für die Tipps.

Der Indikator tut genau das Gleiche.

d.h. ich habe Werte berechnet und muss sie mit Linien verbinden(OBJ_TREND)

 
Igor Makanu:

mindestens ein Parameter bei der Änderung einer Bestellung geändert werden muss, Fehler 1 - wenn nach dem Senden einer Anfrage an den Server nichts geändert werden muss

Wenn Sie das, was Sie an den Server gesendet haben, ausdrucken, sehen Sie es sofort.

Der Fehler bleibt, obwohl ich eine zusätzliche Bedingung hinzugefügt habe, um zu prüfen, ob es einen Stopp oder einen Gewinn gibt

if(OrderMagicNumber() == id_number && (OrderStopLoss() == 0 || OrderTakeProfit() == 0))


Auch zum Nachziehen

if(OrderMagicNumber() == id_number && OrderStopLoss() != 0)
           {
            if(OrderType() == OP_BUY)
              {
               if(OrderComment() == "1" && Bid - OrderOpenPrice() >= a1 && OrderStopLoss() != OrderOpenPrice() + l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && Bid - OrderOpenPrice() >= a2 && OrderStopLoss() != OrderOpenPrice() + l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l2,OrderTakeProfit(),0,clrNONE);};
              }
            else
              {
               if(OrderComment() == "1" && OrderOpenPrice() - Ask >= a1 && OrderStopLoss() != OrderOpenPrice() - l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && OrderOpenPrice() - Ask >= a2 && OrderStopLoss() != OrderOpenPrice() - l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l2,OrderTakeProfit(),0,clrNONE);};
              };
           };
 
Alexandr Sokolov:

Der Fehler bleibt, obwohl ich eine zusätzliche Bedingung hinzugefügt habe, um das Vorhandensein von Stop oder Profit zu prüfen

Auch zum Nachziehen

OrderStopLoss() != NormalizeDouble(OrderOpenPrice() - l1,_Digits)
Grund der Beschwerde: