[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 922
_SS_: Wie kann ich die offene Auftragsart bestimmen?
OrderType()
Eigentlich sollten Sie mit einem Lehrbuch beginnen... :) Oder verwenden Sie zumindest F1 im MetaEditor
int OrderType(
)
Gibt den Auftragstyp des aktuell ausgewählten Auftrags zurück. Es kann einer der folgenden Werte sein: OP_BUY - Kaufposition, OP_SELL - Position verkaufen, OP_BUYLIMIT - ausstehender Kaufauftrag bei Erreichen eines bestimmten Niveaus, wenn der aktuelle Preis höher als das Niveau ist, OP_BUYSTOP - ausstehender Kaufauftrag, wenn das angegebene Niveau erreicht wird und der aktuelle Kurs unter dem Niveau liegt, OP_SELLLIMIT - ausstehender Verkaufsauftrag, wenn das angegebene Niveau erreicht wird und der aktuelle Preis unter dem Niveau liegt, OP_SELLSTOP - schwebende Verkaufsorder, wenn das angegebene Niveau erreicht wird und der aktuelle Preis über dem Niveau liegt. Die Bestellung muss mit der Funktion OrderSelect() vorausgewählt werden.
Beispiel:
int order_type; if(OrderSelect(12, SELECT_BY_POS)==true) { order_type=OrderType(); // ... } else Print("OrderSelect() hat einen Fehler geliefert - ",GetLastError());
extern double Lot=0.01; // Жестко заданное колич. лотов datetime time; //--------------------------------------------------------------- 2 -- int start() { int Total;
bool Ans =false, // Ответ сервера после закрытия Cls_B=false, // Критерий для закрытия Buy Cls_S=false, // Критерий для закрытия Sell Opn_B=false, // Критерий для открытия Buy Opn_S=false; // Критерий для открытия Sell
if (Opn_B) {OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,0);time=Time[1];}
}
Bitte helfen Sie, ich frage zum 3. Mal. Ein elementarer EA eröffnet eine Kaufposition beim Erscheinen einer neuen Kerze (vorausgesetzt, die vorangegangenen 2 Kerzen sind grün) und schließt die Position beim Schließen der Kerze, bei der die Position eröffnet wurde, oder beim Schließen der nächsten Kerze.
Der, den Sie oben sehen, öffnet eine Position jedes Mal, wenn eine neue Kerze erscheint, ohne auf die Eröffnungskriterien zu reagieren, aber ich verstehe nicht, wie man die Position schließt, ich konnte es nicht im Tutorial oder in den Foren finden.
Fließkommawert ist eine reelle Zahl vom Typ Double
Und anstelle von Ziffern eine Variable vom Typ int verwenden
Zum Beispiel int dg=MarketInfo ( Symbol(), MODE_DIGITS);
Sie schrieben mir: "NormalizeDouble(), überprüfe das maximale/minimale Lot-Limit, wenn es fünfstellig ist - erhöhe Stop und Profit um das 10-fache".
In der Dokumentation heißt es: "Rundung einer Fließkommazahl auf die angegebene Genauigkeit. Die berechneten StopLoss- und TakeProfit-Werte sowie die Eröffnungskurse der Pending Orders müssen auf die Genauigkeit normalisiert werden, deren Wert in der vordefinierten Variable Digits" gespeichert wird.
Ich habe es nicht im Lehrbuch gefunden. Ich habe verstanden, dass ich den aktuellen Preis, StopLoss und TakeProfit mit NormalizeDouble normalisieren muss --- wie sollte ich es normalisieren?
double NormalizeDouble(
double value, int digits)
double value -- statt double value kann ich z.B. Prise verwenden
int digits -- und diese Variable dg ist gleich MarketInfo( Symbol(), MODE_DIGITS); ???
Ich habe geschrieben: "NormalizeDouble(), prüfe auf maximales/minimales Lot-Limit, wenn fünf Ziffern - erhöhe Stop und Profit um das 10-fache".
In der Dokumentation heißt es: "Rundung einer Fließkommazahl auf die angegebene Genauigkeit. Die berechneten StopLoss- und TakeProfit-Werte sowie die Eröffnungskurse von Pending Orders müssen auf die Genauigkeit normalisiert werden, deren Wert in der vordefinierten Variable Digits" gespeichert wird.
Ich habe nicht gefunden, es in der Anleitung, ich verstehe, ich brauche, um NormalizeDouble verwenden ---, um den aktuellen Preis, StopLoss und TakeProfit normalisieren? Wenn ja, wie genau?
double NormalizeDouble(
double value, int digits)
doppelter Wert -- stattdessen kann ich z.B. Prise setzen
int digits -- und diese Variable dg ist gleich MarketInfo( Symbol(), MODE_DIGITS); ???
int StopLoss=50; // StopLoss in Pips
int TakeProfit=150; // TakeProfit in Pips
intOrderDistance=50; // Ausstehender Auftragsabstand in Punkten
Windows neu installiert. Das Warnfenster erscheint nicht mehr. Es gibt eine akustische Benachrichtigung, es gibt einen Protokolleintrag, aber das schwebende Fenster erscheint nicht mehr.
Ich habe das Terminal gesäubert und alles neu kompiliert. Was könnte der Grund sein?
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Wie kann ich die offene Auftragsart bestimmen?
OrderType()
Eigentlich sollten Sie mit einem Lehrbuch beginnen... :) Oder verwenden Sie zumindest F1 im MetaEditor
OP_BUY - Kaufposition,
OP_SELL - Position verkaufen,
OP_BUYLIMIT - ausstehender Kaufauftrag bei Erreichen eines bestimmten Niveaus, wenn der aktuelle Preis höher als das Niveau ist,
OP_BUYSTOP - ausstehender Kaufauftrag, wenn das angegebene Niveau erreicht wird und der aktuelle Kurs unter dem Niveau liegt,
OP_SELLLIMIT - ausstehender Verkaufsauftrag, wenn das angegebene Niveau erreicht wird und der aktuelle Preis unter dem Niveau liegt,
OP_SELLSTOP - schwebende Verkaufsorder, wenn das angegebene Niveau erreicht wird und der aktuelle Preis über dem Niveau liegt.
Die Bestellung muss mit der Funktion OrderSelect() vorausgewählt werden.
int order_type; if(OrderSelect(12, SELECT_BY_POS)==true) { order_type=OrderType(); // ... } else Print("OrderSelect() hat einen Fehler geliefert - ",GetLastError());Eine Gleitkommazahl ist eine reelle Zahl wie double
Und anstelle von Ziffern eine Variable vom Typ int verwenden
Zum Beispiel int dg=MarketInfo ( Symbol(), MODE_DIGITS);
datetime time;
//--------------------------------------------------------------- 2 --
int start()
{
int Total;
bool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell
//--------------------------------------------------------------- 3 --
// Учёт ордеров
for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()>1)Total++;
if(Total!=0 || time==Time[1])return;
static int KolBars;
if (Close[0]-Open[0] > Point && Close[1]-Open[1] > Point && Bars == KolBars)
{
KolBars=Bars ; // запоминаем кол-во бар при которых совершались действия
}
// Торговые критерии
// Критерий откр. Buy
Opn_B=true;
//--------------------------------------------------------------- 7 --
if (Opn_B)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,0);time=Time[1];}
}
Bitte helfen Sie, ich frage zum 3. Mal. Ein elementarer EA eröffnet eine Kaufposition beim Erscheinen einer neuen Kerze (vorausgesetzt, die vorangegangenen 2 Kerzen sind grün) und schließt die Position beim Schließen der Kerze, bei der die Position eröffnet wurde, oder beim Schließen der nächsten Kerze.
Der, den Sie oben sehen, öffnet eine Position jedes Mal, wenn eine neue Kerze erscheint, ohne auf die Eröffnungskriterien zu reagieren, aber ich verstehe nicht, wie man die Position schließt, ich konnte es nicht im Tutorial oder in den Foren finden.
Fließkommawert ist eine reelle Zahl vom Typ Double
Und anstelle von Ziffern eine Variable vom Typ int verwenden
Zum Beispiel int dg=MarketInfo ( Symbol(), MODE_DIGITS);
Sie schrieben mir: "NormalizeDouble(), überprüfe das maximale/minimale Lot-Limit, wenn es fünfstellig ist - erhöhe Stop und Profit um das 10-fache".
In der Dokumentation heißt es: "Rundung einer Fließkommazahl auf die angegebene Genauigkeit. Die berechneten StopLoss- und TakeProfit-Werte sowie die Eröffnungskurse der Pending Orders müssen auf die Genauigkeit normalisiert werden, deren Wert in der vordefinierten Variable Digits" gespeichert wird.
Ich habe es nicht im Lehrbuch gefunden. Ich habe verstanden, dass ich den aktuellen Preis, StopLoss und TakeProfit mit NormalizeDouble normalisieren muss --- wie sollte ich es normalisieren?
double value -- statt double value kann ich z.B. Prise verwenden
int digits -- und diese Variable dg ist gleich MarketInfo( Symbol(), MODE_DIGITS); ???
Ich habe geschrieben: "NormalizeDouble(), prüfe auf maximales/minimales Lot-Limit, wenn fünf Ziffern - erhöhe Stop und Profit um das 10-fache".
In der Dokumentation heißt es: "Rundung einer Fließkommazahl auf die angegebene Genauigkeit. Die berechneten StopLoss- und TakeProfit-Werte sowie die Eröffnungskurse von Pending Orders müssen auf die Genauigkeit normalisiert werden, deren Wert in der vordefinierten Variable Digits" gespeichert wird.
Ich habe nicht gefunden, es in der Anleitung, ich verstehe, ich brauche, um NormalizeDouble verwenden ---, um den aktuellen Preis, StopLoss und TakeProfit normalisieren? Wenn ja, wie genau?
doppelter Wert -- stattdessen kann ich z.B. Prise setzen
int digits -- und diese Variable dg ist gleich MarketInfo( Symbol(), MODE_DIGITS); ???
int StopLoss=50; // StopLoss in Pips
int TakeProfit=150; // TakeProfit in Pips
intOrderDistance=50; // Ausstehender Auftragsabstand in Punkten
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int pt=MarketInfo(Symbol(), MODE_POINT); // Punktgröße in der Kurswährung
int dg=MarketInfo(Symbol(),MODE_DIGITS); // Anzahl der Nachkommastellen im Symbolpreis
int StLev=MarketInfo(Symbol(),MODE_STOPLEVEL); // Minimal zulässiges Stop-Loss/Stake-Profit-Niveau in Punkten
double pa=MarketInfo(Symbol(), MODE_ASK); // Briefkurs
double pb=MarketInfo(Symbol(), MODE_BID); // Geldkurs
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
double slB=NormalizeDouble(pa-StopLoss*pt, dg); // Normalisierung des StopLoss-Kursniveaus für die Kaufposition
double tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // Normalisierung des TakeProfit-Preisniveaus für die Bid-Position
double slS=NormalizeDouble(pb+StopLoss*pt, dg); // normalizeStopLoss Kursniveau für Verkaufsposition
double tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // Normalisierung des TakeProfit-Preisniveaus für die Verkaufsposition
doubleB=NormalizeDouble(pa+SetOrderDistance*pt, dg); // Normalisierung des Preisniveaus für die Platzierung einer schwebenden Kauforder
double SetS=NormalizeDouble(pb-SetOrderDistance*pt, dg); // Normalisierung des Preises für die Platzierung einer schwebenden Verkaufsorder
double slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // Normalisierung des Preisniveaus des StopLoss für eine schwebende Kauforder
double tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // Normalisierung des Preisniveaus von TakeProfit der schwebenden Kauforder
double slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // Normalisierung des Preisniveaus von StopLoss für die anstehende Verkaufsorder
double tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // Normalisierung des Preisniveaus von TakeProfit der anstehenden Verkaufsorder
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Finde es heraus... :)
Und vergessen Sie nicht den StopLev - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);
Überprüfen Sie den Mindestabstand zwischen Anhalten und Abheben, um sicherzustellen, dass er nicht kleiner als dieser Wert ist.
int StopLoss=50; // StopLoss in Punkten
int TakeProfit=150; // TakeProfit in Punkten
intOrderDistance=50; // Abstand der ausstehenden Aufträge in Punkten
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int pt=MarketInfo(Symbol(), MODE_POINT); // Punktgröße in der Kurswährung
int dg=MarketInfo(Symbol(),MODE_DIGITS); // Anzahl der Nachkommastellen im Symbolpreis
int StLev=MarketInfo(Symbol(),MODE_STOPLEVEL); // Minimal zulässiges Stop-Loss/Stake-Profit-Niveau in Punkten
double pa=MarketInfo(Symbol(), MODE_ASK); // Briefkurs
double pb=MarketInfo(Symbol(), MODE_BID); // Geldkurs
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
double slB=NormalizeDouble(pa-StopLoss*pt, dg); // Normalisierung des StopLoss-Kursniveaus für die Kaufposition
double tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // Normalisierung des TakeProfit-Preisniveaus für die Bid-Position
double slS=NormalizeDouble(pb+StopLoss*pt, dg); // Normalisierung des StopLoss-Kursniveaus für die Verkaufsposition
double tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // Normalisierung des TakeProfit-Preisniveaus für die Verkaufsposition
doubleB=NormalizeDouble(pa+SetOrderDistance*pt, dg); // Normalisierung des Preisniveaus für die Platzierung einer schwebenden Kauforder
double SetS=NormalizeDouble(pb-SetOrderDistance*pt, dg); // Normalisierung des Preises für die Platzierung einer schwebenden Verkaufsorder
double slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // Normalisierung des Preisniveaus des StopLoss für eine schwebende Kauforder
double tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // Normalisierung des Preisniveaus des TakeProfits der schwebenden Kauforder
double slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // Normalisierung des Preisniveaus von StopLoss für die anstehende Verkaufsorder
double tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // Normalisierung des Preisniveaus von TakeProfit der anstehenden Verkaufsorder
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Finde es heraus... :)
Und vergessen Sie nicht den StopLev - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);
Überprüfen Sie den Mindestabstand für die Einstellung von Haltestellen und Abfahrten, damit dieser Wert nicht unterschritten wird
Vielen Dank!!! Ich werde es mir ansehen! )
Windows neu installiert. Das Warnfenster erscheint nicht mehr. Es gibt eine akustische Benachrichtigung, es gibt einen Protokolleintrag, aber das schwebende Fenster erscheint nicht mehr.
Ich habe das Terminal gesäubert und alles neu kompiliert. Was könnte der Grund sein?
Wie erstelle ich eine Funktion und rufe sie auf?
Zum x-ten Mal, lesen Sie ein Lehrbuch, studieren Sie den Stoff... :)