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

 
Dimka-novitsek:

Hier ist sie


Der Berater arbeitet. Er eröffnet den Handel
 
gheka:

Ich bin immer noch ratlos und verstehe nicht, woher die eindeutige Sequenznummer kommt, in den Beispielen ist alles anders,

wenn ich mich nicht irre, bin ich nicht derjenige, der sie erstellt, zum Beispiel

Da Sie die Frage aus der PM gelöscht haben, ohne auf eine Antwort zu warten, stelle ich sie hier ein:

Schauen wir uns das mal so an:

Index -

Auftragsposition oder Auftragsnummer je nach zweitem Parameter.
(Auftragsposition oder Nummer, woher kommt sie???)

"Abhängig vom zweiten Parameter" - heißt das, dass es von "select" abhängt?

Die Auftragsposition ist die Position des Auftrags in der Reihe der Aufträge in Ihrem Terminal. Das ist genau die Position, die wir in der Schleife suchen:

Bestellung suchen:

for (int index=0; index<OrdersTotal(); index++) // Цикл по терминалу. В кач-ве переменной цикла будет index для наглядности
    {
       if (OrderSelect(index, SELECT_BY_POS) && OrderMagicNumber()==Magic) // Если выбран ордер и магик равен магику советника
           {
                if (OrderTipe()==OP_BUY)                                   // Если нам нужен ордер Бай
                   {
                       //............... Тут код обработки выбранного орд
                   }
           }
    }

Wenn wir nach SELECT_BY_POS suchen, ist der nächste Parameter standardmäßig MODE_TRADES und Sie können ihn weglassen. Der Expert Advisor sucht nach Positionen, die noch nicht geschlossen, d.h. im Markt sind.

Wenn wir nach Aufträgen suchen wollen, die bereits abgeschlossen wurden, müssen wir den folgenden Parameter nach SELECT_BY_POS hinzufügen: MODE_HISTORY. Dann wird der Expert Advisor nur die Liste der geschlossenen Positionen und der gelöschten oder ausgelösten Aufträge durchsuchen.

(Wenn ich mich nicht irre, handelt es sich dabei um die bereits festgelegten Reihenfolgen, z. B. "0" ist die erste an der Spitze,
"1" ist die zweite in der Liste usw.).

Genau das ist die Position, die Position des Auftrags im Auftragsfeld des Terminals, sozusagen sein Index - eben der Index
... Und sie befinden sich im Array, beginnend bei den Nullzellen des Arrays, obwohl die Ordnungsnummer mit 1 beginnt. D.h., die erste Ordnung befindet sich in der Nullzelle des Arrays, die zweite in der ersten, die dritte in der zweiten, usw. ...

Nun zum Ticket. Das Ticket, eine eindeutige Nummer für einen Auftrag, wird von Ihrem Maklerunternehmen vergeben. Anhand dieser Zahl können wir genau diese Reihenfolge oder Position klar erkennen. Wir haben jedoch einige Vorbehalte. Das Ticket sollte irgendwo im EA gespeichert werden (eine Variable oder ein Array), damit Sie genau wissen, in welcher Reihenfolge Sie dieses Ticket benötigen. Zu diesem Zweck verwende ich die Orderbuchfunktion meines eigenen EA, in der ich nicht nur Orderdaten speichere, die ich über Standardfunktionen erhalte, sondern z.B. auch Fibo-Levels, die ich direkt nach der Positionseröffnung berechne und dann in mein Orderbuch eintrage. Dann wähle ich einfach eine Position nach ihrer Eröffnungszeit und ihrem Takeaway aus und verschiebe das Stop-Level entsprechend den Fibo-Levels, die ich für diese Position in meinem Order-Array gespeichert habe ... Von dort aus kann ich auch das Ticket der gewünschten Bestellung abrufen und es später mit Standardfunktionen verwenden:

   if (OrderSelect(Ticket, SELECT_BY_TICKET) && OrderCloseTime()==0) // Если выбран ордер по тикету и время его закрытия равно нулю
      {
         if (OrderTipe()==OP_BUY)                                   // Если нам нужен ордер Бай
            {
               //............... Тут код обработки выбранного ордера
            }
      }

Hier ist es notwendig, den Zeitpunkt des Auftragsabschlusses mit Null zu vergleichen. Denn bei der Auswahl anhand des Tickets werden MODE_TRADES und MODE_HISTORY ignoriert und nicht verwendet, und wir müssen den Zeitpunkt der Auftragsschließung sehen, um festzustellen, ob der Auftrag geschlossen ist und aus der Liste der offenen Positionen ausgewählt wurde. Wenn er noch auf dem Markt ist, ist auch sein Schlusskurs gleich Null.
Wenn Sie die Daten eines abgeschlossenen Auftrags sehen möchten und diesen per Ticket auswählen müssen, sollte der Abschlusszeitpunkt mit Null verglichen werden, und wenn dies der Fall ist, wurde der Auftrag bereits abgeschlossen.

Pool -

Quelle der Daten für die Auswahl. Er wird verwendet, wenn der Select-Parameter gleich SELECT_BY_POS ist. Es kann einer der folgenden Werte sein:
MODE_TRADES (Standard) - der Auftrag wird unter den offenen und schwebenden Aufträgen ausgewählt,
das sind aktuelle Aufträge


MODE_HISTORY - der Auftrag wird unter den geschlossenen und gelöschten Aufträgen ausgewählt.

und das ist aus der Liste der abgeschlossenen Aufträge, wie aus der Protokollliste, richtig?

Das ist richtig.

double OrderProfit( )
Es ergibt sich ein Nettogewinn, aber welcher? der letzte Auftrag oder alle Aufträge?

Sie gibt den aktuellen Gewinn für den noch nicht abgeschlossenen Auftrag zurück.

Wenn der Auftrag bereits geschlossen wurde, gibt er den Gewinn oder Verlust dieses Auftrags zurück. Eine, ausgewählt.

Ohne Berücksichtigung von Swaps, Provisionen usw... Um sie zu berücksichtigen, müssen wir eine eigene Funktion erstellen.

=============================================================================

Ich hoffe, Sie werden es herausfinden ... :)
 

Der Berater arbeitet. Es geht um die Eröffnung von Geschäften.

Danke!!!! Die Kenntnis der Handelsplattform ist offenbar krank.

 
Renown:
Ein EA muss die Volatilität (hier der Wert: High[iHighest(NULL, 0, MODE_HIGH, 30, 1)] - Low[iLowest(NULL, 0, MODE_LOW, 30, 1)] ) des exponentiellen gleitenden Durchschnitts glätten. Soweit ich verstanden habe, kann das nicht mit der Standard-iMA gemacht werden und ich muss eine Funktion dafür schreiben? Kann mir jemand mit dem Code helfen?


iMAOnArray

 

Guten Tag an alle.... es gibt ein Problem...kann jemand helfen...?

Ich handele einen EA, der auf dem Martingal-Prinzip basiert... ich beschloss, auch einen Stop-Loss einzubauen... um einen Verlust zu berechnen, habe ich die folgende Formel verwendet...

Stopper = AveragePrice - Stoploss * Point; dies ist nicht eine gute Passform für mich, weil der Stopper in diesem Fall ändert sich für die nächsten Kurven... und ich möchte, dass es für alle Kurven festgelegt werden, zum Beispiel 100 Pips .... dh, nach der Eröffnung einer Bestellung Stop ist bei 100 Pips gesetzt...Sagen wir, das zweite Knie öffnet sich nach 30 Pips, so dass der Stopp sollte 70 Pips, um an die gleiche Stelle wie die erste ... kurz gesagt, ich brauche eine feste unveränderliche Stop-Loss für die gesamte Serie ... wenn Sie nichts dagegen haben, es zu erklären)))) oder senden Sie mir die Funktion)))) Ich wäre dankbar
 

Es ist eine Frage bezüglich der Erkennung einer gedrückten Taste aufgekommen. Es ist notwendig, die Tatsache des Drückens zu verfolgen, und wenn zum Beispiel K gedrückt wird, dann führen wir einige Aktionen durch. Hier ( _http://msdn.microsoft.com/en-us/library/ms646293%28v=VS.85%29.aspx ) gefunden int GetAsyncKeyState(int vKey) Funktion, die im Prinzip ist, was ich brauche... Es gibt jedoch einen Haken: Die Tatsache des Drückens sollte nur definiert werden, wenn ein MetaTrader-Fenster aktiv ist. Ich verwende den folgenden einfachen Code in meinem Expert Advisor zur Überprüfung:

#define VK_K                            0x4B    // K key 
#import         "user32.dll"
   int GetAsyncKeyState(int vKey);

//-----------------------------------------------------------------------------------------------//
int init()  {

 return(0);
}
//-----------------------------------------------------------------------------------------------//
int deinit()   {

 return(0);
}
int start() {
   if(GetAsyncKeyState(VK_K)==0) Print("K не нажата...");
   else {Alert("НАЖАТА K");}
 return(0);
}
Während ich diesen Beitrag schrieb, hörte ich Alarme :). Bitte helfen Sie mir, dieses Problem zu lösen =)
 

Der Horror!!! Freunde, ich bin verloren... :)

Es gibt zwei verschachtelte Schleifen. Wenn ich die innere Schleife durch eine Pause verlasse, wo steige ich aus - am Anfang oder am Ende der äußeren Schleife?

Am Schließbügel des Außenbügels oder am Öffnungsbügel?

 
artmedia70:

Der Horror!!! Freunde, ich bin verloren... :)

Es gibt zwei verschachtelte Schleifen. Wenn ich die innere Schleife durch einen Break verlasse, wo verlasse ich sie dann - am Anfang oder am Ende der äußeren Schleife?

An den Schließbügel des Außenbereichs oder an den Öffnungsbügel?

Code im Studio.

Und zwar direkt hinter der schließenden Klammer der inneren Schleife

 
Necron:

Code bitte.

Und zwar direkt hinter der schließenden Klammer der inneren Schleife

Ich danke Ihnen. Genau das habe ich getan, aber mir kamen Zweifel, ob ich das Flag in der äußeren Schleife vor der schließenden Klammer oder am Anfang nach der öffnenden Klammer prüfen sollte...
 

Weiß jemand, wie man einen festen Anschlag für die Serie macht((((

Es gibt eine Menge Profis hier, die Arbeit ist wahrscheinlich nicht so schwer.