Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 847

 
Vitaly Muzichenko:

Vielleicht möchten Sie, dass die Terminals mit den Grafiken das Markup an einen Webserver senden und die anderen es empfangen und auf dem Diagramm anzeigen. Es ist keine leichte Aufgabe, aber machbar

Wie kann ich das machen oder was sollte ich lesen, um zu lernen, wie es geht? Wird das Markup automatisch gesendet und von anderen Benutzern akzeptiert oder muss es jedes Mal als Vorlage hochgeladen werden?
 
Илья:
Wie kann ich dies tun oder was sollte ich lesen, um herauszufinden, wie dies möglich ist? Wird das Markup automatisch gesendet und von anderen Benutzern akzeptiert oder muss es jedes Mal separat als Vorlage hochgeladen werden?

Ich denke, man braucht einen kleinen Knopf, und nachdem man eine Markierung gemacht hat, drückt man ihn und schickt ihn ab. Bei Empfängern ist es dasselbe: Wenn Sie einen Aufschlag erhalten möchten, drücken Sie die zweite Taste. Insgesamt 2 Schaltflächen auf dem Diagramm, und es kostet keine Ressourcen, um es ständig zu überwachen

 

Wie kann ich die Platzierung von Aufträgen begrenzen, wenn nach der Aktivierung von Limit-Aufträgen immer eine Position auf dem Markt ist?

Im Devisenhandel habe ich die Anzahl der Aufträge - Positionen - überprüft.

if( CalculateBUYPositions()==1)
//// 
 int CalculateBUYPositions()
  {
   int total=0;
//ENUM_ORDER_TYPE   order_type=ORDER_TYPE_BUY;
   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
                   if(m_position.PositionType()==POSITION_TYPE_BUY)
                  
              {
            total++;
            }
//---
   return(total);
  }
  //

Limitaufträge müssen gesetzt werden, wenn es nur eine Position gibt

Wie kann ich diesen Zustand ersetzen?

 
lil_lil:

Wie kann ich die Platzierung von Aufträgen begrenzen, wenn nach der Aktivierung von Limit-Aufträgen immer eine Position auf dem Markt ist?

Im Devisenhandel habe ich die Anzahl der Aufträge - Positionen - überprüft.

Limitaufträge müssen gesetzt werden, wenn es nur eine Position gibt

Wie können wir diesen Zustand ersetzen?

Die Frage ist nicht klar. Sie verwechseln die Aufträge und die Positionen.

Der von Ihnen zitierte Code "CalculateBUYPositions()" berechnet die Anzahl der BUY-Positionen.


Bitte formulieren Sie Ihre Frage neu.

 
Vladimir Karputov:

Die Frage ist nicht klar. Sie verwechseln Aufträge und Positionen.

Der von Ihnen zitierte Code "CalculateBUYPositions()" berechnet die Anzahl der BUY POINTS.


Formulieren Sie Ihre Frage neu.

Wenn ich auf dem Forex eine Position habe, platziere ich eine Limit-Order und die Limit-Order wird aktiviert, die Anzahl der Positionen steigt und der EA platziert keine weiteren Limits.

Wenn am Devisenmarkt ein Positionslimit besteht und alle Limit-Aufträge aktiviert werden, erhöht sich die Anzahl der Positionen und es werden keine weiteren Limit-Aufträge erteilt. Ich benötige eine gleichwertige Alternative zu der Bedingung "wenn es eine Position gibt" CalculateBUYPositions()==1

 
lil_lil:

Auf Forex, wenn es eine Position gibt, platziere ich eine Limit-Order, Limit-Order werden aktiviert , wenn die Anzahl der Positionen steigt, es werden keine Limiter mehr vom EA platziert.

Bei Forex, wenn es eine Position gibt, wird die Limit-Order aktiviert, die Anzahl der Positionen erhöht sich und es werden keine weiteren Limit-Orders vom EA platziert. Ich benötige eine gleichwertige Alternative zu der Bedingung "wenn es eine Position gibt" CalculateBUYPositions()==1

Nein, ist es nicht. Zur Klarstellung: Es gibt bereits eine Position auf dem aktuellen Symbol:

  • Auf Hedge-Konten gibt es, sobald der schwebende Auftrag ausgelöst wird, EINE MEHR Position
  • auf Verrechnungskonten nach Auslösung des schwebenden Auftrags
    • wenn der schwebende Auftrag für das aktuelle Symbol war, dann:
      • die bestehende Position wird sich erhöhen
      • eine bestehende Position wird verringert
      • eine bestehende Position wird fortgeschrieben
      • die bestehende Position wird umgekehrt


Um Ihre Frage zu klären: welche Art von Konto suchen Sie und WAS müssen Sie verfolgen.

 
lil_lil:

Wie kann ich die Platzierung von Aufträgen begrenzen, wenn nach der Aktivierung von Limit-Aufträgen immer eine Position auf dem Markt ist?

Im Devisenhandel habe ich die Anzahl der Aufträge - Positionen - überprüft.

Limitaufträge müssen gesetzt werden, wenn es nur eine Position gibt

Wie kann dieser Zustand geändert werden?

Dies kann durch die Anzahl der Abschlüsse oder die Anzahl der Aufträge bestimmt werden, die mit der Eröffnung und Änderung einer Position verbunden sind. Sie müssen nur die Historie für das Ticket der Position auswählen und die Nummer überprüfen. Wenn es eine Variante gibt, bei der die Position an Volumen zugenommen hat und dann teilweise durch eine entgegengesetzte Limit-Order oder anderweitig geschlossen wurde, müssen wir eine Schleife durch die Geschäfte ziehen und die Arten von Geschäften als DEAL_ENTRY_IN und/oder andere Arten zählen.

Документация по MQL5: Торговые функции / HistorySelectByPosition
Документация по MQL5: Торговые функции / HistorySelectByPosition
  • www.mql5.com
Не следует путать между собой ордера из торговой истории и действующие отложенные ордера, которые отображаются на вкладке "Торговля" в панели "Инструменты". Список ордеров, которые были отменены или привели к проведению торговой операции, можно посмотреть  в закладке "История" на панели "Инструменты" клиентского терминала. Функция...
 
Danke, ich vergleiche das Lot der Position mit dem Startlot, wenn sie nicht gleich sind, steige ich aus.
 

Zweiter Tag der Umstellung des Roboters von MT4 auf MT5. Einstellung der ausstehenden Aufträge - es funktioniert. Hilfe zu MqlTradeRequest:

   else if(orderType==ORDER_TYPE_BUY_STOP)
     {
      request.type =ORDER_TYPE_BUY_STOP;                                // тип ордера
      price        =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // цена для открытия 
      request.price=NormalizeDouble(price,digits);                      // нормализованная цена открытия 
     }
   else if(orderType==ORDER_TYPE_SELL_STOP)
     {
      request.type     =ORDER_TYPE_SELL_STOP;                           // тип ордера
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;         // цена для открытия 
      request.price    =NormalizeDouble(price,digits);                  // нормализованная цена открытия 
     }

In beiden Fällen sieht Ask - wie ein Fehler aus. Im zweiten Fall für SELL_STOP wäre es besser, Bid ??? zu verwenden.

 
STARIJ:

Zweiter Tag der Umstellung des Roboters von MT4 auf MT5. Einstellung der ausstehenden Aufträge - es funktioniert. Hilfe zu MqlTradeRequest:

In beiden Fällen sieht Ask - wie ein Fehler aus. Im zweiten Fall wäre Bid besser für SELL_STOP.


SELL öffnet mit BID und schließt mit ASK

Grund der Beschwerde: