Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 464

 

Ich kann das Problem nicht lösen, mir wird langweilig, und Bier hilft auch nicht.

Ich habe:

1 - es gibt 30 EAs, die auf einem Chart oder Symbol arbeiten und alle haben eine andere Medgic-Nummer

2- Jeder EA hat 3-5 offene Aufträge ...

Die Aufgabe besteht darin, alle Zahlen in einem Balken auf ein Diagramm zu drucken und den Gesamtgewinn/Verlust auf sie zu übertragen ...

Ich grabe, komme aber nicht weiter:

  #define  MagicN 0
#define  MagProf 1
 ArrayResize(mags,100,1000);ArrayInitialize(mags,0);  
   for(int f=OrdersTotal()-1; f>=0; f--)
      if(OrderSelect(f,SELECT_BY_POS))
              {
               for(int z=100-1; z>=0; z--)
                 {
                  if(mags[z][MagicN]==OrderMagicNumber())
                  mags[z][MagProf]+=OrderProfit()+OrderCommission()+OrderSwap();

                  if(mags[z][MagicN]!=OrderMagicNumber())
                    {
                     mags[z][MagicN]=OrderMagicNumber();
                     mags[z][MagProf]+=OrderProfit()+OrderCommission()+OrderSwap();
                    }
                 }
              }

Gute Leute helfen, die es können!!! )))))))

 
VOLDEMAR:

Ich kann das Problem nicht lösen, mir wird langweilig, und Bier hilft auch nicht.

Ich habe:

1 - es gibt 30 EAs, die auf einem Chart oder Symbol arbeiten und alle haben eine andere Medgic-Nummer

2- Jeder EA hat 3-5 offene Aufträge ...

Die Aufgabe besteht darin, alle Zahlen in einem Balken auf ein Diagramm zu drucken und den Gesamtgewinn/Verlust auf sie zu übertragen ...

Ich grabe, komme aber nicht weiter:

Gute Leute helfen, die es können!!! )))))))


Wir erstellen ein zweidimensionales Array. In der ersten Dimension speichern wir den akkumulierten Gewinn, in der zweiten Dimension speichern wir den Majik.

Bei der Bearbeitung von Aufträgen suchen wir nach einer magischen Zahl im Feld. Wenn wir sie nicht finden, erhöhen wir das Feld, wenn wir sie finden, erhöhen wir den Gewinn.

Nachdem die Verarbeitung abgeschlossen ist, wird das Ergebnis auf dem Bildschirm angezeigt

 
Vinin:


Erstellen Sie ein zweidimensionales Array. In der ersten Dimension speichern wir den kumulierten Gewinn und in der zweiten Dimension den Mejic.

Bei der Bearbeitung von Aufträgen suchen wir nach den Aufträgen im Array, wenn wir sie nicht finden, vergrößern wir das Array, wenn wir sie finden, erhöhen wir den Gewinn.

Nach Abschluss der Verarbeitung wird das Ergebnis auf dem Bildschirm angezeigt


Ist es nicht das, was ich geschrieben habe?
 
VOLDEMAR:

Steht das nicht da?

Nicht ganz. Hier legen Sie die Größe des Arrays fest und suchen nach einem Index auf Magik. Das habe ich nicht gesehen.
 
for(int f=OrdersTotal()-1; f>=0; f--) // Auftragssuche
if(OrderSelect(f,SELECT_BY_POS))
{
for(int z=0; z<ArraySize(mags); z++)// zweite Schleife über die Anzahl der Elemente im Array
{
if(mags[z][MagicN]==OrderMagicNumber()) // wenn bereits eine MagicNumber existiert, fügen wir den Gewinn hinzu
{
mags[z][MagProf]+=OrderProfit()+OrderCommission()+OrderSwap();
}
sonst /wenn kein Magazin vorhanden ist
{
ArrayResize(mags,z,1000); // Array erweitern
mags[z][MagicN]=OrderMagicNumber(); // Speichern der Mag
}
}

}

Aber mit diesem Konstrukt testet das Terminal nicht, es meldet einen kritischen Fehler

 
VOLDEMAR:
for(int f=OrdersTotal()-1; f>=0; f--) // Auftragssuche
if(OrderSelect(f,SELECT_BY_POS))
{
for(int z=0; z<ArraySize(mags); z++)// zweite Schleife über die Anzahl der Elemente im Array
{
if(mags[z][MagicN]==OrderMagicNumber()) // wenn bereits eine MagicNumber existiert, fügen wir den Gewinn hinzu
{
mags[z][MagProf]+=OrderProfit()+OrderCommission()+OrderSwap();
}
sonst /wenn kein Magazin vorhanden ist
{
ArrayResize(mags,z,1000); // Array erweitern
mags[z][MagicN]=OrderMagicNumber(); // Speichern der Mag
}
}

}

Aber mit diesem Konstrukt testet das Terminal nicht, es meldet einen kritischen Fehler


Was ist die MagicN-Variable und wo ändert sie sich?
 
hat in der Definition den Parameter 0 und MagProf hat in der Definition den Wert 1
 
VOLDEMAR:
in der Definition einen Parameter von 0 und MagProf in der Definition einen Wert von 1 hat


Versuchen Sie dies

#define MagicN 0
#define MagProf 1
double mags[10][2];
int CountMagic=0;

void CalcMagic()
  {
   for(int f=OrdersTotal()-1; f>=0; f--) // перебор ордеров
      if(OrderSelect(f,SELECT_BY_POS))
        {
         mags[FindMaic(OrderMagicNumber())][MagProf]+=OrderProfit()+OrderCommission()+OrderSwap();
        }

  }
//+------------------------------------------------------------------+

int FindMaic(int Magic)
  {
   int Res=-1;
   for(int i=0;i<CountMagic;i++)
     {
      if(mags[i][MagicN]==Magic)
         Res=i;
      break;
     }
   if(Res==-1)
     {
      Res=CountMagic;
      CountMagic++;
      if(CountMagic>=ArrayRange(mags,0))
        {
         ArrayResize(mags,CountMagic+10);
        }

     }

   return(Res);
  }
//+------------------------------------------------------------------+

In mehrdimensionalen Arrays kann die Dimensionalität mit ArrayRange() definiert werden

 
Es gibt einen StopLetter und einen Freeswell, die ich über marketinfo abrufen kann, aber es gibt die gleiche Einschränkung, die jedoch das Mindestverfallsdatum betrifft, das in der Regel 15 Minuten beträgt. Das heißt, wenn ich eine schwebende Order aufgebe, beträgt die Mindestzeit, nach der sie sich selbst löscht, wenn sie nicht ausgelöst wird, 15 Minuten. Das ist die Frage - wie kann ich diese Grenze programmatisch ermitteln?
 
Desead:
Es gibt ein Stopplay und Freezevel, die ich über Marketinfo bekommen kann, und es gibt die gleiche Einschränkung, aber die die minimale Ablaufdatum betrifft, in der Regel ist es 15 Minuten. das heißt, wenn ich eine schwebende Bestellung, die minimale Zeit, nach der es selbst zu löschen, wenn nicht ausgelöst, ist 15 Minuten. Das ist die Frage - wie kann ich diese Grenze programmatisch ermitteln?

Fragen Sie Ihren Makler! Einige führen kein Verfallsdatum ein.

Ich setze es nicht in eine Bestellung, sondern ich entferne es zu den Bedingungen.