Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1003
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
Bitte teilen Sie uns mit, wie Sie die folgenden Punkte umsetzen können:
Es gibt benutzerdefinierte Linien auf dem Diagramm, lassen Sie es "n" Anzahl von ihnen sein. Wie kann der Preiswert ermittelt werden, wenn sich der Preis einer der Linien nähert?
Vielen Dank im Voraus!
Hallo alle ) bitte helfen - Das Ziel ist (wenn der Preis über die (100 Pips) "Linie" dann "kaufen" ) ) Wie drückt man es aus (der Preis ist um 100 Pips höher als ein beliebiger Wert) und auch diese Frage, wie man den Preis des gleitenden Durchschnitts im Moment kennt?
vielen Dank im Voraus )
Hallo alle ) bitte helfen - Das Ziel ist (wenn der Preis über die (100 Pips) "Linie" dann "kaufen" ) ) Wie drückt man es aus (der Preis ist um 100 Pips höher als ein beliebiger Wert) und auch diese Frage, wie man den Preis des gleitenden Durchschnitts im Moment kennt?
vielen Dank im Voraus )
Bitte geben Sie einem Neueinsteiger Tipps, wie er vermeiden kann, einen Auftrag wieder zu öffnen, nachdem er geschlossen wurde, und dabei die Handelsbedingungen für die Eröffnung einzuhalten.
Beispiel: Wenn der Stochastik die 50er-Marke nach oben kreuzt, eröffnen Sie Kaufen. Schließen Sie bei einer Umkehrung des Stochastiks oder bei Erreichen des Niveaus 80 oder bei Take Profit. Aber die Handelsbedingungen zur Eröffnung bleiben erhalten! D.h. der Stochastik bleibt über 50 und der Kauf ist wieder eröffnet!
double S_1=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,0);
double S_2=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,1);
wenn(S_1>50)
{
Opn_B=true;
}
if(S_1<S_2||S_1>80)
{
Cls_B=true;
}
Ich füge Handelskriterien in das Schema des einfachen Expert Advisors ein, das im MQL-Tutorial vorgestellt wird. Bitte teilen Sie mir mit, welche Funktion ich verwenden kann, um dieses Problem zu vermeiden. Ich danke Ihnen!
Dies ist die Voraussetzung für das Überschreiten der 50er-Marke von unten nach oben.
Dies ist die Voraussetzung für das Überschreiten der 50er-Marke von unten nach oben.
Hallo, könnten Sie mich bitte beraten? Ich ändere die Handelskriterien im Expert Advisor, der im MQL4-Tutorial vorgestellt wird. Wenn ich versuche, einen Stop-Loss für Buy zu setzen, meldet das Programm den Fehler 130: Falsche Stops. Bitte erklären Sie, warum?
// Numerische Werte für M15
extern double StopLoss =0; // SL für den zu eröffnenden Auftrag
extern double TakeProfit =0; // TP für die zu eröffnende Order
extern int K = 5;
extern int D = 3;
extern int slowing = 3;
extern int preis_feld = 0;
extern int Level_1 = 80; // Stochastischer Level
extern int Level_2 = 20;
extern inttern Zeitraum_MA_2 = 31; // MA Zeitraum 2
extern double Rastvor =28.0; // Abstand zwischen MA
extern double Lots =0.01; // Feste Anzahl von Losen.
extern double Prots =0.07; // Prozentualer Anteil der freien Mittel
bool Work=true; // Expert Advisor wird funktionieren.
string Symb; // Name des Finanzinstruments
//--------------------------------------------------------------- 2 --
int start()
{
int
K_level,
Total, // Anzahl der Aufträge im Fenster
Tip=-1, // Auftragsart ausgewählt (B=0,S=1)
Ticket; // Bestellnummer
double S_1,
S_2,
MA_1_t, // MA_1_t Wert. MA_1 aktueller Wert
MA_2_t, // Wert. MA_2 current MA_2_t value // Anzahl der ausgewählten Lose in der Reihenfolge
Lose, //Lose Menge im aktuell ausgewählten Auftrag
Lts, //Anzahl der Lose in einem offenen Auftrag
Min_Lot, // Mindestanzahl von Losen
Schritt, // Schritt der Losgrößenänderung
Frei, // Derzeitige freie Mittel
One_Lot, // Wert eines Loses
Preis, // Preis der ausgewählten Bestellung
SL, // SL-Preis des ausgewählten Auftrags
TP; // TP des ausgewählten Auftrags
bool
Ans =false, // Serverantwort nach dem Schließen
Cls_B=false, // Kriterien für den Abschluss Kauf
Cls_S=false, // Kriterium für den Abschluss Verkauf
Opn_B=false, // Kriterium für die Eröffnung Kaufen
Opn__S=false; // Kriterium für die Öffnung Verkauf
//--------------------------------------------------------------- 3 --
//Vorverarbeitung
if(Balken < Period_MA_2) // Nicht genügend Balken
{
Alert("Nicht genügend Balken im Fenster, Expert Advisor funktioniert nicht");
return; // Beenden von start()
}
if(Work==false) // Kritischer Fehler.
{
Alert("Kritischer Fehler: Expert Advisor funktioniert nicht.");
return; // Beenden von start()
}
//--------------------------------------------------------------- 4 --
// Zählen der Aufträge
Symb=Symbol(); // Name des Finanzinstruments.
Total=0; // Anzahl der Aufträge
for(int i=1; i<=OrdersTotal(); i++) // Auftragsschleife
{
if(OrderSelect(i-1,SELECT_BY_POS)==true) // Wenn die folgenden
{ // Auftragsanalyse:
if (OrderSymbol()!=Symb)continue; // Nicht unser Finanzinstrument
if (OrderType()>1) // Wir haben einen schwebenden Auftrag
{
Alert("Pending order detected. Expert Advisor is not working;)
return; // Exit()
}
Total++; // Zähler für Marktaufträge
if (Gesamt>1) // Nicht mehr als eine Bestellung
{
Alert("Mehrere Marktaufträge, Expert Advisor funktioniert nicht;)
return; // Exit()
}
Ticket=OrderTicket(); // Bestellnummer ausgewählt.
Tip =OrderType(); // Typ der ausgewählten Bestellung.
Preis =OrderOpenPrice(); // Preis der ausgewählten Bestellung.
SL =OrderStopLoss(); // SL der ausgewählten Order.
TP =OrderTakeProfit(); // TP der ausgewählten Order.
Lot =OrderLots(); // Anzahl der Lose
}
}
//--------------------------------------------------------------- 5 --
// Handelskriterien
S_1=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,0);
S_2=iStochastic(NULL,0,K,D,slowing,MODE_SMA,price_field,MODE_MAIN,1);
if(S_1 > 50 && S_2 < 50)
{
Opn_B=true;
}
if(S_1<S_2||(S_1 < 80 && S_2 > 80))
{
Cls_B=true;
}
if(S_1 < 50 && S_2 > 50)
{
Opn_S=true;
}
if(S_1>S_2||(S_1 > 20 && S_2 < 20))
{
Cls_S=true;
}
//--------------------------------------------------------------- 6 --
// Aufträge schließen
while(true) // Auftragsschleife schließen.
{
if (Tip==0 && Cls_B==true) //Kaufauftrag eröffnen.
{ //Es gibt ein Abschlusskriterium
Alert("Versuch, Kauf zu schließen ",Ticket,";)
RefreshRates(); // Daten auffrischen
Ans=OrderClose(Ticket,Lot,Bid,2); // Close Buy
if (Ans==true) // Es hat funktioniert :)
{
Warnung ("Kaufauftrag geschlossen ",Ticket;)
break; // Verlassen der geschlossenen Schleife
}
if (Fun_Error(GetLastError())==1) // Fehlerbehandlung
continue; // erneut versuchen
return; // Beenden von start()
}
if (Tip==1 && Cls_S==true) // Verkaufsauftrag eröffnet.
{ // es gibt ein enges Kriterium
Alert("Versuch, Verkauf zu schließen ",Ticket,";)
RefreshRates(); // Daten auffrischen
Ans=OrderClose(Ticket,Lot,Ask,2); // Close Sell
if (Ans==true) // Es hat funktioniert :)
{
Warnung ("Verkaufsauftrag geschlossen ",Ticket;)
break; // Verlassen der geschlossenen Schleife
}
if (Fun_Error(GetLastError())==1) // Fehlerbehandlung
continue; // erneut versuchen
return; // Beenden von start()
}
break; // Beenden während
}
//--------------------------------------------------------------- 7 --
// Werte bestellen
RefreshRates(); // Daten auffrischen
Min_Lot=MarketInfo(Symb,MODE_MINLOT); // Minimale Anzahl von Losen
Free =AccountFreeMargin(); // Freie Mittel
One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// Wert von 1 Lot
Schritt =MarketInfo(Symb,MODE_LOTSTEP); // Schrittgröße ändern
if (Lose > 0) // Wenn Lose angegeben sind
Lts =Lots; // wir arbeiten mit ihnen
sonst // % der freien Mittel
Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;// Zum Öffnen
if(Lts < Min_Lot) Lts=Min_Lot; // Nicht weniger als Min_Lot; // Nicht weniger als Min_Lot
if(Lts*One_Lot > Free) // Lose teurer als Free
{
Alert(" Nicht genug Geld ", Lts," lots);
return; // Beenden von start()
}
//--------------------------------------------------------------- 8 --
//Eröffnung von Aufträgen
while(true) //Order Schleife schließen.
{
if (Gesamt==0 && Opn_B==true) // Keine offenen Aufträge
{ //Kaufkriterium öffnen.
RefreshRates(); // Daten aktualisieren
Alert("Versuch, Buy zu öffnen, warte auf Antwort...");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,StopLoss,TakeProfit);//Kauf eröffnen
if (Ticket > 0) // es hat funktioniert :)
{
Warnung ("Kaufauftrag eröffnet ",Ticket;)
return; //Auftrag beenden
}
if (Fun_Error(GetLastError())==1) // Fehlerbehandlung
continue; // erneut versuchen
return; // Beenden von start()
}
if (Total==0 && Opn_S==true) // keine offenen Aufträge
{ //öffnen Verkaufskriterium.
RefreshRates(); // Daten aktualisieren
Alert("Versuch, Sell zu öffnen, warte auf Antwort...");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,StopLoss,TakeProfit);//Open Sel.
if (Ticket > 0) // Es hat funktioniert :)
{
Warnung ("Verkaufsauftrag eröffnet ",Ticket;)
return; //Auftrag beenden
}
if (Fun_Error(GetLastError())==1) // Fehlerbehandlung
continue; // erneut versuchen
return; // Beenden von start()
}
break; // Beenden während
}
//--------------------------------------------------------------- 9 --
return; //Beenden von start()
}
//-------------------------------------------------------------- 10 --
int Fun_Error(int Error) // Fehlerbehandlung fie
{
switch(Fehler)
{ // Unüberwindbare Fehler.
Fall 4: Alert("Der Handelsserver ist beschäftigt. Versuchen Sie es erneut...");
Sleep(3000); // Einfache Lösung.
return(1); // Beenden Sie die Funktion.
case 135:Alert("Preis geändert, versuchen Sie es erneut...");
RefreshRates(); // Daten aktualisieren.
return(1); // Beenden Sie die Funktion.
case 136:Alert("Kein Preis. Ich warte auf einen neuen Tick...");
while(RefreshRates()==false) // Bis zu einem neuen Tick
Sleep(1); // Verzögerung in der Schleife
return(1); // Beenden der Funktion
case 137:Alert("Broker ist beschäftigt, versuchen Sie es erneut...");
Sleep(3000); // Einfache Lösung.
return(1); // Beenden Sie die Funktion.
case 146:Alert("Das Handelssubsystem ist beschäftigt. Versuchen Sie es erneut...");
Sleep(500); // Einfache Entscheidung
return(1); // Beenden der Funktion
// Kritische Fehler
Fall 2: Alert("Allgemeiner Fehler;)
return(0); // Beenden Sie die Funktion.
case 5: Alert("Ältere Version des Terminals.");
Work=false; // Nicht mehr funktionieren
return(0); // Beenden der Funktion
Fall 64: Alert("Konto gesperrt.");
Work=false; // Nicht mehr funktionieren
return(0); // Beenden der Funktion
case 133:Alert("Handel verboten.");
return(0); // Beenden der Funktion
case 134:Alert("Nicht genug Geld, um die Transaktion auszuführen.");
return(0); // Beenden der Funktion
default: Alert("Es ist ein Fehler aufgetreten ",Error); // Andere Optionen
return(0); // Beenden der Funktion
}
}
//-------------------------------------------------------------- 11 --
int New_Stop(int Parametr) // Überprüfung des Stoppstichs.
{
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Min. Entfernung
if (Parametr < Min_Dist) // Wenn weniger als erlaubt.
{
Parametr=Min_Dist; // Toleranz einstellen.
Alert("Stoppabstand erhöht;)
}
return(Parametr); // Rückgabewert.
}