Wie programmiert man? - Seite 231

 

Ausgezeichnet, danke!

 

Mann, Arrays und Funktionen, nicht mein Ding.

 

Hilfe für EA

Ich möchte das Folgende tun:

M15-Frames verwenden und während dieses Intervalls maximal zwei Orders öffnen, indem ich den aktuellen Preis mit dem vorherigen M15-Schluss (close[1]) vergleiche. Ich weiß jedoch nicht, wie ich den Code dafür schreiben soll, da ich möchte, dass diese Prozedur in jedem folgenden M15-Frame durchgeführt wird. Wie kann man die richtigen Variablen für die Zählung von 2 Aufträgen im Maximum jedes M15 behalten, da die Startfunktion immer selbst ausgeführt wird?

Ich danke Ihnen

 

Ich brauche Hilfe bei einem Skript zum Öffnen schwebender Aufträge.

Ich weiß, dass es hier eine Menge Skripte gibt, die Aufträge öffnen und schließen, aber ich kann keines finden, das schwebende Aufträge öffnet.

Ich brauche 2 Skripte, 1 Sellstop und 1 Buystop.

Ich möchte, dass der Buystop eine Buystop-Order 15 Pips über dem Daily Pivot und der SellStop 15 Pips unter dem Daily Pivot öffnet.

Ich habe damit herumgespielt und den untenstehenden Code für einen SellStop erhalten, aber ich bin kein Programmierer und es funktioniert nicht. Ich vermute, ich habe etwas ausgelassen.

Kann mir jemand dabei helfen, bitte.

PS: Vergessen Sie's, ich hab's. Ich musste meinen Angebotspreis in PVTGreen ändern. Ich bekam einen 130 Fehler.

Jetzt funktioniert es...

Ok, noch ein Problem: Kann mir jemand sagen, wie ich die Verfallszeit von 24 Stunden später auf 22:00 Uhr am selben Tag ändern kann?

//+------------------------------------------------------------------+

//| script "send pending order with expiration data" |

//+------------------------------------------------------------------+

int start()

{

int ticket,expiration;

double point;

double PVTYellow = iCustom(NULL, 0, "pivot_alllevels", 0, 0, 0);

double PVTBlue = iCustom(NULL, 0, "pivot_alllevels", 0, 1, 0);

double PVTGreen = iCustom(NULL, 0, "pivot_alllevels", 0, 2, 0);

double PVTRed = iCustom(NULL, 0, "pivot_alllevels", 0, 3, 0);

double PVTMagenta = iCustom(NULL, 0, "pivot_alllevels", 0, 4, 0);

//----

point=MarketInfo(Symbol(),MODE_POINT);

expiration=TimeCurrent()+PERIOD_D1*60;

//----

while(true)

{

ticket = OrderSend(Symbol(),OP_SELLSTOP, 0.10, PVTGreen-15*Point, 3, PVTGreen+20*Point, PVTGreen-20*Point, 0,0,expiration,Red);

if(ticket<=0) Print("Error = ",GetLastError());

else { Print("ticket = ",ticket); break; }

//---- 10 seconds wait

Sleep(10000);

}

//----

return(0);

}

//+------------------------------------------------------------------+
 

Um das Verfallsdatum auf 22:00 zu setzen, könnten Sie dies tun...

int iHour = TimeHour(TimeCurrent());

int iMinute = TimeMinute(TimeCurrent());

int iDiff = 22%iHour;

datetime dtExpiryDate = (TimeCurrent()+(iDiff*60*60))-(iMinute*60);

Print(TimeToStr(dtExpiryDate));

Es gibt keine Fehlerprüfung, wenn Sie also denken, dass Sie es brauchen, sollten Sie es hinzufügen.

Lux

 

Marktbeobachtungssymbole greifen

Hallo zusammen,

Ich habe mich gefragt, ob es eine Möglichkeit gibt, alle im Market Watch verfügbaren Symbole zur Überwachung zu erfassen, anstatt den EA manuell zu füttern?

Mit anderen Worten, ich möchte, dass mein EA durch alle Symbole geht, die im Market Watch-Fenster verfügbar sind, und sie nach einem bestimmten Kriterium überwacht.

Jede Hilfe wird sehr geschätzt.

 

Hilfe - Kontostand Sonntag

Hallo!

Ich versuche seit gestern einen Cache zu basteln der mir die ganze Woche über den Kontostand Sonntag (Markterfolg Opening) anzeigt.

Ich muss einen EA Kontostand vom Sonntag bei der Markteröffnung korrekt in den Equity Manager bringen.

double usedacc = 0;

...

if (usedacc == 0 | | DayOfWeek () == 0) usedacc = Kontostand ();

...

Funktioniert einfach nicht

Vielleicht kann mir jemand helfen so gut ich kann

Sorry für das schlechte Englisch

 

Bitte löschen Sie diesen Beitrag - danke

 

wie erhalte ich Daten von einem Indikator

Hallo zusammen,

ich brauche für einen EA die Werte FIBO100 und FIBO0 aus dem Indikator. Wie erhalte ich sie?

Danke

derumuro

Dateien:
 

Wie bekommen Sie es?

Kumpel ich habe ein ähnliches Problem

Scott

Die "Inter-Skript"-Kommunikation (oder "Inter-Indikator"-Kommunikation) in MQL läuft ausschließlich über Puffer. Dieser Code :

trendset = iCustom(NULL,0, "VGA HISTOGRAM~",0,0);

Bedeutet, dass Sie den Wert für den aktuellen Balken aus dem ersten (öffentlichen) Puffer des Indikators "VGA HISTOGRAM~" abrufen wollen. Sie können keine Werte von Variablen abrufen, die in anderen Indikatoren deklariert sind (und es spielt keine Rolle, ob sie als extern deklariert sind). Sie könnten es mit globalen Variablen versuchen, aber globale Variablen sind schwer zu handhaben und bieten mehr Chancen, einen Fehler zu machen, als richtig mit ihnen zu arbeiten, oder Sie können eine DLL schreiben (Metatrader verwendet nur eine Instanz einer DLL pro Chart, unabhängig von den Parametern, so können Sie eine Art von "Semaphor", die halten und zurückgeben Werte in Abhängigkeit von IDs jeglicher Art - das würde sicherstellen, inter mql-Code-Kommunikation und würde verhindern, dass falsche Variablen lesen (globale Variablen zum Beispiel kann leicht verwechselt werden und Sie können Variablen aus einem völlig anderen Chart lesen, ohne es zu wissen))

Grüße

Mladen

Ich habe eine Lösung für dieses Problem gefunden, die ich mit Ihnen teilen werde.

Erstelle in deinem Indikator eine neue Funktion, damit die Dinge nicht unübersichtlich werden.

void PASSINFO() {

int trendcondtemp; //Ändern Sie dies in den von Ihnen gewünschten Namen, es spielt keine Rolle, lassen Sie es, wenn Sie faul sind

if (Close[1] > Open[2] && Volume[1] < Volume[2]) trendcondtemp=1; //bullish - dies setzt nur einen Wert für die Variable, verwenden Sie Ihren Code

if (Close[1] < Open[2] && Volume[1] < Volume[2]) trendcondtemp=2; //bearish - dieselbe Sache, anderer Geruch

if (Lautstärke[1] > Lautstärke[2])trendcondtemp=3; //alles geht schief - meh

if (Symbol()=="USDCHF") GlobalVariableSet("TRENDSETUSDCHF ",trendcondtemp);

if (Symbol()=="GBPUSD") GlobalVariableSet("TRENDSETGBPUSD",trendcondtemp);

if (Symbol()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp);

if (Symbol()=="USDJPY") GlobalVariableSet("TRENDSETUSDJPY",trendcondtemp);

if (Symbol()=="USDCAD") GlobalVariableSet("TRENDSETUSDCAD",trendcondtemp);

if (Symbol()=="NZDUSD") GlobalVariableSet("TRENDSETNZDUSD",trendcondtemp);

if (Symbol()=="AUDUSD") GlobalVariableSet("TRENDSETAUDUSD",trendcondtemp);

if (Symbol()=="AUDNZD") GlobalVariableSet("TRENDSETAUDNZD",trendcondtemp);

if (Symbol()=="AUDCAD") GlobalVariableSet("TRENDSETAUDCAD",trendcondtemp);

if (Symbol()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp);

if (Symbol()=="AUDCHF") GlobalVariableSet("TRENDSETAUDCHF",trendcondtemp);

if (Symbol()=="AUDJPY") GlobalVariableSet("TRENDSETAUDJPY",trendcondtemp);

if (Symbol()=="CHFJPY") GlobalVariableSet("TRENDSETCHFJPY",trendcondtemp);

if (Symbol()=="EURGBP") GlobalVariableSet("TRENDSETEURGBP",trendcondtemp);

if (Symbol()=="EURAUD") GlobalVariableSet("TRENDSETEURAUD",trendcondtemp);

if (Symbol()=="EURCHF") GlobalVariableSet("TRENDSETEURCHF",trendcondtemp);

if (Symbol()=="EURJPY") GlobalVariableSet("TRENDSETEURJPY",trendcondtemp);

if (Symbol()=="EURNZD") GlobalVariableSet("TRENDSETEURNZD",trendcondtemp);

if (Symbol()=="GBPCHF") GlobalVariableSet("TRENDSETGBPCHF",trendcondtemp);

if (Symbol()=="GBPAUD") GlobalVariableSet("TRENDSETGBPAUD",trendcondtemp);

if (Symbol()=="GBPCAD") GlobalVariableSet("TRENDSETGBPCAD",trendcondtemp);

if (Symbol()=="GBPJPY") GlobalVariableSet("TRENDSETGBPJPY",trendcondtemp);

if (Symbol()=="NZDJPY") GlobalVariableSet("TRENDSETNZDJPY",trendcondtemp);

//Hinzufügen von Öl/Gold/Schecken/was auch immer Sie handeln, danach habe ich alles abgedeckt, was mein Broker macht

}

Ok, da es währungsabhängig ist, gibt es keine Möglichkeit, dass es sich mit einer anderen Währung kreuzt und die Werte in die Höhe treibt. Sie müssen dies nun in Ihre Start-/Was-auch-immer-Funktion einfügen, bevor Sie den Wert aufrufen.

int trendset;

if (Symbol()=="USDCHF") trendset= GlobalVariableGet("TRENDSETUSDCHF");

if (Symbol()=="GBPUSD") trendset= GlobalVariableGet("TRENDSETGBPUSD");

if (Symbol()=="EURUSD") trendset= GlobalVariableGet("TRENDSETEURUSD");

if (Symbol()=="USDJPY") trendset= GlobalVariableGet("TRENDSETUSDJPY");

if (Symbol()=="USDCAD") trendset= GlobalVariableGet("TRENDSETUSDCAD");

if (Symbol()=="NZDUSD") trendset= GlobalVariableGet("TRENDSETNZDUSD");

if (Symbol()=="AUDUSD") trendset= GlobalVariableGet("TRENDSETAUDUSD");

if (Symbol()=="AUDNZD") trendset= GlobalVariableGet("TRENDSETAUDNZD");

if (Symbol()=="AUDCAD") trendset= GlobalVariableGet("TRENDSETAUDCAD");

if (Symbol()=="EURUSD") trendset= GlobalVariableGet("TRENDSETEURUSD");

if (Symbol()=="AUDCHF") trendset= GlobalVariableGet("TRENDSETAUDCHF");

if (Symbol()=="AUDJPY") trendset= GlobalVariableGet("TRENDSETAUDJPY");

if (Symbol()=="CHFJPY") trendset= GlobalVariableGet("TRENDSETCHFJPY");

if (Symbol()=="EURGBP") trendset= GlobalVariableGet("TRENDSETEURGBP");

if (Symbol()=="EURAUD") trendset= GlobalVariableGet("TRENDSETEURAUD");

if (Symbol()=="EURCHF") trendset= GlobalVariableGet("TRENDSETEURCHF");

if (Symbol()=="EURJPY") trendset= GlobalVariableGet("TRENDSETEURJPY");

if (Symbol()=="EURNZD") trendset= GlobalVariableGet("TRENDSETEURNZD");

if (Symbol()=="GBPCHF") trendset= GlobalVariableGet("TRENDSETGBPCHF");

if (Symbol()=="GBPAUD") trendset= GlobalVariableGet("TRENDSETGBPAUD");

if (Symbol()=="GBPCAD") trendset= GlobalVariableGet("TRENDSETGBPCAD");

if (Symbol()=="GBPJPY") trendset= GlobalVariableGet("TRENDSETGBPJPY");

if (Symbol()=="NZDJPY") trendset= GlobalVariableGet("TRENDSETNZDJPY");

Bitte beachten!!! (Sie prolly bereits erkennen, diese), aber Sie müssen den Indikator läuft auf Ihre Währung Ihre ea läuft auf für die Werte zu ändern, sonst werden Sie nur die alte Variable, die seit Wochen in mt4 gespeichert ist.