Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1356

 
Lerchik:

Sie meinen also, dass die Eröffnung eines Marktauftrags zu Ask der Eröffnung eines BuyLimit-Auftrags entspricht.

Irgendetwas ist hier nicht in Ordnung. Angenommen, der Geldkurs ist gleich 1,4500. Wenn wir also einen Kaufauftrag vom Markt eröffnen, wird er zum Ask-Kurs stehen und der Bid-Kurs beträgt, sagen wir, 10 Punkte.

Dann wird der Auftrag bei 1,4510 stehen.

Jetzt ist der BuyLimit-Auftrag gleich 1,4500. Wenn der Preis 10 Punkte unter den Ask-Preis fällt, eröffnet Ask einen Auftrag. Nicht nach Gebot, sondern nach Nachfrage.

Es passt kein bisschen zusammen. Es handelt sich um unterschiedliche Dinge, die nicht miteinander verglichen werden können.

Vielleicht liege ich falsch?

Alle Kaufaufträge werden durch Ask eröffnet und durch Bid geschlossen, und umgekehrt für Verkaufsaufträge.

Wenn Sie zu faul sind, sie zu lesen, eröffnen Sie ein Demokonto und üben Sie.

 
Сергей Таболин:

Warum fangen Sie nicht damit an, die Dokumentation zu lesen?

Dies ist der Inhalt der Dokumentation:

Ausstehender Auftrag

Ein schwebender Auftrag ist eine Anweisung eines Maklerunternehmens zum Kauf oder Verkauf eines Finanzinstruments zu einem künftigen Zeitpunkt und zu bestimmten Bedingungen. Es gibt die folgenden Arten von schwebenden Aufträgen:

  • Buy Limit- Handelsanfrage zum Kauf zum Ask-Preis, der gleich oder niedriger als der in der Order angegebene ist. Das aktuelle Preisniveau ist höher als der Wert im Auftrag. Diese Art von Aufträgen wird in der Regel in der Erwartung erteilt, dass der Wertpapierkurs zu steigen beginnt, wenn er auf ein bestimmtes Niveau fällt;

Aber ich verstehe nicht, was hier geschrieben wird und wie es funktioniert.

Das heißt, der Preis fällt unter das By-Limit und ein Askom eröffnet einen Auftrag. Aber gleichzeitig wird der Auftrag zum gleichen Preis oder höher eröffnet?

Davon ist nirgendwo die Rede. Es gibt nur Regeln. Niemand will hier erklären, warum.

Ich versuche also, etwas zu erreichen.

 
Lerchik:

Dies ist der Inhalt der Dokumentation:

Ausstehender Auftrag

Ein schwebender Auftrag ist eine Anweisung eines Maklerunternehmens, ein Finanzinstrument zu bestimmten Bedingungen in der Zukunft zu kaufen oder zu verkaufen. Es gibt die folgenden Arten von schwebenden Aufträgen:

  • Buy Limit- Handelsanfrage zum Kauf zum Ask-Preis, der gleich oder niedriger als der in der Order angegebene ist. Das aktuelle Preisniveau ist höher als der Wert im Auftrag. Diese Art von Aufträgen wird in der Regel in der Erwartung erteilt, dass der Preis des Instruments zu steigen beginnt, wenn er auf ein bestimmtes Niveau fällt;

Aber ich verstehe nicht, was hier geschrieben wird und wie es funktioniert.

Das heißt, der Preis fällt unter das By-Limit und ein Askom eröffnet einen Auftrag. Aber gleichzeitig wird der Auftrag zum gleichen Preis oder höher eröffnet?

Davon ist nirgendwo die Rede. Es gibt nur Regeln. Niemand will hier erklären, warum.

Ich möchte also etwas erreichen.

Das BuyLimit kann NUR unterhalb des Ask-Kurses festgelegt werden. Das Verkaufslimit kann NUR höher als der Geldkurs festgelegt werden.

Der BuyStop kann NUR über dem Ask-Kurs gesetzt werden. Der SellStop kann NUR unter dem Bid-Kurs gesetzt werden.

Wenn der entsprechende Preis den entsprechenden Auftrag erreicht, wird dieser aktiviert und die entsprechende Position wird erstellt.

 
Lerchik:

Dies ist der Inhalt der Dokumentation:

Ausstehender Auftrag

Ein schwebender Auftrag ist eine Anweisung eines Maklerunternehmens, ein Finanzinstrument zu bestimmten Bedingungen in der Zukunft zu kaufen oder zu verkaufen. Es gibt die folgenden Arten von schwebenden Aufträgen:

  • Buy Limit- Handelsanfrage zum Kauf zum Ask-Preis, der gleich oder niedriger als der in der Order angegebene ist. Das aktuelle Preisniveau ist höher als der Wert im Auftrag. Diese Art von Aufträgen wird in der Regel in der Erwartung erteilt, dass der Preis des Instruments zu steigen beginnt, wenn er auf ein bestimmtes Niveau fällt;

Aber ich verstehe nicht, was hier geschrieben wird und wie es funktioniert.

Das heißt, der Preis fällt unter das By-Limit und ein Askom eröffnet einen Auftrag. Aber gleichzeitig wird der Auftrag zum gleichen Preis oder höher eröffnet?

Davon ist nirgendwo die Rede. Es gibt nur Regeln. Niemand will hier erklären, warum.

Ich greife also nach etwas.

Eröffnen Sie ein Demokonto und üben Sie.

DasBuy Limit wird unter dem aktuellen Ask-Kurs gesetzt und wird geöffnet, wenn derAsk-Kurs niedriger ist .

Der Buy Stop wird über dem aktuellen Ask-Kurs gesetzt und öffnet sich , wennder Ask steigt .

Kauf eröffnet zum aktuellen Briefkurs

 
MakarFX:

Eröffnen Sie ein Demokonto und üben Sie.

DasKauflimit liegt unter dem aktuellen Ask-Kurs und wird geöffnet, wennder Ask-Kurs fällt .

Der Buy Stop wird über dem aktuellen Ask-Kurs gesetzt und öffnet sich , wennder Ask-Kurs ansteigt .

Kauf eröffnet zum aktuellen Briefkurs

Das ist schon etwas.

Weiter geht's...

Ok, der Geldkurs ist unter den Briefkurs gefallen und der Brief eröffnet den Auftrag. Aber bleibt der Preis der Bestellung derselbe, wie er in der Bestellung festgelegt wurde, oder wird er anders sein?

 
Lerchik:

Das ist doch was.

Weiter geht's...

OK, der Geldkurs ist unter den Kurs des Auftrags gefallen und die Ascom hat den Auftrag eröffnet. Bleibt der Preis für die Bestellung so, wie er in der Bestellung festgelegt wurde, oder wird er anders sein?

1 Der Ask-Kurs sollte auf den "Odds"-Kurs fallen

2 Preis bleibt

 
MakarFX:

1 Der aufsteigende Preis sollte auf den Preis der Pause fallen.

2 Preis bleibt

Vielen Dank für die Klarstellung.

Ich habe mich gefragt, warum es nicht so funktionierte, wie ich es wollte.

 

Guten Tag zusammen.

Soweit ich die Antworten auf meine vorherige Frage verstanden habe, muss ich nur Fehler behandeln, die beim Öffnen von Aufträgen auftreten können, das ist das Wichtigste. Zweitens muss ich den EA davor schützen, den Server bei jedem Tick zu schlagen, wenn ein Fehler auftritt.

Erste Frage, bitte sagen Sie mir, wie man die Fehlerbehandlung zu tun?

Zweite Frage: Wie kann man sich vor den Schlägen des Servers schützen?

Jetzt werden meine Trades wie folgt geöffnet

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   if(ao_buy!=EMPTY_VALUE && count_orders_market_buy ==0)
   {
    if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_market_buy)) Print("Buy Open"); // ОТКРЫВАЕМ БАЙ ОРДЕР
   }
   } // КОНЕЦ УСЛОВИЕ1

// И ОТЛОЖКИ ВОТ ТАК

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   
   if(ao_buy!=EMPTY_VALUE && count_orders_stop_buy ==0&& max_Price>Bid)
   { //НАЧАЛО ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕ
   
   Print("БАЙ СТОП AO УСЛОВИЕ 1");
        if( OrderSend(Symbol(),OP_BUYSTOP,lot,max_Price,slippages,max_Price-sl,max_Price+tp ,comment_ao_otloj_buy,Magik_number,TimeCurrent()+order_life_time))Print("BUY_STOP OPEN"); // ОТКРЫВАЕМ ОТЛОЖЕННЫЙ БАЙ ОРДЕР
   
   }  //КОНЕЦ ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕ
   } // КОНЕЦ УСЛОВИЕ1



Die Variable Count Market Buy wird mit dieser Funktion berechnet

         void data_orders(string comment="alt",int magik_number=123)
              {
         int I = 0;
   count_orders_all = 0;   //КОЛИЧЕСТВО ВСЕХ УСТАНОВЛЕННЫХ ОРДЕРОВ
   count_orders_market_all = 0; //КОЛИЧСТВО ВСЕХ РЫНОЧНЫХ ОРДЕРОВ
   count_orders_market_buy = 0;
   
   count_orders_stop_buy = 0;    //КОЛИЧЕСТВО СТОП БАЕВ
   count_orders_limit_buy = 0;   // КОЛИЧЕСТВО ЛИМИТ БАЕВ
   
   count_orders_stop_sell = 0;    //КОЛИЧЕСТВО СТОП СЕЛОВ
   count_orders_limit_sell = 0;   //КОЛИЧЕСТВО ЛИМИТ СЕЛОВ
   
   
  lot_orders_buy = 0;    //ОБЪЁМ ЛОТА ПО БАЙ ОРДЕРАМ
         lot_orders_sell = 0;      //ОБЪЁМ ЛОТА ПО СЕЛЛ ОРДЕРАМ
         balance_all = 0;          // БАЛАНС ПО ВСЕМ ОРДЕРАМ
         balance_buy = 0;         // БАЛАНС ПО ОРДЕРАМ БАЙ
         balance_sell = 0;        // БАЛАНС ПО ОРДЕРАМ СЕЛЛ
         
         
         
          for(int i = 0; i <= OrdersTotal();i ++) // перебор всех ордеров в цикле
          {
  
   if(OrderSelect(I , SELECT_BY_POS, MODE_TRADES))// выбираем ордер по переменной цикла
   {
    if(OrderMagicNumber() != magik_number || OrderSymbol() !=Symbol()) // если ордер не нашь то
    {
    continue; // переходим на следующую итерацию
    
    }
    if(comment== OrderComment() || comment=="alt")// если коментарий нашь то 
    {
    count_orders_all+=1;
    if(OrderType()== OP_BUY)
    {
    count_orders_market_all+=1;
    count_orders_market_buy+=1;
    }
    if(OrderType()== OP_SELL)
    {
    count_orders_market_all+=1;
    count_orders_market_sell+=1;
    }
    if(OrderType()== OP_BUYSTOP)
    {
    count_orders_stop_buy+=1;
    }
    if(OrderType()== OP_BUYLIMIT)
    {
    count_orders_limit_buy+=1;
    
    }
    if(OrderType()== OP_SELLSTOP)
    {
    count_orders_stop_sell+=1;
    
    }
    if(OrderType()== OP_SELLLIMIT)
    {
    count_orders_limit_sell+=1;
    
    }
    
    
    
    }
         
         
              }
              }
              }

Wenn ich mit einem realen Server handeln möchte, möchte ich wissen, wie ich das Chattering des Servers im Falle von Fehlern vermeiden kann.

 
DanilaMactep:

Guten Tag, liebe Kolleginnen und Kollegen.

Bitte schreiben Sie mir und sagen Sie mir, wie ich Fehler richtig behandeln kann und wie ich vermeiden kann, dass der Server bei jedem Tick läutet, wenn ein Fehler auftritt.
if (GetLastError()==141){Alert(GetLastError()); ExpertRemove();}
 
MakarFX:

Und diese Anfrage sollte nach jeder Zeile geschrieben werden, in der versucht wird, eine Bestellung mit Ordersend zu öffnen - richtig?

Aber ich habe eine Frage - wenn die Remove EA hat die EA aus dem Diagramm gelöscht, wie sollte ich es automatisch wieder an das Diagramm anhängen und weiter arbeiten? Könnten Sie die Angelegenheit in mehr Details beschreiben - Fehler 141 - zu viele Anfragen. Wenn es zu viele Anfragen gibt, löschen wir den EA aus dem Diagramm. Was soll ich als Nächstes tun - warten, bis ich morgens aufstehe, alles ändern und an den PC kommen, um den EA wieder an das Diagramm anzuhängen?

Grund der Beschwerde: