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

 
hoz:

https://www.mql5.com/ru/forum/144705 Hier habe ich einen eigenen Thread eröffnet. Sie enthält alle Einzelheiten zu den erforderlichen Maßnahmen.


Ja, es macht mehr Spaß, wenn die Quelle voll ist. Sofort sichtbar, was woher und wohin geht, was zum Teufel und wie oft. Nun, das ist es, was mir sofort ins Auge fiel:

hoz:
int GetStateOfMA()
{
   if (GetMA(1) > GetMA(2))
   {
       pr ("GetStateOfMA() = CROSS_UP");
       return (CROSS_UP);
   }
       
   if (GetMA(1) < GetMA(2))
   {
       pr ("GetStateOfMA() = CROSS_DN");
       return (CROSS_DN);
   }
       
    pr ("GetStateOfMA() = CROSS_NO");
    return (CROSS_NO);
}

Sie können es praktisch auf eine Zeile vereinfachen:

int GetStateOfMA(){
   if(GetMa(2)==GetMa(1)) return(0); else return(MathAbs(GetMA(2)-GetMA(1))/(GetMA(2)-GetMA(1)));
}

Hier geben wir Null oder das Vorzeichen der Differenz (plus oder minus) zurück. Siehe: Der Modulus einer Zahl geteilt durch die Zahl selbst ist praktisch dasselbe wie die Division einer Zahl durch eine Zahl, nämlich eins, nur wenn die Zahl negativ war, wird natürlich minus eins zurückgegeben.

Ich will es weiter herausfinden.

 
gyfto:


Ja, es macht mehr Spaß, wenn die Quelle voll ist. Sofort sichtbar, was woher und wohin geht, was zum Teufel und wie oft. Das ist es, was mir sofort ins Auge gefallen ist:

kann auf fast eine Zeile vereinfacht werden:

Hier geben wir Null oder das Vorzeichen der Wertedifferenz (plus oder minus) zurück. Siehe: Der Modulus einer Zahl geteilt durch die Zahl selbst ist fast dasselbe wie die Division einer Zahl durch eine Zahl, nämlich eins, nur wenn die Zahl negativ war, wird natürlich minus eins zurückgegeben.

Ich will es weiter ausarbeiten.


Wie einfach Sie zwei reelle Zahlen vergleichen können
 
gyfto:


Ja, es macht mehr Spaß, wenn die Quelle voll ist. Sie können auf einen Blick sehen, was von wo und wohin, was zum Teufel und wie oft weitergegeben wird. Nun, das ist es, was mir sofort ins Auge fiel:

kann auf fast eine Zeile vereinfacht werden:

Hier geben wir Null oder das Vorzeichen der Wertedifferenz (plus oder minus) zurück. Siehe: Der Modulus einer Zahl geteilt durch die Zahl selbst ist fast dasselbe wie die Division einer Zahl durch eine Zahl, nämlich eins, nur wenn die Zahl negativ war, wird natürlich minus eins zurückgegeben.

Ich werde mir das genauer ansehen.

Ja, das macht Sinn. Aber warum muss ich mir diese ganze Mühe machen? :)gyfto, ich sehe, dass Sie übrigens, wie ich, dazu neigen, alles zu verallgemeinern. Ich würde sagen, mehr. Hier können Sie eine Variable für die Größe der Abweichung hinzufügen und so kleine Überschreitungen von Durchschnittswerten herausfiltern. Es ist irgendwie offensichtlich, aber die Lesbarkeit wird nicht besonders praktisch sein. Schließlich muss der Funktionswert mit 0 verglichen werden, also <0 oder >0.

Vinin:

Wie leicht man zwei reelle Zahlen vergleichen kann.

Nun, wenn wir nicht an der Abweichung interessiert sind, was hält uns dann auf? Wo ist das festgelegt?
 
Vinin:

Wie einfach man zwei reelle Zahlen vergleichen kann

Sie meinen, dass double geteilt durch double immer noch double ist, und return nur int zurückgeben kann? Nun, Sie können lokal int temp definieren; und ihm zuweisen, und return(temp);
 
gyfto:

In dem Sinne, dass double geteilt durch double immer noch double ist, und return nur int zurückgeben kann? Nun, Sie können lokal int temp definieren; und ihm zuweisen, und return(temp);
Zwei nach der Berechnung erhaltene Fließkommazahlen werden fast nie gleich sein. Oder besser gesagt, sie sind oft nicht gleich, obwohl man meint, dass sie gleich sein sollten.
 
gyfto:

und return kann nur int zurückgeben?

Nein. Sie können zurückgeben, was Sie wollen. Nicht unbedingt int. Denn wenn die Funktion vom Typ double ist, wie soll man dann int zurückgeben?
Es macht im Prinzip keinen Unterschied, die Hauptsache ist, dass man von einer Funktion eines bestimmten Typs die gleiche Rückgabe erhält. So habe ich es verstanden.

Zhunko:
Zwei Gleitkommazahlen, die nach der Berechnung erhalten werden, sind fast nie gleich. Oder besser gesagt, sie sind oft nicht gleich, obwohl man denkt, dass sie gleich sein sollten.

Müssen Sie also ständig eine Variable dist einstellen, um den Unterschied zwischen den Mashups zu vergleichen, die Sie vergleichen? Ich meine so:

extern dist = 0.1 // Расстояние между сравниваемыми машками.
//---------------------------
GetMA(2) - GetMA(1) >= dist;
 
hoz:

eine Tendenz, alles zu verallgemeinern.


Nein, meiner Psychologie zufolge, wenn ich mich selbst analysiere, ist es eher der Wunsch, ein Programm für andere zu machen, nicht nur für mich selbst.

hoz:

Warum so verdreht?


Sie werden mir wahrscheinlich nicht glauben, aber es liegt an der mangelnden Schulbildung. Es tut mir leid. Als ich die Schule verließ (6. Klasse), hatten Kinder in diesem Alter noch eine lebhafte kindliche Neugier und einen großen Wissensdurst. In der High School macht das Schulsystem dann alles zunichte. Ich bin jetzt in meinen Dreißigern, aber ich habe immer noch diese lebhafte Neugier und bin mir dieser bedingten Einschränkungen immer noch nicht bewusst, ich bin mir nicht bewusst, was "blechern" und was "abartig" ist, denn für mich ist alles "blechern". Entschuldigung...

hoz:
Zhunko:
Zwei Fließkommazahlen, die man nach der Berechnung erhält, werden fast nie gleich sein. Oder besser gesagt, sie sind oft nicht gleich, obwohl sie es Ihrer Meinung nach sein sollten.


Ist es also notwendig, ständig eine Art Variabledist zu setzen, um den Unterschied zwischen den verglichenen Mashups zu vergleichen? Ich meine so:

extern dist = 0.1 // Расстояние между сравниваемыми машками.
//---------------------------
GetMA(2) - GetMA(1) >= dist;
Ja, das ist richtig, das ist logisch.
 
gyfto:

Sie werden mir wahrscheinlich nicht glauben, aber es ist die fehlende Schulbildung, die zum Vorschein kommt. Entschuldigung. Als ich die Schule verließ (6. Klasse), hatten Kinder in diesem Alter noch eine lebhafte kindliche Neugier und einen großen Wissensdurst. In der High School macht das Schulsystem dann alles zunichte. Ich bin jetzt in meinen Dreißigern, aber ich habe immer noch diese lebhafte Neugier und bin mir dieser bedingten Einschränkungen immer noch nicht bewusst, ich bin mir nicht bewusst, was "blechern" und was "abartig" ist, denn für mich ist alles "blechern". Entschuldigung...


Eigentlich bin ich ziemlich gebildet, aber ich habe nur das gelernt, was ich brauchte, den Rest habe ich einfach ignoriert. Es stellte sich heraus, dass ich mich für viele Dinge nicht interessierte und mich von diesen trivialen Dingen (Geschichte, Geografie usw.) abwandte. Ich selbst glaube das nicht, nicht so wie andere. Aber Ihr Ansatz ist wirklich merkwürdig. Ich dachte sofort, dass es Ihnen nicht an Bildung mangelt, sondern im Gegenteil, es ist so etwas wie das. Denn ich habe aus den obigen Analysen nicht sofort alles verstanden.
 
hoz:
Der Ansatz ist eigentümlich.


Lassen Sie es mich mit anderen Worten erklären: Es ist autodidaktisch, ich bin mein ganzes Leben lang Autodidakt gewesen, ich weiß also NICHT, welchen Ansatz Sie gewählt haben. Ich weiß NICHT, was von Ihnen akzeptiert wird und was nicht.

OK, zurück zu den Kerzen. Angenommen, wir haben i_AnyBarsToHistory = 30, i_ѕеqceptBarsConnt = 3. Wenn in einem Fenster von 30 Candlesticks cntUp == i_ѕеԛceptBarsCount und cntDn == i_ѕеԛceptBarsCount einmal, was sollte dann passieren? Oder zählt er immer nur einen Zähler pro Durchgang?

Ja, und warum verlassen wir die Schleife vorzeitig, bevor wir Close[1] erreichen.

 

Hilfe, ich kann nicht herausfinden, wie man einen Indikator zu machen, vergleichen eine bestimmte Anzahl von jüngsten Bars und berechnen, wie viele von ihnen waren nach oben, wie viele waren nach unten und wie viele waren pinbars und wer hatte welche Preise schließen/öffnen, hoch/tief und Volumen?

Wir müssen dies speziell im Indikator tun.