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

 

Guten Tag,

Gibt es eine Möglichkeit, das Verzeichnis für das Schreiben/Lesen von Dateien von "Tester/Dateien" in "MQL/Dateien" zu ändern, wenn der Expert Advisor während des Testens mit diesen Dateien arbeitet?

 
Asa saas:

Guten Tag,

Ist es möglich, das Lese-/Schreibverzeichnis von "Tester/Dateien" in "MQL/Dateien" zu ändern, wenn Expert Advisor diese Dateien beim Testen verwendet?

Mit MQL - nicht möglich, nur über WinAPI.

 

Vielen Dank für Ihre Antwort!

 
PolarSeaman:

Wie berechne ich das Losvolumen in Inkrementen? Wenn Einlage =1000, Lot = 0,1, Einlage wurde 2000, Lot = 0,2. Das heißt, wenn die Kaution 1500 oder 1700 beträgt, erhöht sich die Menge nicht.

lot = MathCeil(depo / 1000) * 0.1;
 
Ihor Herasko:

Nicht mit MQL-Tools, nur mit WinAPI.

Asa saas:

Vielen Dank für die Antwort!

In diesem Fall sollten Sie das FILE_COMMON-Flag verwenden , damit die Dateien sowohl vom Tester als auch vom Terminal aus verfügbar sind. Lediglich bei Tests im Netz können Probleme auftreten. Aber ich persönlich habe es nicht getestet.

FileOpen - Файловые операции - Справочник MQL4
FileOpen - Файловые операции - Справочник MQL4
  • docs.mql4.com
[in]  Имя открываемого файла, может содержать подпапки. Если файл открывается для записи, то указанные подпапки будут созданы в случае их отсутствия. [in]  значение, используемое в качестве разделителя в txt или csv-файле. Если для csv-файла разделитель не указан, то по умолчанию используется ";". Если для txt-файла разделитель не указан, то...
 

Taras Slobodyanik:

lot = MathCeil(depo / 1000) * 0.1;

Rechnen wir mal nach:

Kaution = 1.700. Dividiert durch 1.000 ergibt sich 1,7 und aufgerundet auf die nächste ganze Zahl ergibt sich 2.

Multiplizieren Sie mit 0,1 und das Ergebnis ist nicht das, was Sie wollen.

Offensichtlich ist es besser, auf die nächstkleinere ganze Zahl zu runden MathFloor

MathFloor - Математические функции - Справочник MQL4
MathFloor - Математические функции - Справочник MQL4
  • docs.mql4.com
MathFloor - Математические функции - Справочник MQL4
 
PolarSeaman:

Nein, nein, bei einer Einzahlung von 1100 beträgt das Los 0,11, und ich muss das Los nicht auf 2000 erhöhen. Wie kann man einen Schritt =1000 in den Einstellungen festlegen?

Ich habe sie korrigiert.

double percentLot = 0.01,
       lot = NormalizeDouble(MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)*percentLot/10)/10, 1);

Das Prinzip ist zwar vorhanden, aber es handelt sich um eine Nuance

 
Alexey Viktorov:

Rechnen wir mal nach:

Kaution = 1.700. Dividiert durch 1.000 ergibt sich 1,7 und aufgerundet auf die nächste ganze Zahl ergibt sich 2.

Multiplizieren Sie mit 0,1 und das Ergebnis ist nicht das, was Sie wollen.

Offensichtlich ist es besser, auf die nächstkleinere ganze Zahl zu runden MathFloor

oder anstelle von 1000, 1999.99 )

1000 und 0,1 sind externe Variablen.

 
Und warum klammern sich alle an 0,1. Heute will ein Mann 0,1, morgen will er 0,5. Sie müssen sich auf die Prozentsätze stützen. Es hat keinen Sinn, sich starr an die Intelligenz zu halten.
 

Danke, das habe ich getan:

   input double _lot=0.1;
   input int _depo=1000;
//***************************
   lot=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/_depo)*_lot;
   lot=NormalizeDouble(lot,2);

Ich hoffe, ich habe_depo vom Typint richtig eingegeben.

Grund der Beschwerde: