![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich hoffe, dass der Variablen Percent in OnInit() ein Wert zugewiesen wird?
Meine Prozent-Variable ist benutzerdefiniert. OnInit() habe ich entfallen lassen.
wenn Lots=0, wird nichts vom Prüfer geöffnet
Margin_Percent=AccountFreeMargin()*Percent/100;
Lots=Margin_Percent/MarketInfo(Symbol(),MODE_MARGINREQUIRED);
Lots_Volume=(MathFloor(Lots)+MarketInfo(Symbol(),MODE_LOTSTEP));
if(Lots>Lots_Volume){
Lots=Lots_Volume;
}
else if(Lots<Lots_Volume)
Lots=MathFloor(Lots);
Print("Количество лотов : ",Lots);
return;
Und dennoch, wo im Code ist Prozent eingestellt
und was bewirkt der folgende Befehl print("Lots : ",Lots); ?
Doch wo im Code ist Percent
und was bewirkt der folgende Befehl print("Anzahl der Lose : ",Lots); ?
#property version "1.00"
#property strict
//--- input parameters
input int Percent=50;
input int Fast_EMA_Period=12;
input int Slow_EMA_Period=25;
input int Signal_Period=9;
input double Step_PSAR=0.02;
input double Maximum_PSAR=0.2;
input int MAGICNUMBER=413;
static datetime New_Time;// Время текущего бара
double Margin_Percent; //Используемые средства для открытия ордеров
double Lots;//Определение общего количества лотов
double Lots_Volume;
double MacdCurrent;//Параметры MACD основной линии текущего бара
double MacdPrevious1;//Параметры MACD основной линии предыдущего бара
double MacdPrevious2;//Параметры MACD основной линии со смещением на 2 бара
double StopLoss;//Параметры Трейлинг стоп по параметрам ParabolicSAR текущего бара
double Previous_StopLoss;//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
double CurrentPSAR;//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
bool New_Bar=false; // Флаг нового бара
int ticket,total,cnt;
//---------------------------------------------------------------------------
New_Time=TimeCurrent();
if(Time[0]==New_Time) // Сравниваем время
New_Bar=true; // Поймался новый бар
else if(New_Bar==false) // Если бар не новый..
In der fünften Zeile wird Percent eingestellt. Das Protokoll zeigt: "Die Anzahl der Lose ist 90.0100000001". Vielleicht sollten wir NormalizeDouble() hinzufügen?
Mit dem Grundstück ist alles in Ordnung.
Suchen Sie nach einem Fehler in der Logik der Auftragseröffnung.
In solchen Fällen setze ich normalerweise eine explizite Bedingung, die den Auftrag öffnet
Mit dem Grundstück ist alles in Ordnung.
Suchen Sie nach einem Fehler in der Logik der Auftragseröffnung.
In der Regel stelle ich in solchen Fällen eine ausdrückliche Bedingung für die Öffnung des Auftrags auf
Bitte geben Sie ein Beispiel mit einer eindeutigen Bedingung an. Wenn ich es richtig verstehe, sollte die Schleife eine Bedingung für das Öffnen haben. Oder?
Geben Sie am Anfang des Codes, gleich nach der Berechnung des Loses, einen Befehl zur Eröffnung eines Auftrags und vergewissern Sie sich, dass der Tester richtig funktioniert. Dann können Sie alles wieder an seinen Platz setzen.
Die fünfte Zeile gibt den Prozentsatz an. Im Protokoll wird angezeigt: "Anzahl der Lose 90.0100000001". Vielleicht sollten wir NormalizeDouble() hinzufügen?