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

 
Igor Makanu :

das wird funktionieren:

Höchstwahrscheinlich haben Sie die Struktur auf globaler Ebene beschrieben, und dort wollten Sie den Feldern der Struktur Werte zuweisen, was nicht funktioniert

Vielen Dank für die Antwort.

Können Sie mir sagen, wenn ich #define FXT_HEADER.intSize 70 schreibe, warum es einen Fehler gibt?

 
//+------------------------------------------------------------------+
//|  Функция A/D                       |
//+------------------------------------------------------------------+
double A_D(ENUM_TIMEFRAMES tf, int shift)
  {
   double res=0;
   res=iAD(NULL,tf, shift);
   return res;
  }

//+------------------------------------------------------------------+
//|  Функция A/D  средняя                     |
//+------------------------------------------------------------------+
double A_D_moving(ENUM_TIMEFRAMES tf, int period, int shift)
  {
   double res=0;
   double a[1];
  
   
   for(int i=period-1; i>=0; i--)
     {
   ArrayResize(a,period,0);
      a[i]= A_D(tf, i);    
     }
   for(int j=shift; j>=1; j--)
     {
      res=iMAOnArray(a,0, period,0,MODE_SMA,j);
     }
   return res;
  }

Hallo!

Ich versuche, aus iAD() eine Funktion des gleitenden Durchschnitts zu machen. Es hat nicht bis zum Ende funktioniert. Die Funktion in der obigen Version gibt den Wert des gleitenden Durchschnitts von iAD() für den aktuellen Balken aus. Sie hängt nicht vom Wert der Shift-Variablen ab.

Aber ich brauche die Shift-Variable, um den Index des Balkens, wo die Funktion den entsprechenden Wert des gleitenden Durchschnitts von iAD() zurückgibt. Der beschriebene Fehler wurde durch den folgenden in OnTick() eingefügten Code entdeckt:

   Comment("\n  #0= ", DoubleToString(A_D_moving(0, 20, 0)),
           "\n  ++++++++++++++",
           "\n  #1= ", DoubleToString(A_D_moving(0, 20, 1)),
           "\n  ----------------------",
           "\n  #2= ", DoubleToString(A_D_moving(0, 20, 2)));
   

Wenn jemand weiß, wie der Fehler zu beheben ist, bitte ich um einen Rat.

 

Können Sie mir bei einer primitiven Aufgabe helfen?
- der Indikator hat eine Überprüfung der Kontonummer... wenn die Kontonummer nicht die angegebene ist - gibt der Indikator eine Meldung aus (der Indikator ist nur für Freunde, etc.)
- nachdem der Indikator auf einem Chart installiert ist - alles funktioniert einwandfrei ... Scheck geht durch... der Indikator funktioniert

Aber nach dem Neustart des Terminals - Indikator schlägt den Test ... Ich verstehe, dass das Herunterladen von Indikator-Code erfolgt vor der Verbindung mit dem Broker? Ich muss es auf der Karte neu installieren... Das ist keine Option...
Können Sie mir sagen, an welcher Stelle ich diesen Code richtig einfügen muss? Ich möchte sie einmal in die Tabelle einfügen, sie als Vorlage speichern und alles ...

 {

   if (AccountInfoInteger(ACCOUNT_LOGIN)  != 123456) {

      Alert("Если не работает: блаблабла");

      return(INIT_FAILED);

   }
 
Roman Agafonkin:

Wissen Sie, wo Sie diesen Code einfügen können? So können Sie es einmal in das Diagramm einfügen, es als Vorlage speichern und das war's...

Versuchen Sie, while() davor zu setzen und auf die Anmeldung innerhalb bestimmter Grenzen zu warten. Ich weiß nicht, was die FunktionAccountInfoInteger(ACCOUNT_LOGIN) ausgibt, wenn Sie noch nicht angemeldet sind - drucken Sie sie aus und fügen Sie sie anstelle der Fragezeichen ein.

while (AccountInfoInteger(ACCOUNT_LOGIN)==????) Sleep (100);
 
Igor Zakharov:

Ich weiß nicht, was die FunktionAccountInfoInteger(ACCOUNT_LOGIN) ausgibt, wenn man noch nicht eingeloggt ist - drucken und einfügen anstelle von Fragezeichen.

Sie können nicht etwas lange in OnInit ausführen - das Terminal kann den Code entladen

im Indikator darf nicht verrutschen, um zu funktionieren

ich verstehe nicht, warum der Quellcode nicht funktioniert - entweder hat Ihr Broker keine guten Server oder das Internet ist zu langsam - normalerweise wird dieser Code von Ihren "Freunden" in allen Foren geteilt )))


Ich denke, Sie müssen eine statische Check-Variable in den Indikator Körper hinzufügen und es wird eine Verbindung zum Broker und Autorisierung, wenn Tick ankommt - das einzige, was ich sehe, ist, dass der erste Tick auf dem Chart von selbst geladen wird - aber es kann behandelt werden, durch die Art und Weise prev_calculated ==0 ist ein sehr guter Grund, um die "Lizenz" zu überprüfen.

 
Ich habe angefangen, meiner Tochter das Handeln beizubringen. Sie hatte folgende Frage: "Ich verstehe, wenn ich, sagen wir, ein Pfund kaufe, aber ich verstehe nicht, wie ich ein Pfund verkaufen kann, wenn ich es nicht gekauft habe und es nicht auf Lager habe. Um ehrlich zu sein, konnte ich es ihr nicht klar erklären, ich sagte etwas Vages, dass es sich um eine bargeldlose, virtuelle Transaktion handele und dass es nicht notwendig sei, diese Pfunde auf Lager zu haben, um sie zu verkaufen. Im Allgemeinen hat mir meine eigene Antwort nicht gefallen. Was wäre die richtige Antwort auf eine solche Frage?
 
khorosh:
Ich habe meiner Tochter das Handeln beigebracht. Sie hatte diese Frage: Ich verstehe, wenn, sagen wir, ein Pfund zu kaufen, aber es ist unklar, wie man ein Pfund verkaufen kann, wenn ich es nicht gekauft habe und ich habe es nicht. Um ehrlich zu sein, konnte ich es ihr nicht klar erklären, ich sagte etwas vage, dass es als bargeldlose, virtuelle Transaktionen und haben diese Pfund auf Lager zu verkaufen, nicht unbedingt. Im Allgemeinen hat mir meine eigene Antwort nicht gefallen. Und was wäre die richtige Antwort auf eine solche Frage gewesen?

Man muss die Dinge nicht verstehen, um Gewinn zu machen. Je weniger Sie wissen, destoeinfacher spielen Sie. Ich glaube schon.

Es ist cool, dass sie so früh damit anfangen kann.) Dabei wird sie die Antworten auf die Fragen finden (die sie sich selbst stellen wird), falls es welche gibt...
 
onedollarusd:

Man muss die Dinge nicht verstehen, um Gewinn zu machen. Je weniger Sie wissen, desto einfacher spielen Sie. Imho.

Wenn ich ihr sage, dass sie, wenn der Preis ein gutes Stück gesunken ist und sich gedreht hat, die Kauftaste drücken soll, und umgekehrt. Glauben Sie, dass dies ausreichen wird? )

 
Igor Makanu:

Sie können in OnInit nichts Langes ausführen - das Terminal könnte den Code entladen

im Indikator darf nicht funktionieren

Ich weiß nicht, warum der Quellcode nicht funktioniert - entweder hat Ihr Broker keine guten Server oder das Internet ist zu langsam - normalerweise wird dieser Code von Ihren "Freunden" in allen Foren geteilt )))


Ich denke, ich muss eine statische Check-Variable in den Indikator Körper hinzufügen, wenn ein Tick kommt, wird es an den Makler und Autorisierung zu verbinden; das einzige, was ich sehe, ist, dass der erste Tick auf das Diagramm von selbst geladen wird - aber es kann behandelt werden, durch die Art und Weise prev_calculated ==0 ist eine gute Gelegenheit, um die "Lizenz" zu überprüfen.

Ich habe das gleiche Problem gelöst und den folgenden Code am Anfang der Funktion OnCalculate eingefügt:

 if(account_number>0)
 {
   int akk;
   akk=AccountInfoInteger(ACCOUNT_LOGIN);
   if(akk==0)return(0);
   if(akk!=account_number)
   {
     Alert("Неверный номер счёта.");
     int window=ChartWindowFind();
     ChartIndicatorDelete(0,window,MeName);
     return(0);
   }
 }              

account_number wird mit #define definiert (eine globale Sichtbarkeitsvariable ist auch möglich), MeName ist dasselbe, aber im Allgemeinen ist es der Kurzname des Indikators.

 
Yurij Kozhevnikov:

Ich habe das gleiche Problem gelöst, indem ich diesen Code am Anfang der OnCalculate-Funktion eingefügt habe:

account_number wird mit #define definiert (Sie können eine globale Sichtbarkeitsvariable verwenden), MeName - in ähnlicher Weise, aber im Allgemeinen ist es ein kurzer Indikatorname.

Ja, Sie haben ein gutes Beispiel, das ist es, worüber ich schreibe

aber Sie müssen den ersten Start des Indikators zu verarbeiten - der erste Start kann oder kann nicht eine Verbindung sein, und wenn die Lizenz nicht bestanden hat, sollten Sie den Indikator auf einmal zu entladen, wie ein Zähler und 2-3 mal keine Lizenz, dann entladen Sie den Indikator

Grund der Beschwerde: