Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 982
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
Gestern schrieb ich den Code, es scheint zu funktionieren, wie es sollte, aber nur, wenn ich auf den obersten Wert des Arrays mit dem Plus-Button zu bekommen, setzt es auf den Anfang des Arrays und bewegt sich das Array wieder nach oben. Was kann ich im Code hinzufügen oder korrigieren, so dass, wenn der oberste Wert des Arrays erreicht ist, weitere Klicks auf die Plus-Schaltfläche beim obersten Index anhalten und nicht auf den untersten Wert des Arrays zurückgesetzt werden? Oder kann der Code auf andere Weise vereinfacht werden, um die Idee des Anklickens einer Schaltfläche umzusetzen?
Wahrscheinlich ja.
Ich denke schon.
Das habe ich auch versucht, funktioniert genauso
Das habe ich auch versucht, funktioniert genauso
Ich habe es nicht sofort bemerkt, wofür ist der Zyklus?
Ich habe es nicht sofort bemerkt, aber wofür ist die Schleife?
Gibt es eine Möglichkeit, dies ohne sie zu tun? Ich weiß einfach nicht, was das Beste ist, und ich tue nur das, was ich für logisch halte.
Gibt es eine Möglichkeit, dies ohne sie zu tun? Ich weiß einfach nicht, was das Beste ist, und tue, was ich für logisch halte.
Nun, die Logik muss anders sein. Durch Drücken der Taste + wird der Index des Feldes erhöht. Wenn der Höchstwert erreicht ist, wird er nicht erhöht, sondern bleibt auf dem Höchstwert. Drücken Sie die Taste - der Index sinkt. Erreicht Null, reagiert nicht auf Drücken, bleibt auf Index 0.
Oder gab es eine andere Idee?
PS: Und wer hat das Beispiel für die Arbeit mit Flaggen als Antwort auf diese Frage gepostet und dann gelöscht? Warum haben Sie sie gelöscht? Schließlich ist es eine wirklich gute Lösung für den Mann. Warum sollte er eine begrenzte Anzahl von Geräten benötigen?Nun, die Logik muss anders sein. Durch Drücken der Taste + wird der Array-Index erhöht. Wenn der Höchstwert erreicht ist, wird er nicht erhöht, sondern bleibt auf dem Höchstwert. Drücken Sie die Taste - der Index sinkt. Erreicht Null, antwortet nicht, bleibt auf Index 0.
Oder gab es eine andere Idee?
PS: Und wer hat das Beispiel für die Arbeit mit Flaggen als Antwort auf diese Frage gepostet und dann gelöscht? Warum haben Sie sie gelöscht? Schließlich ist es eine wirklich gute Lösung für den Mann. Warum sollte er eine begrenzte Anzahl von Geräten benötigen?Nein, genau das war die Idee. Ich weiß nicht wirklich, wie man es richtig macht, also habe ich es so gemacht, wie ich es bekommen habe. Aber ich habe festgestellt, dass, wenn die Schleife im Programm läuft, bis die Schleife durch Drücken der Schaltflächen auf dem Diagramm angeklickt wird, alles andere nicht funktioniert. Es ist, als würde alles stillstehen. Ich verstehe nicht, warum dies geschieht, wenn es irgendwelche Varianten gibt, um die Idee anders umzusetzen, würde ich es zu schätzen wissen...
Das war's. Das Problem ist gelöst) ohne Arrays und andere Dinge. Es erwies sich als viel einfacher))))
Die zweite Frage kam auf. Wie kann ich die Auslösestufe des Alarms im Code mit dem Einstellungspfeil einstellen, der erscheint, wenn der Alarm über das Kontextmenü mit der Maus eingestellt wird?
Bitte helfen Sie, plz, ist es möglich, eine Funktion zu diesem EA hinzufügen, so dass der EA in das Fenster EURUSD gesetzt wird ein Geschäft mit den gleichen Parametern zu öffnen, zur gleichen Zeit, aber für GBPUSD, und EURUSD wird nicht geöffnet.
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//| Entwickler: Minajew Andrej |
//| Expert Advisor: Stochastisch.mq4 |
|| Website: safe-forex.|| Website: safe-forex. |
//| Mail:minaev.work@mail.ru |
//| Skype: live:minaev.Arbeit |
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
#property copyright "Safe-Forex.ru"
#property link "https://safe-forex.ru"
#Eigenschaft streng
extern bool Use_Symbol1 = true;
externer String Symbol1 = "USDJPY";
input string settings = ""; // Expert Advisor Einstellungen
Eingabe int magic = 111; // Eingabe magic
input double fixVolume = 0.01; // Volumen
input int takeProfit = 500; // Gewinn
input int stopLoss = 500; //Verlust
Eingabe int buyLevel = 100; // Eingabe int buy Level
input int sellLevel = 0; // 75 Sell Level
extern int ADXperiod = 15; //ADX-Periode 15
extern int ADXLevel =1;
extern int MAperiod =360; //MA-Periode 80
extern int MAperiod_2 =360; //MA-Periode 80
input string stochSettings = ""; // Einstellungen des Stochastik-Oszillator-Indikators
input int stochPeriodK = 5; //Periode %K
input int stochPeriodD = 3; //Periode %D
input int stochSlowing = 3; // Verlangsamung
input ENUM_STO_PRICE stochPrice = STO_LOWHIGH; // Preis
Eingabe ENUM_MA_METHOD stochMethod = MODE_SMA; // Methode
datetime newCandle; // neue Kerze auf dem aktuellen Chart
bool allowOpenBuy; // Erlaubnis zum Öffnen einer Kaufposition
allowOpenSell; // Erlaubnis zur Eröffnung einer Verkaufsposition
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
int OnInit(void)
{
return INIT_SUCCEED;
}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
void OnTick(void)
{
if(newCandle!=Time[0]) CheckSignalExist(); newCandle=Time[0];
if(allowOpenBuy) OpenPosition(OP_BUY);
if(allowOpenSell) OpenPosition(OP_SELL);
}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//| Funktion öffnet Position zum aktuellen Preis |
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
void OpenPosition(int type)
{
double price=0.0;
if(type==OP_BUY) price=Ask;
if(type==OP_SELL) price=Bid;
int ticket=OrderSend(_Symbol,Typ,fixVolumen,Preis,0,0,",magic,0);
// int ticket=OrderSend(,type,fixVolume,price,0,0,0,",magic,0);
Sleep(1000);
if(Ticket>0)
{
if(typ==OP_BUY)
{
Print("Kaufposition eröffnet, Ticket: ",Ticket);
allowOpenBuy=false;
// SetStopOrders(ticket);
}
if(typ==OP_SELL)
{
Print("Verkaufsposition eröffnet, Ticket: ",Ticket);
allowOpenSell=false;
// SetStopOrders(ticket);
}
}
if(ticket<0)
{
if(type==OP_BUY) Print("Kaufposition wurde nicht eröffnet, Fehler: ",GetLastError());
if(type==OP_SELL) Print("Verkaufsposition konnte nicht eröffnet werden, Fehler: ",GetLastError());
}
}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//| Funktion setzt Stop-Order |
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//void SetStopOrders(int ticket)
//{
// double stopLevel=MarketInfo(_Symbol,MODE_STOPLEVEL),
// spread =MarketInfo(_Symbol,MODE_SPREAD),
// tp =Gewinnmitnahme,
// sl =stopLoss;
// stopLevel+=spread;
// if(tp<stopLevel)
// {
// tp=stopLevel;
// Print("Mindestabstand für Gewinnsatz");
// }
// if(sl<stopLevel)
// {
// sl=stopLevel;
// Print("Mindestabstand für Verlustmenge");
// }
// if(OrderSelect(ticket,SELECT_BY_TICKET))
// {
// int type=OrderType();
// double opp =OrderOpenPrice();
// if(type==OP_BUY) {tp=opp+tp*_Point; sl=opp-sl*_Point;}
// if(type==OP_SELL) {tp=topp-tp*_Point; sl=opp+sl*_Point;}
// if(OrderModify(ticket,opp,sl,tp,0))
// {
// if(type==OP_BUY) Print("P&L levels set for Buy position, ticket: ",ticket);
// if(type==OP_SELL) Print("P&L levels für die Sell-Position wurden gesetzt, Ticket: ",Ticket);
// }
// sonst {
// if(type==OP_BUY) Print("P&L-Levels für die Position Buy wurden nicht gesetzt, Ticket: ",Ticket," Fehler: ",GetLastError());
// if(type==OP_SELL) Print("P&L-Levels für die Sell-Position wurden nicht gesetzt; ticket: ",ticket," error: ",GetLastError();
// }
// }
//}
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//| Funktion prüft auf Vorhandensein eines Signals |
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
void CheckSignalExist(void)
{
double ADX1=iADX(Symbol(),Zeitraum(),ADXPeriode,0,MODE_MAIN,1); ////////////////////////////
double ADX2=iADX(Symbol(),Periode(),ADXPeriode,0,MODE_MAIN,2);
double DPLUS=iADX(Symbol(),Zeitraum(),ADXPeriode,0,MODE_PLUSDI,1);
double DMINUS=iADX(Symbol(),Zeitraum(),ADXPeriode,0,MODE_MINUSDI,1);
double MA=iMA(Symbol(),Zeitraum(),MAZeitraum,0,MODE_SMA,0,1);
double MA_2=iMA(Symbol(),Zeitraum(),MAperiod_2,0,MODE_SMA,0,1);
//PERIOD_H1
double mainLine1=iStochastic(_Symbol,PERIOD_CURRENT,stochPeriodK,stochPeriodD,stochSlowing,stochMethod,stochPrice,MODE_MAIN,1),
mainLine2=iStochastic(_Symbol,PERIOD_CURRENT,stochPeriodK,stochPeriodD,stochSlowing,stochMethod,stochPrice,MODE_MAIN,2),
signLine1=iStochastic(_Symbol,PERIOD_CURRENT,stochPeriodK,stochPeriodD,stochSlowing,stochMethod,stochPrice,MODE_SIGNAL,1),
signLine2=iStochastic(_Symbol,PERIOD_CURRENT,stochPeriodK,stochPeriodD,stochSlowing,stochMethod,stochPrice,MODE_SIGNAL,2);
Comment(" ", (Ask-Bid)/1.5," ",Bid-Close[1]," ", Ask-Close[1]);
// if(mainLine1>signLine1 && mainLine2<signLine2 && mainLine1<buyLevel && ADX1>ADXLevel && mainLine2<buyLevel
//& iClose(Symbol(),Period(),1)>MA& iClose(Symbol(),Period(),1)>MA_2 && signLine1<buyLevel && signLine2<buyLevel
if(mainLine1>signLine1 && mainLine2<signLine2 && mainLine1<buyLevel && ADX1>ADXLevel && mainLine2<buyLevel
//&Close[2]<MA& Close[2]<MA_2 && signLine1<buyLevel && signLine2<buyLevel
&&Close[10] > Close[1]-(Close[1]-Close[20])
&& Close[10]>Bid )
{
Print("Ein Signal zur Eröffnung einer Kaufposition ist erschienen");
if(GetPositionsNumber()==0)
{
// allowOpenSell=true;
{ allowOpenBuy=true;
Sleep(1000);
Print("Erlaubt, eine Kaufposition zu eröffnen");
}
}
// if(mainLine1<signLine1 && mainLine2>signLine2 && mainLine1>sellLevel && ADX1>ADXLevel&& mainLine2>sellLevel
//& iClose(Symbol(),Period(),1)<MA& iClose(Symbol(),Period(),1)<MA_2 && signLine1>sellLevel && signLine2>sellLevel
if(mainLine1>signLine1 && mainLine2<signLine2 && mainLine1<buyLevel && ADX1>ADXLevel && mainLine2<buyLevel
//&Close[2]>MA& Close[2]>MA_2 && signLine1<buyLevel && signLine2<buyLevel
&&Close[10] < Close[1]+(Close[20]-Close[1])
&& Close[10]<Ask )
{
Print("Ein Signal zur Eröffnung einer Verkaufsposition ist erschienen");
if(GetPositionsNumber()==0)
{
// allowOpenBuy=true;
allowOpenSell=true;
Sleep(1000);
Print("Erlaubt, eine Verkaufsposition zu eröffnen");
}
}
}
/////////////////////////////////////////
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
//| Die Funktion gibt die Anzahl der offenen Positionen zurück. |
//+-------------------------------------------------------------------------------------------------------------------------------------------------+
int GetPositionsNumber(void)
{
int number=0;
for(int i=0; i<OrdersTotal(); i++)
if(OrderSelect(i,SELECT_BY_POS))
if(OrderSymbol()==_Symbol && OrderMagicNumber()==magisch)
Nummer++;
Rückgabenummer;
}
//+---------------------------------------------------------------------------------------------------------------------------------
Hilfe, plz, ist es möglich, eine Funktion zu diesem EA hinzuzufügen, so dass der EA im EURUSD-Fenster installiert würde einen Handel mit den gleichen Parametern öffnen, zur gleichen Zeit, aber auf GBPUSD, und nicht auf EURUSD öffnen.
Tut mir leid, ist Ihr Kopf in Ordnung? Sie haben den Code nicht nur an einer Stelle eingefügt, sondern auch eine große Anzahl von Leerzeilen hinterlassen.
Meinen Sie nicht, dass Sie etwas Respekt vor demjenigen haben sollten, den Sie um Hilfe bitten?