[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 371

 
Fox_RM:

Es gibt praktisch keinen Unterschied, nur ein etwas anderes Verfahren zur Ermittlung der Kontrollpunkte A und B. Ich habe es bereits mit Arrays versucht.

Dann müsste ich zwischen A und B auch eine Schleife durch die Stäbe machen. Ich sehe keine andere Möglichkeit, deshalb frage ich ja.

Vielleicht kann mir jemand einen Tipp geben. Vielleicht stimmt etwas mit der Logik der Codeerstellung nicht?


1. Vermeiden Sie es, Zeilen in Ihrem Code zu speichern (in einer Treppe).

2. Anstelle von wiederholten kurzen bedingten Anweisungen verwenden Sie das Konstrukt if(...) ... sonst...

3. Nehmen Sie den Aufruf der Funktion zur Bildung des grafischen Objekts aus der inneren Schleife heraus (Hauptbremse).

 
Chiripaha:

diese:



... oder besser noch, eine von diesen:

if (AOBuffer3[i]<=0){
   ExtMapBuffer1[i] =  nSum; Vol_Arr[i] =  Volume[i]*Point*coaf;
}
else{
   ExtMapBuffer1[i] = -nSum; Vol_Arr[i] = -Volume[i]*Point*coaf;
}
 
tara:

... oder besser noch, eine von diesen:

Ja, ich stimme zu.

Ich sammle alle meine Vorschläge in dem "alten" Kommentar (wenn überhaupt). - Es mag nicht ganz "richtig" sein, aber es wird nicht verstreut sein.

Ich denke, das Problem ist die Anhäufung von Texten - was sich im Hauptkommentar widerspiegelt (ich weiß nicht, wie ich ihn verlinken kann - sorry).

 
tara:

3. Nehmen Sie den Funktionsaufruf der grafischen Objektbildung aus der internen Schleife (Hauptbremse) heraus.

Jetzt frage ich mich auch: Wie macht man das? (Gerät)

Hm.... Ganz genau! - Es ist stapelbar. Und Zwischenwerte sind nicht wichtig.

      if (shift_up > shift_dn)
       {
        for (int dn_br = shift_dn; dn_br <= shift_up; dn_br++)            //-------------- Перебор значений внутри основного цикла
          {
           Vol_AO_up += Volume[dn_br]; 
          }   
         ObjectDelete ("Awesome_super_volumes"+up_koaf);        // Заодно и удалить старый текст, чтобы не копился
         SetText("Awesome_super_volumes"+up_koaf, DoubleToStr(Vol_AO_up,0), AO_time_dn, AO_dn, Blue);
       }

Dann gibt es nicht so viele von ihnen...

 

Ich habe diesen Aufruf in meiner init-Funktion:

GetMarketInfo();

Diese Funktion hier:

//+-------------------------------------------------------------------------------------+
//| Сбор рыночных данных                                                                |
//+-------------------------------------------------------------------------------------+
void GetMarketInfo()
{
   gd_spread = MarketInfo(Symbol(),MODE_SPREAD) * Point;
   gd_stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL)  * Point;
   gd_tickSize = MarketInfo(Symbol(),MODE_TICKSIZE);
}

Die Variablen gd_spread, gd_stopLevel, gd_tickSize habe ich bis jetzt global deklariert. Jetzt habe ich beschlossen, einige Bibliotheken zu schreiben, die diese Variablen verwenden. Es hat sich herausgestellt, dass ich diese Variablen in die Header-Datei verschoben habe. Also, um Fehler bei der Kompilierung der Bibliothek zu vermeiden, sollte ichGetMarketInfo() Funktion in die Bibliothek zu übertragen, richtig?

 
hoz:

Ich habe diesen Aufruf in meiner init-Funktion:

Diese Funktion hier:

Die Variablen gd_spread, gd_stopLevel, gd_tickSize habe ich bis jetzt global deklariert. Jetzt habe ich beschlossen, einige Bibliotheken zu schreiben, die diese Variablen verwenden. Es hat sich herausgestellt, dass ich diese Variablen in die Header-Datei verschoben habe. Also, um Fehler bei der Kompilierung der Bibliothek zu vermeiden, sollte ichGetMarketInfo() Funktion in die Bibliothek zu übertragen, richtig?

Rufen Sie diese Funktion auf keinen Fall in der Init-Phase auf - Spread und Stoplevel können sich mit der Zeit ändern
 
artmedia70:
Sicherlich nicht in der Init - die Streuung und die Nivellierung der Haltestellen können sich im Laufe der Zeit ändern


Meines Erachtens sollte das Inite verworfen werden, um Probleme im realen Handel zu vermeiden. Wenn die Verbindung durch DC unterbrochen wird und dann wiederhergestellt wird, findet keine Neuinitialisierung statt, was zu Fehlern und Problemen bei der Arbeit im realen Handel führt, oder?

Was sollen wir dann tun? Ständig eine Funktion in jeder Funktion aufrufen, die diese Marktvariablen zurückgibt?

 
hoz:


Ich denke, das Init sollte aufgegeben werden, damit es im realen Handel nicht zu Fehlfunktionen kommt. Denn wenn die Verbindung durch den DC unterbrochen wird und dann wieder erscheint, wird die Neuinitialisierung nicht stattfinden, und es führt bereits zu Fehlern und Störungen bei der Arbeit in der Realität, nicht wahr?

Was ist dann zu tun? In jeder Funktion ständig eine Funktion aufrufen, die diese Marktvariablen zurückgibt?

Diese Art von Informationen sollte in veränderliche und unveränderliche unterteilt werden.

Die unveränderlichen Daten können überall hingeschrieben werden, denn selbst bei einem Verbindungsabbruch sind die Daten noch relevant. - Am besten natürlich nicht gleich zu Beginn, um die Eule nicht unnötig zu belasten.

Aber die Variablen können entweder durch Funktionsaufrufe (wenn die Bibliothek verwendet wird) oder einfach zu Beginn der Startfunktion aktualisiert werden.

 

Das ist auch wahr. Das Gehirn denkt ständig über Produktivität nach, und das zu einer Zeit, in der der Verstand nicht so recht weiß, wie er das am besten machen soll. Ich habe ein Temperament... einen Zwilling :(

Richtig, man muss das eine vom anderen sofort trennen.

Aber andererseits. Wenn die Variablen der Marktumgebunggd_stopLevel,gd_tickSize in verschiedenen Funktionen verwendet werden (Funktionen zur Änderung, zum Senden von Aufträgen usw.), dann ist es nicht ganz sinnvoll , eine Funktion aufzurufen, die die angegebenen Werte ständig in einer Bibliotheksfunktion erhält. Gibt es eine Möglichkeit, dies zu vereinheitlichen? Denn anders als beim Spread sind der Stop-Loss und die Tick-Größe immer gleich.

 
hoz:

Das ist auch wahr. Das Gehirn denkt ständig über Produktivität nach, und das zu einer Zeit, in der der Verstand nicht so recht weiß, wie er das am besten machen soll. Ich habe ein Temperament... einen Zwilling :(

Richtig, man muss das eine vom anderen sofort trennen.

Aber andererseits. Wenn die Variablen der Marktumgebunggd_stopLevel,gd_tickSize in verschiedenen Funktionen verwendet werden (Funktionen zur Änderung, zum Senden von Aufträgen usw.), dann ist es nicht ganz sinnvoll, eine Funktion aufzurufen, die die angegebenen Werte ständig in einer Bibliotheksfunktion erhält. Gibt es eine Möglichkeit, dies zu vereinheitlichen? Denn anders als beim Spread sind der Stop-Loss und die Tick-Größe immer gleich.

Artem hat bereits gesagt, dass die Höhe des Niveaus auch schwanken kann - es ist kein konstanter Wert! - Und die Tick-Größe ist ja eine Konstante.

Zur Vereinheitlichung - wieder, teilen Sie es in 2 Funktionen - MarketInfoConst und MarketInfoImage (Variable). Legen Sie eine in die Mitte, die andere an den Anfang von Start(s). Und es wird möglich sein, sie zu einer Bibliothek zusammenzufassen.

Die Frage nach der Produktivität (Eulenoptimierung) ist eine andere. Ich persönlich baue nicht alle diese Funktionen in die Eule ein. Ich nehme die Parameter nur, wenn es nötig ist. Ja, ich muss mehr Code schreiben, aber owl kommt mit weniger "überflüssigem" Bibliothekskram zurecht, weil sich nicht alles aus MarketInfo in owl als notwendig erweisen könnte.
Grund der Beschwerde: