[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 175

 
alsu:

Nein, von der einen Variablen, die ich vor dem Zyklus hatte. Schreiben Sie

ist identisch mit

   int cnt,i;
for (cnt = 0, i = index + g_center - 1; i >= 0 && cnt < g_center; i--) 

Jetzt habe ich es verstanden. Ich danke Ihnen. Ich habe gesucht... es gab keinen Anhaltspunkt. Jetzt ist es 0.


Hmm. Nun, zum Beispiel wird index als 1 übergeben. Schauen wir uns diesen Teil des Codes an:

 int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с большим..
      if (centerLow >= Low[i])                     // ..минимумом. Не позволяется..
         return (false);                           // ..наличие баров с меньшим или..
      cnt++;                                       // .. равным минимумом
   }
   

sofort bei der Ankunft:cnt = 0, i = index + g_center - 1 = 1(index value) +2(g_centervalue) - 1 = 2

Aber gemäß der Bedingung der Schleife wird sie fortgesetzt, bis i gleich 0 ist. Wie soll das geschehen?

Die Bedingung lautet: Wenn i einen Wert von 2 (wenn index = 1) bis i >= 0 undcnt einen Wert von 0 biscnt < g_center hat, dann sind die verschachtelten Bedingungen erfüllt.

Wenn die Variable hier 1 ist, haben wir nur eine Iteration in der Schleife, richtig?

 
alsu:

Erklären Sie den Begriff "begrenzt auf 0 bar".
Mit anderen Worten: Ich muss eine Linie (keinen Strahl) durch 2 Fraktale ziehen, die aber auf 0 bar enden muss.
 
beginner:
Mit anderen Worten: Ich muss eine Linie (keinen Strahl) durch 2 Fraktale zeichnen, die aber auf 0 bar enden soll


Der Algorithmus sieht folgendermaßen aus:

1. Die fraktalen Koordinaten seien (i1; p1) und (i2; p2), wobei i1<i2 (d. h. das erste Fraktal liegt näher an 0 bar als das zweite)

2. Gleichung der durch diese Fraktale verlaufenden Linie p = (p1-p2)/(i1-i2) * i + (p2*i1 - p1*i2)/(i1-i2)

3. Daher müssen wir ein Segment mit den folgenden Endkoordinaten zeichnen: (0; (p2*i1 - p1*i2)/(i1-i2)) und (i2;p2)

4. ObjectCreate(...)

5. ???

6. Gewinn!!!

 
Vinin:

Es sollte beim ersten Ticken des neuen Tages funktionieren.

Vielen Dank für die Antwort! Stimmt, es hat nie funktioniert, bis ich am Anfang des Indikatorstarts eingefügt habe

if(Hour() == 0 && Minute() == 0 && Seconds() == 0) { DeleteObject() usw.

}

if(Stunde() >= 0 && Minute() >= 0 && Sekunden() >= 1) { Indikatorcode ...

Seit kurzem funktioniert es auch mit diesem nicht mehr! Ich weiß nicht, was ich tun soll. Was können Sie mir raten? Ich danke Ihnen!

Ich habe es gerade noch geschafft, es zu schreiben, da ich am Samstag beruflich tätig bin.

 
hoz:


Ja, Boris, das ist sehr gut, nebenbei bemerkt! Ich danke Ihnen vielmals. Das ist es, was ich wollte. Ich habe es verdreht... Ich habe es verdreht... Ich habe es nicht richtig verstanden. Ich habe noch nicht viel Erfahrung, und mein Gehirn denkt noch nicht wie ein Profi. Es ist eine kleine Sackgasse, nicht wahr? :(

Ich wollte nicht sofort fragen, aber ich musste es tun. Weil ich es selbst nicht geschafft habe, den Schnitt zu machen.

Ich freue mich, dass es Ihnen geholfen hat! Ich selbst, wie Sie, begann vor 2 Jahren, aber seit der Kindheit bin ich daran gewöhnt, immer zu kommen, um alles auf ihre eigenen, weil das Wissen aus Tipps kann nicht ein System bilden. Und ich frage nur, wenn es absolut notwendig ist, wenn ich schon alles getan habe, überall nachgeschaut habe und es nicht bekommen habe. Viele Neulinge hier wollen schnell schweißen und Kohle pumpen. Die Erfahrung wird sie lehren. Ich habe Ihnen schon einmal gesagt, dass es besser ist, etwas Einfaches zu machen, das Ihnen klar ist, als etwas Kompliziertes, das Sie nicht verstehen, und es ist besser, solche Situationen zu vermeiden, bis Sie der Sache auf den Grund gehen. Der Code kann auf unterschiedliche Weise erstellt werden, aber die Logik muss Ihnen klar sein. Deshalb vermeide ich es, etwas zu benutzen, was ich noch nicht verstehe. Der Code ist Ihr Werkzeug, das Sie perfekt kennen und beherrschen sollten, damit Sie es im Laufe der Zeit leicht anpassen können. Ich wünsche Ihnen viel Erfolg!
 
hoz:

Jetzt habe ich es verstanden. Ich danke Ihnen. Ich habe gesucht... es gab keinen Anhaltspunkt. Jetzt ist es 0.


Hmm. Nun, zum Beispiel wird index als 1 übergeben. Schauen wir uns diesen Teil des Codes an:

sofort bei der Ankunft:cnt = 0, i = index + g_center - 1 = 1(index value) +2(g_centervalue) - 1 = 2

Aber gemäß der Bedingung der Schleife wird sie fortgesetzt, bis i gleich 0 ist. Wie soll das geschehen?

Die Bedingung besagt, dass, wenn i einen Wert von 2 (wenn index = 1) bis i >= 0 undcnt einen Wert von 0 biscnt < g_center hat, die verschachtelten Bedingungen erfüllt sind.

Es stellt sich heraus, dass, wenn die Variable hier 1 ist, wir nur 1 Iteration in der Schleife haben, richtig?


Die Schleife endet, wenn die Bedingung an der zweiten Stelle des for()-Operators nicht mehr erfüllt ist, d. h. in diesem Fall, wenn i kleiner als 0 wird oder wenn cnt größer oder gleich g_center wird. Beide Variablen haben Anfangswerte, die vor der Schleife zugewiesen werden und sich während ihrer Ausführung ändern: die Variable i als Ergebnis von i-- (der dritte Teil der for-Anweisung, er wird jedes Mal ausgeführt, wenn die Schleife die schließende Klammer } erreicht) und die Variable cnt als Ergebnis von cnt++.
 

Hallo.

Ich versuche, meinen Handel von meinem Demokonto nach html zu exportieren. (Alpari, neueste Version). Ich drücke auf "Als Bericht speichern", ein Fenster zur Ordnerauswahl öffnet sich, ich drücke auf "Speichern", nichts passiert. Gilt das auch für Demokonten? Und noch etwas, mein MT4 ist auf meinem Desktop installiert. Ist das wichtig?

 
borilunad:
Wer weiß, ist es möglich, indem Sie Hour(), Minute() und Seconds() globale Variablen, um die Änderung der DailyPivotPoints Indikator auf die neuen PP Ebenen und andere Linien aus dem EA um Mitternacht (0,00) zu steuern? Ich habe es direkt in den Indikator mit Hour(), Minute(), Seconds() zu tun, und es funktionierte ohne jede Nacht zu kompilieren. Aber seit kurzem ändert es sich nicht mehr, vielleicht weil das Bild geändert wurde? Danke!


:) Warum wird dies nicht als neue Balkenfunktion implementiert? Sie muss einmal am Tag neu berechnet werden, d. h. ab 0.00 Uhr. Also machen wir es einfach. Am Anfang natürlich:

if (lastBarTime == время с ТФ Д1)
    return(0);
// что-то тут ещё
// что-то тут ещё
// что-то тут ещё
if (lastBarTime != время с ТФ Д1)
{
    пересчитывает уровни пивотов...
    lastBarTime = время с ТФ Д1;
}
Ich denke, das ist der korrekteste Weg, auch wenn er primitiv ist!
 
alsu:

Die Schleife endet, wenn die Bedingung an der zweiten Stelle des for()-Operators nicht mehr erfüllt ist, d. h. in diesem Fall, wenn i kleiner als 0 wird oder wenn cnt größer oder gleich g_center wird.


Aber es heißt nicht entweder, sondern UND. Das &&-Zeichen ist auch da.

Ich verstehe das alles. Aber der springende Punkt ist dieser:

bool IsUpFractal(int index)
{
   double centerHigh = High[index + g_center];     // За точку отсчета берется средний..
                                                   // ..бар на участке из i_fractalPeriod
                                                   // ..баров
// - 1 - == Поиск максимумов справа от центрального бара ================================
   int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с низшим..
      if (centerHigh <= High[i])                   // ..максимумом. Не позволяется..
         return (false);                           // ..наличие баров с большим или..
      cnt++;                                       // ..равным максимумом.
   }
   
   if (i < 0)                                      // g_center-1 низших максимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 1 - == Окончание блока =============================================================

VariableIndex im Allgemeinen durch Code hat Wert Bar - IndicatorCounted()

D.h. es ist 1 auf dem aktuellen Balken und 2 auf dem neuen Balken.

Es wird die Funktion IsUpFractal() mit dem Wert 1 oder 1 eingegeben, wenn der Balken noch nicht neu ist, richtig?

Die Variable i hat also einen festen Wert, da der Index des Eingangsparameters ebenfalls fest ist. Die Schleife wird also immer nach der ersten Iteration abbrechen. Was ist dann der Sinn der Schleife?

 

Können Sie mir bitte sagen, warum es nicht angezeigt wird...

double IN[111];
double PERI=33;
double KRIT;
int z;      
ArraySetAsSeries(IN,true);

   for(z=0; z<=PERI; z++)  {
IN[z]=     iClose(Symbol1.Name,0,iBarShift(Symbol1.Name,0,Time[z],false)); }

   for(z=0; z<=PERI; z++)  {
KRIT=IN[z]-iMAOnArray(IN,0,PERI,0,MODE_SMA,iBarShift(IN,0,Time[z],false)); }

Print(KRIT);
return;