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

 
Vitaly Muzichenko:

Sie ist ohnehin dimensionslos, aber sie ist zweidimensional, und man kann eine dimensionslose Anzahl von Elementen in zwei Dimensionen unterbringen.

Was machen Sie überhaupt, haben Sie eine Vorstellung davon, was das Ergebnis Ihrer Arbeit sein soll? Oder denken Sie sich die Logik einfach aus, während Sie unterwegs sind?

Im aktuellen Beispiel möchte ich in der Lage sein, eine unendliche Anzahl von Aufträgen mit einem beliebigen Lot zu platzieren, um zu vermeiden, dass die festgelegten Grenzen überschritten werden.

Natürlich kennen wir die Grenzen, aber ich würde es gerne so machen.

Ich gehe davon aus, dass, wenn Sie ein Element in Klammern angeben, es das letzte sein wird

Ich habe also diese Art von Mist. Ich hatte einen Auftrag nach Auftrag erwartet... Ich möchte, dass das Ergebnis (Los eines solchen Auftrags *Koeffizient) zum Auftrag hinzugefügt wird und nicht das Los

und die Frage des Abrufs von Daten von dort

Ich möchte das folgende Ergebnis erhalten

MyArray[0][0.01]

MyArray[1][0.01]

MyArray[2][0.02]

usw...


void CalcOrders()

{

int CountOrders=0;

double MyArray [99][99];

for(i=OrdersTotal()-1; i>=0; i--)

     {

      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())

         && (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))

         CountOrders++;

         ArrayResize(MyArray,CountOrders+1);

         MyArray[CountOrders][0]=OrderLots();

         Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);

     }

}    

2017.01.13 12:51:14.372 2017.01.05 16:30:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01

 
trader781:

Im aktuellen Beispiel möchte ich in der Lage sein, eine unendliche Anzahl von Aufträgen mit beliebigen Lots zu platzieren, um die Limits nicht zu überschreiten.

Natürlich kennen wir alle die Grenzen, aber ich möchte es auf diese Weise machen

Ich gehe davon aus, dass, wenn Sie ein Element in Klammern angeben, es das letzte sein wird

Ich habe also diese Art von Mist. Ich hatte einen Auftrag nach Auftrag erwartet... Ich möchte, dass das Ergebnis(Los eines solchen Auftrags *Koeffizient) zum Auftrag hinzugefügt wird, anstatt das Los

Und die Frage des Abrufs von Daten von dort



void CalcOrders()

{

int CountOrders=0;

double MyArray [99][99];

for(i=OrdersTotal()-1; i>=0; i--)

     {

      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())

         && (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))

         CountOrders++;

         ArrayResize(MyArray,CountOrders+1);

         MyArray[CountOrders][0]=OrderLots();

         Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);

     }

}    

2017.01.13 12:51:14.372 2017.01.05 16:30:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01


Erklären Sie, was Sie brauchen.

Speichern wir alles in einem Array, was dann?

Dann drehen wir das Feld und suchen die gewünschte Position, was?

Lot welche Position, gibt es da eine Definition, oder nach Augenmaß, ich habe auf die Registerkarte Handel geschaut, ja brauche 6, richtig?
 
Alekseu Fedotov:

Können Sie bitte erklären, was Sie brauchen?

Wir packen alles in ein Array, und was dann?

Wir drehen das Array und suchen die gewünschte Position, was?

Wenn ich mir die Registerkarte "Handel" ansehe, weiß ich, dass ich 6 brauche, richtig?

OnTick()

wenn die Bedingung für die Eröffnung einer Position korrekt ist

{offene Position}

wenn die Öffnungsbedingung der Position korrekt ist

{die gleiche Menge auffüllen }

Wenn das letzte Los die Position 2 ist, fügen wir das Los *1.5 hinzu (die Funktion "Finde das letzte" gibt das zweite zurück) und dies wird das dritte sein

wenn dies die vierte Ordnung ist

Aufstockung {Los Null+Los Eins}

wenn es sich um die fünfte Ordnung handelt

Füllen {Lot 1 Position +Lot 3}

Derzeit gibt es eine Definition für die letzte Position in der Liste

Wir müssen es in ein Array schreiben und das richtige auf einmal herausholen, weil ich im Moment keine andere Möglichkeit der Implementierung sehe, so dass die Anzahl der Aufträge und Positionen theoretisch unendlich sein sollte

Ich habe Ihnen gezeigt, was ich in der Funktion gemacht habe, ich weiß nicht, ob es richtig ist oder nicht.

Ich muss die Daten abrufen und im Voraus wissen, welcher Auftrag auf meinem Konto eröffnet werden kann

Ich behaupte nicht, dass das System funktioniert, wichtig ist die Umsetzung.

 
Gute Zeit. Können Sie beraten, wenn Sie einen EA zu testen und es verwendet Befehle zum Schreiben und Lesen von Bits und csv-Datei, wie wir wissen, gibt es Fehler in der Test-Modus zu verwenden Operationen mit diesen Dateien
 
Top2n:
Guten Tag. Können Sie mir einen Rat geben, wenn ich einen EA testen muss und er Befehle zum Schreiben und Lesen von Bits und CSV-Dateien verwendet, da wir wissen, dass im Testmodus bei der Verwendung von Dateioperationen Fehler auftreten.

Es treten keine Fehler auf. Schreibt nur in einen anderen Ordner, wenn das Flag nicht verwendet wird

FILE_COMMON

4096

Speicherort der Datei im gemeinsamen Ordner aller Client-Terminals \Terminal\Common\Files. Dieses Flag wird beim Öffnen von Dateien (FileOpen()), beim Kopieren von Dateien (FileCopy(), FileMove()) und beim Überprüfen der Existenz von Dateien (FileIsExist()) verwendet

 
Alexey Viktorov:

Es ist kein Fehler aufgetreten. Schreibt nur in einen anderen Ordner, wenn das Flag nicht verwendet wird

FILE_COMMON

4096

Speicherort der Datei im gemeinsamen Ordner aller Client-Terminals \Terminal\Common\Files. Dieses Flag wird beim Öffnen von Dateien (FileOpen()), beim Kopieren von Dateien (FileCopy(), FileMove()) und beim Überprüfen der Existenz von Dateien (FileIsExist()) verwendet

Nun, ich verwende FileOpen()

input string InpFileName="data.bin";
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+InpFileName;

C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files

5004:ERR_FILE_CANNOT_OPEN = Fehler beim Öffnen einer Datei

 
Top2n:

Nun, ich verwende FileOpen()

input string InpFileName="data.bin";
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+ InpFileName;

C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files

5004:ERR_FILE_CANNOT_OPEN = Fehler beim Öffnen einer Datei

FileOpen() ist kein Flag... Das Kennzeichen ist FILE_COMMON.

Wenn Sie nicht in einen separaten Ordner schreiben wollen, müssen Sie ihn nicht als leere Zeichenfolge im Pfad angeben. Unnötiges ist gelb hervorgehoben.


 
Alexey Viktorov:

FileOpen() ist kein Flag... Das Kennzeichen ist FILE_COMMON.

Wenn Sie nicht in einen separaten Ordner schreiben wollen, müssen Sie ihn nicht als leere Zeichenfolge im Pfad angeben. Unnötiges ist gelb hervorgehoben.


Es gibt einen Kontakt, danke
 
Hallo!
Können Sie mir sagen, wo ich etwas über die Eigenschaft #property strict lesen kann?
 
Leo59:
Hallo!
Können Sie mir sagen, wo ich etwas über die Eigenschaft #property strict erfahren kann?
Zum Beispiel hier https://docs.mql4.com/ru/basis/preprosessor/compilation
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
  • docs.mql4.com
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
Grund der Beschwerde: