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

 
Diubakin:
Wenn Sie dies tun, sollten alle Unregelmäßigkeiten verschwinden.

Um die "zusätzliche" Bedingung zu entfernen, können Sie wie folgt vorgehen:

    int i, ot = OrdersTotal();
    double min = 1000.0;
    int min_ticket=0;
    for (i=ot - 1; i>= 0; i--)
    {
        if (!OrderSelect (i, SELECT_BY_POS)) continue;
        if (OrderType()!=OP_BUY) if (OrderType()!=OP_SELL) continue;
        if (min <= OrderLots()) continue;
        min = OrderLots();
        min_ticket=OrderTicket();
    }
 
artmedia70:

Wie das... Basierend auf Igor Kim etwas gemacht... Nur eines Ihrer Merkmale... der Rest ist derselbe...

so etwas wie das hier, denke ich:

Und wir nennen es:

um Buy und Sell für das aktuelle Symbol zu zählen, mit Magic

Artyom, natürlich fange ich bei Kim an, entferne für mich unnötige Prüfungen und füge für mich notwendige Aufgaben hinzu. Wir müssen das Rad nicht neu erfinden! Vielen Dank für die Korrektur, ich werde mutiger sein, um unnötige zu entfernen! Und ich brauche nicht, um den Zauberer und das Symbol zu überprüfen, weil manchmal interveniere ich "mit meinen Händen" und nicht vor der Multiwährung für mich noch!
 
TarasBY:

Um die Bedingung "extra" zu entfernen, können Sie wie folgt vorgehen



Igor, du hast Recht. So ist es besser lesbar...
 
borilunad:
Artyom, natürlich komme ich von Kim, ich entferne unnötige Kontrollen und füge die Aufgaben hinzu, die ich brauche. Ein Fahrrad nicht neu erfinden! Vielen Dank für die Korrektur, ich werde mutiger sein, um unnötige zu entfernen! Und ich brauche nicht, um den Zauberer und das Symbol zu überprüfen, wie manchmal interveniere ich "manuell" und nicht vor der Mehrwährung für mich noch!

Sie müssen prüfen, ob (OrderMagicNumber()==0) ... Dies ist eine "manuelle" Prüfung.

Wenn wir andere EAs stören wollen, die mit einem anderen Symbol arbeiten, können wir die Prüfung für OrderSymbol() entfernen.

Ich habe die minimal notwendigen Überprüfungen auf ein einzelnes Zeichen, mit seinen eigenen Positionen / Bestellungen zu arbeiten links. Wenn Sie auch die "Griffe" berühren wollen, müssen Sie eine Prüfung auf magic==0 hinzufügen.

 
artmedia70:

Dann sollten Sie eine Prüfung durchführen, wenn (OrderMagicNumber()==0) ... ist eine Prüfung auf "manuell".

Wenn wir mit anderen EAs, die mit einem anderen Symbol arbeiten, interferieren wollen, können wir die Prüfung von OrderSymbol() entfernen.

Ich habe die erforderlichen Mindestprüfungen für die Arbeit an einem Symbol mit seinen eigenen Positionen/Bestellungen belassen. Wenn Sie auch das "von Hand" berühren wollen, müssen Sie eine Prüfung auf Magie==0 hinzufügen.

Das darf ich doch auch! Aber ich nehme es zur Kenntnis, vor allem mit != und das Kontinuum verlangsamt sich überhaupt nicht! Ich danke Ihnen!
 
solnce600:

Vielen Dank für Ihre Hilfe, es ist alles in Ordnung. Aber......

1. In einigen der fünf Minuten wird mehr als 1 Auftrag eröffnet.

2. Einige Aufträge werden durch Stop-Aufträge geschlossen, deren Preis sich von dem im Code vorgeschriebenen unterscheidet.


Nun, kommen Sie, dann ist alles einfach - machen Sie die gleiche Prüfung in der geschlossenen Aufträge) Und über den Schlusskurs- sorry, es ist richtig eingestellt, und dann der Server zu welchem Preis wirklich schließen.
int start()

{

 double Price=iOpen (Symbol (),PERIOD_M5,0)+300*Point;        
 double SL=NormalizeDouble (Price-300*Point, Digits);         
 double TP=NormalizeDouble (Price+150*Point, Digits);    
 
 int last_order_bar = 0;
 int ot = OrdersTotal();

 if (ot>0) //если есть ордера в рынке
 {
   if (OrderSelect (ot-1,SELECT_BY_POS)) //выбрали последний ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний ордер (если он есть)
 }
 
 int last_hist_order_bar = 0;
 int oht = OrdersHistoryTotal();

 if (oht>0) //если есть ордера в рынке
 {
   if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY)) //выбрали последний закрытый ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний закрытый ордер (если он есть)
 }
 
 if (ot==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре
    if (oht==0 || last_hist_order_bar>0) //если закрытых ордеров нет либо последний из закрытых был открыт не на текущем баре
       if (Bid>=Price)                       //если текущая цена доползла до цены открытия
          int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );

}
 
alsu:
Nun, es ist einfach, die gleiche Prüfung in der geschlossenen Aufträge zu tun) Und über den Schlusskurs - sorry, es ist richtig eingestellt, und dann ist es bis zu dem Server, zu welchem Preis es geschlossen werden kann.

Vielen Dank und Entschuldigung für die Unannehmlichkeiten.
 
alsu:
Und was ist mit dem Schlusskurs - sorry, der ist richtig eingestellt, und dann liegt es am Server, zu welchem Kurs er wirklich schließt.

Nochmals vielen Dank für all Ihre Hilfe. Aber.....

Ich habe innerhalb eines Jahres nur eine Bestellung eröffnet, nämlich die erste, die ich gesehen habe.

Und es gibt noch viele weitere Candlesticks mit Parametern für die Eröffnung eines Auftrags in diesem Zeitraum.

http://clip2net.com/s/2ToEo


Ich werde sie nicht schließen können. Danke.

 
solnce600:

Nochmals vielen Dank für all Ihre Hilfe. Aber.....

Ich habe innerhalb eines Jahres nur eine Bestellung eröffnet, nämlich die erste, die ich gesehen habe.

Und es gibt noch viele weitere Candlesticks mit Parametern für die Eröffnung eines Auftrags in diesem Zeitraum.

http://clip2net.com/s/2ToEo


Ich danke Ihnen.


Korrigieren Sie meinen Tippfehler - zum zweiten Mal

 if (oht>0) //если есть ордера в рынке
 {
   if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY)) //выбрали последний закрытый ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний закрытый ордер (если он есть)
 }

Ich brauche

last_hist_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ());
 
alsu:

Korrigieren Sie meinen Tippfehler - zum zweiten Mal

Das soll es auch.


OK. Vielen Dank.