Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1003

 
 

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 )

 
Tema97:

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 )

Tema, lesen Sie die Dokumentation, iMa wird dort ebenso beschrieben wie die grafischen Objekte. Es gibt eine Funktion ObjectGetDouble(mit den entsprechenden Parametern), um den Preis einer Zeile zu ermitteln
 

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!

 
if(S_1 > 50 && S_2 < 50)

Dies ist die Voraussetzung für das Überschreiten der 50er-Marke von unten nach oben.

 
AlexeyVik:

Dies ist die Voraussetzung für das Überschreiten der 50er-Marke von unten nach oben.

Herzlichen Dank! Ich werde es jetzt ausprobieren.
 
Wie kann ich einen "angehängten" Indikator (oder EA) von einem Diagramm abkoppeln, ohne das Diagramm zu schließen?
 
Ist es möglich, einen AccountEquity()-Indikator zu erstellen, der in Echtzeit auf dem Chart funktioniert? Wo kann ich es bekommen?
 

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.

}

Grund der Beschwerde: