[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 38

 
ikatsko >> :

Verlassen Sie (der Einfachheit halber) nur das, was das Problem im Code darstellt. Setzen Sie den Blinker und sehen Sie sich sozusagen das Problem an.




Wenn ich mich nicht irre, wird die init-Funktion nur einmal aufgerufen, wenn Sie bei einer Karte auflegen. Es wäre logisch, eine Neuinitialisierung zu erzwingen, wenn sich tf ändert - um "seltsame Dinge" mit der Arbeit des Speichermanagers zu vermeiden.

if( CurrentPeriod!=Period())
{
    ReInitParam();
    CurrentPeriod=Period();
}

>> Viel Glück.

 
ikatsko писал(а) >>

Verlassen Sie (der Einfachheit halber) nur das, was das Problem im Code darstellt. Wir setzen den Indikator und sehen das Problem, sozusagen.



//+------------------------------------------------------------------+
//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |
//+------------------------------------------------------------------+
int init()
{
//...........................................................
Set_SL[Verlauf*Tiefe]=1.0*Level*Punkt;
Alert("Init:"," Set_SL[",History*Depth,"]=",Set_SL[History*Depth]);//suspended it to see: it shows (say) 0,0001
//--------------------------------------------------------------------//----
zurück(0);
}

Sie sollten nicht auf Arrays von init() aus verweisen. Höchstwahrscheinlich sind die Arrays noch nicht initialisiert worden. Es ist sinnvoll, den problematischen Teil nach start() zu verschieben.

 
Vinin >> :

Es genügt, die letzte abgeschlossene Transaktion zu überprüfen. Aber Sie müssen auch dafür sorgen, wenn es noch keine Geschichte gibt

Mit welcher Funktion können Sie dies tun?

 
xruss писал(а) >>

Welche Funktion kann dafür verwendet werden?

Sie müssen eine Funktion schreiben oder nach einer fertigen Funktion suchen.

 
VladislavVG >> :

Wenn ich mich nicht irre, wird die Funktion init nur einmal aufgerufen, nämlich wenn Sie bei einer Karte auflegen. Es wäre logisch, eine Neuinitialisierung zu erzwingen, wenn Sie den t\f ändern, um "seltsame Dinge" bei der Arbeit des Speichermanagers zu vermeiden.


Viel Glück!

Aus dem Tutorium:

Spezielle init()-Funktion.
Bei benutzerdefinierten Indikatoren wird die spezielle init()-Funktion unmittelbar nach dem Start des Client-Terminals, nach dem Wechsel eines Symbols und/oder einer Chart-Periode, nach der Neukompilierung des Programms in MetaEditor und nach der Änderung der Eingabeparameter im Einstellungsfenster des benutzerdefinierten Indikators aufgerufen (und ausgeführt).

 
ikatsko >> :

Aus dem Lehrbuch:

Spezielle init()-Funktion.
Bei benutzerdefinierten Indikatoren wird die spezielle Funktion init() sofort nach dem Start des Client-Terminals, nach dem Wechsel des Symbols und/oder der Chart-Periode, nach der Neukompilierung des Programms im MetaEditor und nach der Änderung der Eingabeparameter im Setup-Fenster des benutzerdefinierten Indikators aufgerufen (und ausgeführt).

Es dauert höchstens fünf Minuten - deklarieren Sie eine Funktion und übertragen Sie sie aus dem init-Anhang dorthin und rufen Sie sie so auf, wie ich es Ihnen geschrieben habe.

Viel Glück!

SZ ist der maximale int-Wert, den Ihre Funktion Ihnen liefert, höchstwahrscheinlich EMPTY_VALUE.

Ja, noch etwas: Die Variable CurrentPeriod muss als statische oder globale Variable für die Datei deklariert werden. Normalerweise weise ich solchen Variablen den Wert -1 zu.

 
Wie beziehe ich mich auf den vorherigen (bereits gebildeten) Balken?
 
RocketTrend >> :
Wie kann man sich auf den vorherigen (bereits gebildeten) Balken beziehen?

Close[1]/Open[1]/High[1]/Low[1]/.... Je nachdem, welcher Wert benötigt wird.

 
VladislavVG >> :

Close[1]/Open[1]/High[1]/Low[1]/.... Je nachdem, welcher Wert benötigt wird.

Dankeschön

 
VladislavVG >> :

Close[1]/Open[1]/High[1]/Low[1]/.... Je nachdem, welcher Wert benötigt wird.

Dankeschön