[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 26

 
Code:


Vielen Dank für die Antwort und ich werde Ihre Fragen beantworten.

Genau dieses Merkmal ist der Grundgedanke des Indikators. Und gleichzeitig ist es eine Übung in MMS. Ich habe mir eine Aufgabe ausgedacht und verstehe intuitiv, dass ihre Umsetzung in einer Sprache nicht sehr schwierig ist. Ich setze mich und probiere es aus.

Das Wesen des Merkmals besteht also darin, dass ich ein bestimmtes festes theoretisches Niveau von zwei einseitig gerichteten Volumen mit dem tatsächlichen Niveau vergleiche. Das heißt, wenn das tatsächliche Verhältnis zwischen der Summe der beiden Volumina und dem tatsächlichen "Open-Close"-Intervall höher ist als das angegebene theoretische, füge ich dem tatsächlichen zweiten Volumen einen "Bonus" in Form der Differenz zwischen den berechneten theoretischen und tatsächlichen Ergebnissen hinzu. Wenn der tatsächliche Pegel niedriger ist als der theoretische, ziehe ich die gleiche Differenz vom Volumen des zweiten Balkens ab. Kann ich das genau erklären?

Vorsichtshalber möchte ich sagen, dass Sie bei der Angabe dieses Merkmals die Klammern falsch gesetzt haben, wahrscheinlich in Eile.

Außerdem scheint mir, dass die Zeichenketten, die Sie als gleichwertig mit den meinen betrachten, zur Division durch Null führen werden. Ich werde es jetzt überprüfen.

Das ist klar. Es ist jedoch nicht klar, wie 2 (der Durchschnitt zwischen den beiden Volumina) und das, was in der Variablen UP12 berechnet wird, zusammenhängen. Schließlich sind die Dimensionen beider unterschiedlich. Die Zeiten und der Preis im Nenner. Schließlich hat man uns in der Schule beigebracht, dass sich Meter und Kilogramm nicht addieren lassen! :))))


Das ist richtig, das ist falsch! :)))) Es ist eine Sache, Formeln als Brüche zu haben, aber es ist eine andere Sache, alles in eine Zeile zu packen und nicht zu verstehen, wie... Das ist Unaufmerksamkeit, nicht Eile...

Außerdem habe ich den Code falsch optimiert. Auch hier handelte es sich um einen mathematischen Fehler. Ich habe vergessen, Klammern zu setzen.

   double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+1])*1000);
 
Roman.:

Ihr Standpunkt ist überhaupt nicht der richtige... zu den falschen Handelskriterien, die Frage bezieht sich auf STOHAS-TEAM... :-Р

Die Frage war folgende:

ideasforlife:

Wenn Bedingung1 erfüllt ist, dann:
-Prüfung auf offene SELL-Aufträge
-Wenn es welche gibt - schließen Sie sie
-Prüfung der Verfügbarkeit von Mitteln auf dem Konto
-Eröffnung BUY-Bestellung

Das Gleiche gilt, wenn Bedingung 2 erfüllt ist, dann
-Prüfen, ob BUY-Aufträge geöffnet sind
-falls vorhanden, schließen Sie sie
Prüfen Sie, ob es offene BUY-Aufträge gibt - falls ja, schließen Sie sie.
-Eröffnung eines SELL-Auftrags
+ Fehleranalyse (nicht die Hauptsache, aber es ist möglich)

Was hat das mit HOSTAGE zu tun? :))))

Alle erforderlichen Prüfungen wurden bereits durchgeführt, und es wurde ein Handelssignal gebildet oder nicht.

 
demlin:

Hallo zusammen!

Dank der unschätzbaren Hilfe der Experten dieser Branche (insbesondere Roman) ist es mir gelungen, einen einfachen Expert Advisor zu erstellen, der auf dem Testgerät angezeigt wurde. Frage: Wie lässt sich feststellen, ob sie für den realen Handel platziert werden kann? Gibt es irgendwelche Kriterien?


Ja, was sind die Kriterien, arbeiten Sie auf die "grundlegenden" Dinge (Schärfen für die reale - die Kontrolle der Trennung und Umschaltung auf eine zusätzliche Linie, die ich nicht in Betracht ziehen), in Form von intelligenten Umgang mit möglichen Fehlern mit der Annahme des Sachverständigen der entsprechenden organisatorischen Entscheidungen über die weitere Arbeit, dann die Demo ist obligatorisch, dann die Mikro-realen ... Wenn Sie mit dem Ergebnis zufrieden sind - "go crazy" ... :-)) Um damit zu beginnen, nehmen Sie die Fehlerbehandlung von EAs aus dem Tutorial auseinander, bevor Sie Aufträge erteilen, vergessen Sie nicht, die notwendigen Überprüfungen der Anforderungen und Beschränkungen der Handelsoperationen vorzunehmen, in Ihrer Suche googeln Sie etwas wie: Fehlerbehandlung site:mql4.com, Vorbereitung von EA für reale site:mql4.com, ich (Teil :-R) habe einen Experten, der solche Feststellungen wie diese macht:

// После старта
if (!IsTradeAllowed() || IsTradeContextBusy() || !IsConnected()) return; // если торговля невозможна, то выходим

Überprüfung der Auftragsauswahl für die Verwendung

                if (ticket>0)                                               // Если позиция открылась
                    {
                       while(OrderSelect(ticket,SELECT_BY_TICKET)==false) Sleep(1000);     // Если ордер выбран
                         double OpenPrice=OrderOpenPrice();
                         ...  
                           

Am Anfang

color ColorBuy = Blue, ColorSell = Red;
bool UseSound = true;
string alert.wav;
color clr, ClrClose = Gray;
int Level_new; 
double price;
bool result, Buy_signal=false, Sell_signal=false;
int  orderIndex;
bool IsExpertFailed = false;
bool IsExpertStopped = false;
double lots;                       // вспомогательная переменная для расчета нового размера лота 
double Lots_New;                   // Количество лотов для новых ордеров
int ticket;                        // Номер ордера
double orderLots;                  // Lots   
double orderProfit;                // Profit
double Price;                      // Цена открытия рыночного ордера
double SL;                         // Значение StopLoss ордера
double  TP;                        // Значение TakeProfit ордера
static datetime prevtime = 0;       // по ценам открытия

int init(){
    IsExpertStopped = false;
    if (!IsTradeAllowed())
       {
         Comment("Необходимо разрешить советнику торговать");
         IsExpertStopped = true;
         return (0);
       }
      
    if (!IsTesting())
       {
         if (IsExpertEnabled())  Comment("Советник запустится следующим тиком");       
           else  Comment("Отжата кнопка \"Разрешить запуск советников\"");
      
       }
    ...
   
   return (0);
}

Das ist alles, IMHO, für den Anfang; wir könnten weiter und weiter gehen...

In jedem Fall ist die Kontrolle des "Managers" notwendig ... :-R Damit es für die verlorenen Einlagen nicht unerträglich schmerzhaft wird...

 

MaxZ:


Die Frage war folgende:

Was hat das mit STOCHASTAGE zu tun? :))))

Alle notwendigen Prüfungen wurden durchgeführt und das Handelssignal wurde gebildet oder nicht.


Es wurde eine direkte Frage gestellt:

"Das hängt alles vom aktuellen Währungspaar ab.
int start()
{
double M_0, M_1; // MAIN-Wert bei 0 und 1 bar
S_0, S_1; // SIGNALwert bei 0 und 1 bar
//--------------------------------------------------------------------
// Rufen Sie die Funktion für die technische Anzeige auf.
M_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 0);// 0 bar
M_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 1);// 1 Takt
S_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);// 0 bar
S_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);// 1 Takt
//--------------------------------------------------------------------

if( M_1 < S_1 && M_0 >= S_0 ) // ZUSTAND 1: Grün kreuzt Rot von unten

if( M_1 > S_1 && M_0 <= S_0 ) // ZUSTAND 2: Grün kreuzt Rot von oben

//--------------------------------------------------------------------
return; //Beenden von start()
}"

Im Grunde genommen, was auch immer, IMHO, der Autor gemeint hat, er wird es herausfinden... :-Р

 

Roman.:


Zu Beginn.

...
int init(){
    IsExpertStopped = false;
    if (!IsTradeAllowed())
       {
         Comment("Необходимо разрешить советнику торговать");
         IsExpertStopped = true;
         return (0);
       }
...

Was ist der Zweck der Variable IsExpertStopped? Und es stellt sich heraus, dass bei jedem Tick im Log die Meldung " Expert Advisor must be allowed to trade" angezeigt wird...

 
MaxZ:

Was ist der Zweck der Variable IsExpertStopped? Und es stellt sich heraus, dass bei jedem Tick im Log die Meldung "Expert Advisor must be allowed to trade" erscheint...

Das ist meine Aufgabe:


F1 drücken Sie auf
IsTradeAllowed()

Das werden Sie herausfinden... :-Р

Konkret "

Wenn EA handeln darf und der Thread frei ist", dann handeln, ansonsten IsExpertStopped = EA gestoppt, wartet auf Erlaubnis zum Handeln...

 
Roman.:

F1 drücken Sie auf

finden Sie heraus... :-Р

Nämlich "

wenn EA handeln darf und der Thread für die Handelsausführung frei ist", dann handeln, andernfalls IsExpertStopped = EA gestoppt, wartet auf Erlaubnis zum Handeln...

Ich hab's... Ich bin heute total abgelenkt. Ich sehe init() und denke an start()! :)))))

 
MaxZ:

Das ist klar. Es ist jedoch nicht klar, wie 2 (der Durchschnitt zwischen den beiden Volumina) und das, was in der Variablen UP12 berechnet wird, zusammenhängen. Schließlich sind die Dimensionen beider unterschiedlich. Die Zeiten und der Preis im Nenner. Schließlich hat man uns in der Schule beigebracht, dass sich Meter und Kilogramm nicht addieren lassen! :))))


Das ist richtig, das ist nicht richtig! :)))) Es ist eine Sache, Formeln als Brüche zu haben, es ist eine andere Sache, alles in eine Zeile zu packen und nicht zu verstehen, wie... Das ist Unaufmerksamkeit, nicht Eile...

Außerdem habe ich den Code falsch optimiert. Auch hier handelt es sich um einen Fehler in der Mathematik. Ich habe vergessen, Klammern zu verwenden.


MaxZ, beeil dich, oh beeil dich :))) mit Schlussfolgerungen!

Ich addiere keine Kilometer und Kilogramm. Ein Beispiel aus dem wirklichen Leben. Der heutige Eurodollar, 5 Minuten. Ich habe mir gerade den Chart angeschaut, auf dem 2 steigende Kerzen hintereinander zu sehen sind.

vback1=703, dVolume=696. (vback1+dVolume)/2=699,5.

Bei denselben Kerzen (Close[i]-Open[i+1] )*1000=(1,42911-1,42549)*1000=3,62

(vback1+dVolume)/3.62=386.5

Insgesamt: 696+699,5-386,5=1009. Das ist es, was gezeichnet werden sollte. Und was genau 1009 ist, zeigt der Indikator an dieser Stelle. Und so weiter.

Eine andere Sache ist, dass ich selbst dieses Beispiel hier berechnet habe und herausgefunden habe, dass nach der Formel des Codes das, was ich im vorherigen Beitrag beschrieben habe, nicht auftritt. In Wirklichkeit handelte es sich um eine andere Ideologie, eine Art Selbstregulierung. Solange der Minuswert des Parameters vrealUP12 die Summe von dVolume+vteor12 nicht übersteigt, erfolgt eine Addition zum letzten Volumen. Oder es müssen zusätzliche Parameter für die Berechnung von ExtVolumesBuffer[i] eingegeben werden.

Und in der Zeile

double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+1])*1000);

Ich habe es gerade auf

double vrealUP12=(dVolume+vback1)/UP12;

um sie nicht zu verlängern.

 
Code:


MaxZ, beeil dich, oh beeil dich :))) mit deinen Schlussfolgerungen!

Ich habe keine Kilometer und Kilos zusammengezählt. Ein Beispiel aus dem wirklichen Leben. Der heutige Eurodollar, 5 Minuten. Ich habe mir gerade den Chart angeschaut, auf dem 2 steigende Kerzen hintereinander zu sehen sind.

Verdammt... Sie summieren sich, und wie! :))

Die Variable vteor12 hat die Dimension von Volumes (das sind unsere Meter).

 vteor12=(dVolume+vback1)/2;

Die Variable UP12 hat die Dimension von Pips für ein bestimmtes Währungspaar.

UP12=(Close[i]-Open[i+1])*1000

Die Variable vrealUP12 ist auf das Verhältnis von Volumen zu Punkten (das sind unsere Kilos) dimensioniert.

vrealUP12=(dVolume+vback1)/UP12;

Und am Ende errechnet man seine Charakteristik, die sich aus der Summe von Metern und Kilogramm ergibt, und darum geht es! ;D

ExtVolumesBuffer[i]=dVolume+vteor12-vrealUP12;


Es sei denn, 2 ist nicht die 20 Punkte, dass der Preis pro zwei Bars sollte in der Theorie passieren! :)) Aber das ist schon ein ziemlicher Blödsinn...


Code:


Und in der Zeile

double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+1])*1000);

Ich änderte es zurück in

double vrealUP12=(dVolume+vback1)/UP12;

um sie nicht zu verlängern.

Eine Verlängerung ist manchmal sinnvoll. Das spart Computerressourcen! :))) Warum brauchen Sie diese zusätzliche Variable?

 
MaxZ:

Oh, Mann... Sie tun es, und wie! :))

Die Variable vteor12 hat die Dimension von Volumes (das sind unsere Meter).

Die Variable UP12 hat die Dimensionalität von Preis.

Die Variable vrealUP12 ist nach Volumen und Preis dimensioniert (dies ist unser Kilogramm).

Und am Ende errechnet man seine Charakteristik, die sich aus der Summe von Metern und Kilogramm zusammensetzt, denn darum geht es! ;D


OK, versuchen wir es auf eine andere Art zu betrachten.

vteor12 kann man es als (dVolumen+vback1)/k1 (Faktor 1) schreiben

vrealUP12 kann geschrieben werden als (dVolumen+vback1)/k2 (Faktor 2)

Wie ich versucht habe, den Indikator Ideologie zu beschreiben, besteht er aus dem Vergleich einiger theoretischer und tatsächlicher Ebenen. Um diese Werte zu erhalten, vergleiche (d.h. teile) ich den gleichen Wert (dVolumen+vback1) mit einem theoretischen Wert (k1) und einem tatsächlichen Wert (k2). Es ist klar, dass k1 ich mir das nur ausdenke, um die Dinge beim Namen zu nennen. Oder, wenn Sie so wollen, eine Vermutung anstellen. Das muss mit etwas verglichen werden. Nichts ist in diesem Fall objektiver und wahrer als die Grafik selbst. Ich nehme also die Eröffnungs- und Schlussdifferenzen und betrachte sie als das Endergebnis eines bestimmten Zeitraums. Und die einzige Aufgabe besteht darin, sie auf die gleiche Zahl zu bringen, weshalb sie mit 1000 multipliziert wird.

Versuchen Sie, mehrere verschiedene Varianten benachbarter Leuchter auf einem Taschenrechner zu berechnen, und Sie werden überrascht sein, wie vielfältig die Ergebnisse nach dieser sehr einfachen Formel sind.

Und in Bezug auf die schulische Logik haben Sie Recht. Ich füge Volumen + Volumen/Preis hinzu, das kann man in der Schule nicht machen. :))

Grund der Beschwerde: