Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1174

 

Ich habe eine Frage zum Aufruf von Indikatoren über iCustom.

1. Es besteht die Möglichkeit, einige Indikatorparameter aus der Liste der an iCustom übergebenen Parameter auszuschließen. Ich möchte zum Beispiel keinen String-Parameter oder einen anderen Parameter übergeben. ein externer Indikatorparameter mit dem Modifikator sinput auch in iCustom angegeben werden sollte, wenn er von einem Expert Advisor aufgerufen wird?

2. Was ist die beste Lösung, wenn der Indikator sehr viele Parameter hat (etwa Hunderte)? Gibt es eine fertige Lösung, wie man diesen Indikator aufrufen kann?

Ich danke Ihnen.

 

Ich möchte, dass der EA offene Positionen schließt, wenn der Kurs den MA überquert.

Bitte beraten Sie mich, wie ich dies umsetzen kann.

Dankeschön

 
RichLux:

Ich möchte, dass der EA offene Positionen schließt, wenn der Kurs den MA überquert.

Bitte beraten Sie mich, wie ich dies umsetzen kann.

Dankeschön

void CheckForClose_MA()
  {
   double MA=iMA(NULL,0,ma_period,ma_shift,MODE_SMMA,PRICE_MEDIAN,0);

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
        //---- check order type 
      if(OrderType()==OP_BUY)
        {
         if(Low[1]>=MA) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
     }
//----


doubleiMA(
stringsymbol,// Symbolname
inttimeframe,// Zeitrahmen
intma_period,// Zeitraum
intma_shift,// Durchschnitt verschieben
intma_method,// Mittelungsmethode
intangewandter_Preis,//Preistyp
intshift// shift
);

 

Wie erfährt man, welche Parameter über iCustom an den Expert Advisor gesendet wurden? Ich erhalte einen falschen Wert aus dem in iCustom angegebenen Puffer. Ich möchte prüfen, ob die Daten den Indikator "erreicht" haben, nachdem iCustom aufgerufen wurde.

Wie kann ich überhaupt debuggen?

 
Александр:

Es gibt eine Funktion.


Jeder Funktionsaufruf ändert die Variable ХХ, und ХХ muss extern sein (die Logik, die ich brauche), aber jeder Funktionsaufruf beginnt damit, dass ХХ 0 ist, und dementsprechend wird return(ХХ) seinen Wert zurückgeben. D.h. ich verstehe nicht, wie man die Variable XX extern macht und die Funktion "autonom", isoliert, aufrufen kann. Und zwar mit Hilfe von MQ4. Ich danke Ihnen!


Ich habe ihn mehrmals gelesen, aber ich verstehe immer noch nicht, was Sie wollen.

Vielleicht das:

double XX = 0;


double x()
{
   double rez = XX;
   XX++;
   return rez;
}
 
Wie kann ich feststellen, ob alle Balken im Diagramm geladen sind?
Es ist notwendig, die Neuberechnung des Indikators nur dann aufzurufen, wenn er vollständig geladen ist.

Die Bedingung
if(time[0] > TimeCurrent() - 60 * ChartPeriod())
hilft nicht, das Problem zu lösen.
 

Merken Sie sich die Gesamtzahl der Takte und überprüfen Sie sie. Wenn der Wert nicht innerhalb weniger Sekunden "ansteigt", dann "geht's los".

und berechnen Sie dann erneut, wenn

rates_total-prev_calculated > 1
 
Koldun Zloy:

Ich habe ihn mehrmals gelesen, aber ich verstehe immer noch nicht, wonach Sie suchen.

Vielleicht ist es das:

Es gibt eine Funktion (es ist ein Indikator in meinem EA, ich brauche es und es ist nicht umstritten, diese einen Indikator, der ab einem neuen Höchstwert zu arbeiten beginnt (abwärts zählt)). Der Indikator hat mehrere Parameter, die sich ständig ändern. Da ich eine Schleife vermeiden möchte, mache ich diese Parameter extern (für die Funktion external), damit ihre Werte nicht verloren gehen. Und bei jedem neuen Funktionsaufruf sehe ich nur die Änderung des Indikatorwertes. Aber ich möchte eine neue "Instanz " des Indikators aus einer neuen Spitze haben, während die alte "Instanz" weiterhin funktioniert und Werte ändert. Ich möchte dies mit den Standardmethoden von MQ4 erreichen, da ich sehr wenig über Klassen, Strukturen und sonstige Vererbung weiß. Ich danke Ihnen!
 
Александр:
Ich habe eine Funktion (es ist ein Indikator in meinem Expert Advisor, ich brauche es und es ist nicht herausgefordert, diese den Truthahn und er beginnt von einem neuen Höchststand aus zu laufen (abwärts zu zählen)). Ich habe einen Indikator mit mehreren Parametern, die sich ständig ändern. Da ich einen Zyklus vermeiden will, mache ich diese Parameter extern (für die Funktion external), damit ihre Werte nicht verloren gehen. Und bei jedem neuen Funktionsaufruf sehe ich nur die Änderung des Indikatorwertes. Aber ich möchte eine neue "Instanz " des Indikators aus einer neuen Spitze haben, während die alte "Instanz" weiterhin funktioniert und Werte ändert. Ich möchte dies mit den Standardmethoden von MQ4 erreichen, da ich sehr wenig über Klassen, Strukturen und sonstige Vererbung weiß. Ich danke Ihnen!

Das hat nicht geholfen.

Sie sollten wahrscheinlich die Sprache lernen, damit Sie zumindest nicht mit den Begriffen durcheinander kommen.

Ich glaube nicht, dass jeder versteht, was man eine externe Variable nennt und was "eine Funktion autonom aufrufen" bedeutet.

Und was hat eine Schleife damit zu tun, die Sie wiederum aus Gründen, die nur Sie verstehen, nicht verwenden wollen.

Nun, ich hoffe nicht, Sie zu verstehen.


 
//+------------------------------------------------------------------+
//|           Проверка нажатия клавиш на клавиатуре                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   if(id==CHARTEVENT_KEYDOWN)
     {
     Alert(lparam);
     }
   }

Können Sie mir sagen, wie ich die Kombination überprüfen kann, z.B. Shift+A !