Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 255
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
Wie berechnen Sie tp?
Ich gebe in der Variablen double tp=50 an;
Ich gebe in der Variablen double tp=50 an;
schreibt nun
2021.12.04 13:56:09.509 TestGenerator: Nicht übereinstimmende Datenfehler (Hochwert 1.13110 am 2021.12.03 23:45 wird vom niedrigsten Zeitrahmen nicht erreicht, Hochpreis 1.13104 stimmt nicht überein)
Setzen Sie es für eine Minute auf... es funktioniert...
aber das Niveau der Haltestelle ist anders -
1 2021.09.16 05:59 sell 1 0.01 1.18190 51.18192 1.18140 0.00 10000.00
schreibt nun
2021.12.04 13:56:09.509 TestGenerator: Nicht übereinstimmende Datenfehler (Hochwert 1.13110 am 2021.12.03 23:45 wird vom niedrigsten Zeitrahmen nicht erreicht, Hochpreis 1.13104 stimmt nicht überein)
Alle Regeln sind online verfügbar, also überprüfen Sie sie selbst.
Die Regeln sind alle online, also überprüfen Sie sie selbst.
Ich danke Ihnen!
Guten Abend meine Herren, könnten Sie mir bitte mitteilen, warum der Berater beim Öffnen der zweiten Bestellung einen Fehler anzeigt?
Der Text des Ratgebers selbst
//+----------------------Параметры-----------------------------------+
input int TakeProfit = 100; // Gewinn in Pips
input int StopLoss = 50; // Verlust in Pips
input double Lot = 0.01; // Startlot
Eingabe double Multilot = 1,95; // Multiplikator für Startlos
input int Schlupf =30; // Schlupf
input int MagicNumber = 333 ; // Eindeutige Nummer
//+------------------------------------------------------------------+
Experten-Initialisierungsfunktion //|.
//+------------------------------------------------------------------+
double tp=0;
double sl=0;
int OnInit()
{
tp=NormalizeDouble(TakeProfit*Point(),Digits());
sl=NormalizeDouble(StopLoss*Point(),Digits());
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Experten-Tick-Funktion |
//+------------------------------------------------------------------+
void OnTick()
{
//--die Schleife prüft auf offene Aufträge, wenn der Expert Advisor aktiviert ist, und berechnet diese.
int buy=0; //Anzahl der BUY-Aufträge
int sell=0; //Anzahl der SELL-Aufträge
for(int i = OrdersTotal()-1; i>=0; i--)
if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
if(AuftragsSymbol()==Symbol())
if(OrderMagicNumber()== MagicNumber)
{
if(Auftragsart()==OP_BUY)
kaufen++;
if(OrderType()==OP_SELL)
verkaufen++;
}
//--die Schleife erhält die Daten der letzten geschlossenen Order, wenn der EA aktiviert wird
int type=-1; //die Art eines geschlossenen Auftrags
int history_close_orders=0; //Anzahl der abgeschlossenen Aufträge
double lot=0; //Lot des letzten geschlossenen Auftrags
double profit=0; //Gewinn, zu dem der letzte Auftrag geschlossen wurde
datetime time=0; //Schlusszeitpunkt der letzten Bestellung
for(int i = OrdersHistoryTotal()-1; i>=0; i--)
if(OrderSelect(i, SELECT_BY_POS,MODE_HISTORY))
if(AuftragsSymbol()==Symbol())
if(OrderMagicNumber()== MagicNumber)
if(OrderCloseTime()>time)
{
history_close_orders++;
time = OrderCloseTime();//der Zeitpunkt des letzten Auftragsabschlusses
lot= OrderLots();//Lot der letzten geschlossenen Order
type=OrderType();// Typ der letzten abgeschlossenen Bestellung
profit=OrderProfit()*OrderSwap()*OrderCommission();//Gewinn der letzten geschlossenen Order
}
//Berechnen Sie das Los, mit dem der EA arbeiten wird
double Lots_Work=0;// Arbeitslos
if(history_close_orders==0 || profit>0)// wenn keine geschlossenen Aufträge vorhanden sind oder der letzte Auftrag mit Gewinn geschlossen wurde
Lots_Work=Lot;// Das Arbeitslos ist gleich dem Ausgangslos
if(history_close_orders>0 && profit<0) // wenn der letzte Auftrag im roten Bereich geschlossen wurde
Lots_Work=1;// Das Arbeitslos ist gleich dem Los der letzten Bestellung multipliziert mit dem Multiplikator
//eröffnet den ersten Kaufauftrag
if(Kauf==0 || Gewinn>0)
{
int ticket=OrderSend(Symbol(),OP_BUY,Lots_Work,Ask,Slippage,0,0, "Expert Advisor Test fair",MagicNumber,0,clrGreen);
if(ticket<0)
Print("OrderSend failed with error #",GetLastError());
sonst
Print("OrderSend erfolgreich abgeschlossen");
}
// Eröffnung des zweiten und der folgenden Kaufaufträge
if(buy==0 && type==OP_BUY && profit<0)
{
int ticket=OrderSend(Symbol(),OP_BUY,Lots_Work,Ask,Slippage,0,0, "EA Test fair",MagicNumber,0,clrGreen);
if(ticket<0)
Print("OrderSend failed with error #",GetLastError());
sonst
Print("OrderSend erfolgreich abgeschlossen");
}
// Eröffnung des ersten Verkaufsauftrags
if(verkaufen==0 || Gewinn>0)
{
int ticket=OrderSend(Symbol(),OP_SELL,Lots_Work,Bid,Slippage,0,0, "EA Test fair",MagicNumber,0,clrRed);
if(ticket<0)
Print("OrderSend failed with error #",GetLastError());
sonst
Print("OrderSend erfolgreich abgeschlossen");
}
// Eröffnung des zweiten und der folgenden Kaufaufträge
if(sell==0 && (type==OP_SELL && profit<0))
{
int ticket=OrderSend(Symbol(),OP_SELL,Lots_Work,Bid,Slippage,0,0, "Expert Advisor Test fair",MagicNumber,0,clrRed);
if(ticket<0)
Print("OrderSend failed with error #",GetLastError());
sonst
Print("OrderSend erfolgreich abgeschlossen");
}
//- Ändern Sie den Auftrag durch Hinzufügen von Take Profit und Stop Loss
for(int i = OrdersTotal()-1; i>=0; i--)
if(OrderSelect(i, SELECT_BY_POS))
if(AuftragSymbol()==Symbol())
if(OrderMagicNumber()== MagicNumber)
{
if(Auftragsart()==OP_BUY)
{
if(OrderStopLoss()==0 || OrderTakeProfit()==0)
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl,Digits(),NormalizeDouble(OrderOpenPrice()+tp,Digits(),0,clrGreen))
Print("OrderModify OK!");
sonst
Print("OrderModify BUY failed #", GetLastError());
}
if(OrderType()==OP_SELL)
{
if(OrderStopLoss()==0 || OrderTakeProfit()==0)
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl,Digits(),NormalizeDouble(OrderOpenPrice()-tp,Digits(),0,clrRed))
Print("OrderModify OK!");
sonst
Print("OrderModify SELL failed #", GetLastError());
}
}
}
//+------------------------------------------------------------------+
Auf meinem alten Laptop mit i3-Prozessor war noch WinXP 32 bit installiert, MT5 wurde nicht unterstützt. Ich habe kürzlich den Arbeitsspeicher auf 6 GB erhöht und möchte ein 64-Bit-Betriebssystem installieren, auf dem MT4 und MT5 laufen. Was ist vorzuziehen - Win7 oder Win8.1?
10
10