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

 
lil_lil:

Ich danke Ihnen.

Was ist denn jetzt los?

Ich schlug vor, mit HistorySelectByPosition zu beginnen , und Sie haben es irgendwo tief in die ifs geschoben...

Es kann nur eine Position pro Symbol in einem Netting-Konto geben. Abrufen der Positions-ID, Abrufen der Liste der Geschäfte, die an der Bildung dieser Position beteiligt waren, und Zählen dieser Geschäfte nach Handelsrichtung und Auftragsart.

 
Alexey Kozitsyn:

Artyom, ich wiederhole die Frage, bitte beantworten Sie sie:


Ich habe die Frage nicht gesehen :)

Ehrlich gesagt - ich erinnere mich nicht, aber ich glaube, es funktioniert in MT5 - nicht wahr?

Aber in der Testversion habe ich die ausstehenden Aufträge... Und ich habe mit der Maus gearbeitet. Aber vielleicht bin ich durcheinander gekommen, und ich habe mit der Maus auf einem echten Diagramm gearbeitet und die Schaltflächen im Tester benutzt...

Ich werde nicht raten - ich habe meine gesamte Bibliothek vor etwa einem halben Jahr in kleine Schrauben zerlegt, und ich werde nicht mehr in der Lage sein, sie schnell zu überprüfen. Ich habe den Wiederaufbau auf den Herbst verschoben. Es ist also schneller, nur die Arbeit des Ereignismodells OnChartEvent() im Tester zu überprüfen. Aber dafür habe ich noch keine Zeit - sorry :)

 
Artyom Trishkin:

Ich habe die Frage nicht gesehen :)

Ehrlich gesagt - ich erinnere mich nicht, aber ich glaube, es funktioniert in MT5 - nicht wahr?

Aber ich habe die ausstehenden Aufträge in den Tester gelegt... Und ich habe mit der Maus gearbeitet. Es kann aber auch sein, dass ich etwas verwechselt habe und mit der Maus auf einem echten Diagramm gearbeitet habe, während ich die Schaltflächen im Testprogramm benutzte...

Ich werde nicht raten - ich habe meine gesamte Bibliothek vor etwa einem halben Jahr in kleine Schrauben zerlegt, und ich werde nicht mehr in der Lage sein, sie schnell zu überprüfen. Ich habe den Umbau auf den Herbst verschoben. Es ist also schneller, nur die Arbeit des Ereignismodells OnChartEvent() im Tester zu überprüfen. Aber dafür habe ich noch keine Zeit - sorry :)

Das ist der gesamte Testcode:

switch( id )
{
default:
   Print( __FUNCTION__,": id = "+EnumToString( (ENUM_CHART_EVENT)id ) );
}

leider keine Reaktion im Testgerät. In der Funktion OnChartEvent(). Aufgerufen vom Expert Advisor.

 
Alexey Kozitsyn:

Der gesamte Testcode ist vorhanden:

leider keine Reaktion im Testgerät. In der Funktion OnChartEvent().

Und CHART_EVENT_MOUSE_MOVE=true ist gesetzt?
 
Alexey Viktorov:

Ich schlug vor, mit HistorySelectByPosition zu beginnen , aber Sie haben es irgendwo tief in ifs verschoben...

In einem Netting-Konto kann es nur eine Position pro Symbol geben. Abrufen der Positions-ID, Abrufen der Liste der Geschäfte, die diese Position bilden, und Zählen der Geschäfte nach Geschäftsrichtung und Auftragsart.

Das habe ich getan, weil ich eine universelle Zählfunktion für Netting und Hedging erstellen möchte, oder ist das unmöglich?

 
Artyom Trishkin:
Ist CHART_EVENT_MOUSE_MOVE=true gesetzt?

Nein, aber es ist unwahrscheinlich, dass dies das Problem löst, da Strg, Shift und andere Tasten gedrückt wurden... Es gab keine Reaktion.

 
lil_lil:

Ich bin hängen geblieben, weil ich eine universelle Zählfunktion für Netting und Hedging erstellen möchte, oder ist das unmöglich?

Das ist möglich. Aber die Ansätze sind unterschiedlich, und sie müssen zuerst richtig geplant werden, anstatt alles in eine einzige Codezeile zu packen...

 
Alexey Kozitsyn:

Nein, aber es ist unwahrscheinlich, dass dies das Problem löst, da Strg, Shift und andere Tasten gedrückt wurden... Es gab keine Reaktion.

Wie auch immer, ich habe im Moment wirklich keine Zeit zum Experimentieren - ich habe meine eigenen Sachen, die darauf warten, erledigt zu werden.

Vielleicht habe ich es wirklich vergessen. Aber ich habe die Zeitlimits im Tester eingestellt. Es ist sehr wahrscheinlich, dass es sich um die gleichen Knöpfe handelt. Ich weiß auch, dass ich sie mit der Maus eingestellt habe. Aber vielleicht auch auf einer Live-Karte...

 
Artyom Trishkin:

Wahrscheinlich. Aber die Ansätze sind unterschiedlich, und sie müssen zuerst richtig geplant werden, anstatt alles in eine einzige Codezeile zu packen...

Also werde ich es vorerst getrennt tun.

Was habe ich verpasst?

int GetNum(const string aSymbol)
  {
   int    count=0;
   if(PositionSelect(aSymbol))
     {
      long pos_id=long(PositionGetInteger(POSITION_IDENTIFIER));

      if(pos_id>0)
        {
         if(HistorySelectByPosition(ulong(pos_id)))
           {
            int deals=HistoryDealsTotal();

            for(int i=0; i<deals; i++)
              {
               ulong deal_ticket=HistoryDealGetTicket(i);
               ulong order_ticket=ulong(HistoryDealGetInteger(deal_ticket,DEAL_ORDER));

               if(order_ticket>0)
                 {
                  long deal_entry=long(HistoryDealGetInteger(deal_ticket,DEAL_ENTRY));

                  if(deal_entry==DEAL_ENTRY_IN)
                    {
                     if(m_position.PositionType()==POSITION_TYPE_SELL)
                       {
                        count++;
                       }
                    }
                 }
              }
            if( count > 0 ) return(count);
           }
         else
           {
            Print("Не возможно получить историю позиции по символу ",aSymbol);
           }
        }
      else
        {
         Print("Не возможно определить идентификатор позиции по символу ",aSymbol);
        }
     }
   return( 0 );
  }
////////////
 
Erst wird korrekt gezählt, dann, wenn 5 limit SELLs aktiviert sind, werden 6 in den Kommentar geschrieben. woher kommt die sechste?
Grund der Beschwerde: