Wie programmiert man? - Seite 308

 

Hallo Mladen,

ich bin auf einen Code gestoßen, der von dir auf Stochastic gemacht wurde. Wenn ich ihn jedoch in mein System einfüge, passiert nichts. Kann ich bei dir nachfragen, was er bewirkt?

http://www.forexmt4.com/mt_yahoo/Color%20Stochastic%20v1[ 1].04.mq4

Mit freundlichen Grüßen

Terrance

 

...

Versuchen Sie es mit einigen der hier geposteten: https: //www.mql5.com/en/forum/175297/page3

Oder hier: https: //www.mql5.com/en/forum/177239/page2

Getestet und sie funktionieren

tkuan77:
Hallo Mladen,

Ich bin auf einen Code gestoßen, der von Ihnen auf Stochastic erstellt wurde. Wenn ich ihn jedoch in mein System einfüge, passiert nichts. Kann ich bei Ihnen nachfragen, was er bewirkt?

http://www.forexmt4.com/mt_yahoo/Color%20Stochastic%20v1[ 1].04.mq4

Mit freundlichen Grüßen

Terrance
 

Das ist seltsam.

Ich habe mir das Problem mit dem Vorhängeschloss etwas genauer angesehen. Offenbar liegt es an den Einstellungen der Benutzerkontensteuerung(UAC), also habe ich in der Systemsteuerung von Windows 7 die UAC komplett ausgeschaltet. Nach dem Neustart bemerkte ich, dass das Vorhängeschloss nicht mehr in der Datei enthalten war. Ich öffnete sie und es war die gleiche Datei wie die, die ich in diesem Forum gepostet hatte. Ganz anders als der Code, den ich in den letzten Wochen geschrieben habe, obwohl es eigentlich die gleiche Datei ist. Ich dachte, ich hätte meine ganze Programmierarbeit verloren. Ich schaltete die Benutzerkontensteuerung wieder ein und startete neu, das Vorhängeschloss war wieder da und der Code, den ich geschrieben hatte, war wieder normal.

Aber dann habe ich versucht, den Code zu kompilieren, und es wurden eine Menge Fehler gefunden. Aber die Fehler, die er aufgreift, stammen nicht aus diesem Code, sondern aus dem völlig anderen Code, wenn ich die UAC ausschalte - ich weiß das, weil er Variablen aufgreift, die nur im anderen Code vorkommen.

Ich denke, ich muss eine neue Bran EA öffnen und manuell in all diesen Code eingeben und speichern Sie es.

 

...

Es ist ein übliches Problem mit Windows 7 (mit seinem Schutz)

Der einfachste Weg, dies unter Windows 7 zu vermeiden, ist, Metatrader auf einer anderen Partition als C zu installieren, und Sie werden keine Probleme dieser Art haben

crsnape@btinternet.com:
Dies ist seltsam.

Ich habe mir das Problem mit dem Vorhängeschloss etwas genauer angesehen. Anscheinend liegt es an den Einstellungen der Benutzerkontensteuerung (UAC), also ging ich in die Systemsteuerung von Windows 7 und schaltete die UAC komplett aus. Nach dem Neustart bemerkte ich, dass das Vorhängeschloss nicht mehr in der Datei enthalten war. Ich öffnete sie und es war die gleiche Datei wie die, die ich in diesem Forum gepostet hatte. Sie unterscheidet sich völlig von dem Code, den ich in den letzten Wochen geschrieben habe, obwohl es eigentlich die gleiche Datei ist. Ich dachte, ich hätte meine gesamte Programmierarbeit verloren. Ich schaltete die Benutzerkontensteuerung wieder ein und startete neu, das Vorhängeschloss war wieder da und der Code, den ich geschrieben hatte, war wieder normal.

Aber dann habe ich versucht, den Code zu kompilieren, und es wurden eine Menge Fehler gefunden. Aber die Fehler, die er aufgreift, stammen nicht von diesem Code, sondern von einem völlig anderen Code, wenn ich die UAC ausschalte - ich weiß das, weil er Variablen aufgreift, die nur im anderen Code vorkommen.

Ich denke, ich muss eine neue Bran EA öffnen und manuell in all diesen Code eingeben und speichern Sie es.
 

Ich habe endlich ein richtig funktionierendes EA erreicht. Funktioniert genau so, wie es sollte- Ich endete auf Kopieren meines Codes in Notepad, Drehen von UAC, dann Einfügen in eine neue EA-Datei. Und ich habe herausgefunden, warum meine Funktionen spielten up- Ich hatte eine int-Variable innerhalb eines normalizeddouble setzen. Ich wusste nicht, dass ich das nicht tun konnte, aber jetzt weiß ich es - ich habe nur eine Woche gebraucht, um es herauszufinden! :/

Wie auch immer, ich habe folgendes geschrieben:

if (VariableRisk == true) Risk = GetRiskShort (LastOpenTicket, RiskShort);

if (VariablesRisiko == false) Risiko = StatischesRisiko;

Und ich habe mich gefragt, ob man das so abkürzen kann?

if (VariablesRisiko == true)

{

Risiko = GetRiskShort (LastOpenTicket, RiskShort);

sonst Risk = StaticRisk;

}

Und außerdem habe ich dies geschrieben:

//--- Funktion zur Berechnung der Take Profit Position bei Long

double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

double TPPriceLong = 0;

if (AutoCalcTakeProfit == true)

{

RefreshRates();

TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);

Print("Take-Profit-Position erfolgreich berechnet");

return (TPPriceLong);

}

if (AutoCalcTakeProfit == false)

{

RefreshRates();

TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);

Print("Statische Take-Profit-Position erfolgreich berechnet");

return (TPPriceLong);

}

}

Und ich habe mich gefragt, ob man es so abkürzen kann?

//--- Funktion zur Berechnung der Take-Profit-Position bei Long

double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

double TPPriceLong = 0;

RefreshRates();

if (AutoCalcTakeProfit == true)

{

TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);

Print("Take-Profit-Position erfolgreich berechnet");

sonst TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);

Print("Statische Take-Profit-Position erfolgreich berechnet");

return (TPPriceLong);

}

Und noch eine letzte Frage: Um meinem EA etwas mehr Flexibilität zu geben, möchte ich meine Zeitrahmen als externe Variablen definieren. Mein Signaldiagramm soll z.B. D1 sein, und mein Triggerdiagramm soll H4 sein. Unter den externen Variablen könnte ich also folgendes tun:

extern int SignalChart = PERIOD_D1;

extern int TriggerChart = PERIOD_H4;

Und dann referenziere ich es, indem ich zum Beispiel dies tue:

SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

 

Über diesen Teil :

Und dann referenzieren Sie es, indem Sie zum Beispiel folgendes tun: SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

Ja, das ist eine 100% korrekte Methode (sogar bis zu dem Punkt, dass Sie einen geschlossenen Balken verwenden (Shift ist in diesem Beispiel auf 1 gesetzt) und dass Sie durch die Verwendung eines geschlossenen Balkens beim Testen die übliche Falle der Verwendung offener Balken in Multi-Time-Framing vermeiden)

crsnape@btinternet.com:
Ich habe endlich einen richtig funktionierenden EA erreicht. Funktioniert genau so, wie es sollte - ich habe meinen Code in den Notepad kopiert, UAC ausgeschaltet und ihn dann in eine neue EA-Datei eingefügt. Und ich habe herausgefunden, warum meine Funktionen spielten up- Ich hatte eine int-Variable innerhalb einer normalizeddouble setzen. Ich wusste nicht, dass ich das nicht tun konnte, aber jetzt weiß ich es - ich habe nur eine Woche gebraucht, um es herauszufinden! :/

Wie auch immer, ich habe Folgendes geschrieben:

if (VariableRisk == true) Risk = GetRiskShort (LastOpenTicket, RiskShort);

if (VariableRisk == false) Risk = StaticRisk;

Und ich habe mich gefragt, ob man das so abkürzen kann?

if (VariablesRisiko == true)

{

Risiko = GetRiskShort (LastOpenTicket, RiskShort);

sonst Risk = StaticRisk;

}

Und außerdem habe ich dies geschrieben:

//--- Funktion zur Berechnung der Take Profit Position bei Long

double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

double TPPriceLong = 0;

if (AutoCalcTakeProfit == true)

{

RefreshRates();

TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);

Print("Take-Profit-Position erfolgreich berechnet");

return (TPPriceLong);

}

if (AutoCalcTakeProfit == false)

{

RefreshRates();

TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);

Print("Statische Take-Profit-Position erfolgreich berechnet");

return (TPPriceLong);

}

}

Und ich habe mich gefragt, ob man es so abkürzen kann?

//--- Funktion zur Berechnung der Take-Profit-Position bei Long

double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)

{

double TPPriceLong = 0;

RefreshRates();

if (AutoCalcTakeProfit == true)

{

TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);

Print("Take-Profit-Position erfolgreich berechnet");

sonst TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);

Print("Statische Take-Profit-Position erfolgreich berechnet");

return (TPPriceLong);

}

Und noch eine letzte Frage: Um meinem EA etwas mehr Flexibilität zu geben, möchte ich meine Zeitrahmen als externe Variablen definieren. Mein Signaldiagramm soll z.B. D1 sein, und mein Triggerdiagramm soll H4 sein. Unter den externen Variablen könnte ich also folgendes tun:

extern int SignalChart = PERIOD_D1;

extern int TriggerChart = PERIOD_H4;

Und dann referenziere ich es, indem ich zum Beispiel dies tue:

SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
 

Hallo, ich erhalte den Fehlercode 4059:

[TD]Funktion ist im Testmodus nicht erlaubt.

ERR_FUNC_NOT_ALLOWED_IN_TESTING[/TD]

4059

Ich habe eine Suche durchgeführt, kann aber keine weiteren Informationen darüber finden, was es bedeutet?

 

Können Sie helfen, die folgenden Codes zu diesem Parabolic-Sar-Indikator hinzuzufügen?

Pip:
Vielen Dank Mladen,

Ich werde wieder lesen Sie Ihren Beitrag zu verstehen, ehrlich gesagt habe ich ein bisschen verloren Lesen, aber es ist höchstwahrscheinlich meine Unwissenheit unter Spiel. Ich werde Fragen stellen, wenn ich welche habe.

Danke, Kumpel.

Danke,

Pip

Lieber Freund,

KÖNNEN SIE HILFEN, DIE FOLGENDEN CODES ZU DIESEM PARABOLIC SAR alert parabolic_alert_mod.mq4INDICATOR hinzuzufügen?

Ich bin nicht auf der Suche nach einem EA. Wenn möglich, fügen Sie zumindest die SHIFT-Option in den Indikator ein.

extern double TakeProfit = 50;

extern double Lots = 0.1;

extern double TrailingStop = 30;

extern double SAR_Step = 0.02;

extern double SAR_Maximum = 0.2;

extern double Shift=1;

Dateien:
 

...

joelnelson

TakeProfit, Lots und TrailingStop haben nichts mit der Art und Weise zu tun, wie der parabolische sar berechnet wird (diese Parameter werden offensichtlich von einem EA übernommen, der sar in seiner Arbeit verwendet). Wenn Sie also nicht auf der Suche nach einem EA sind, ist es nicht möglich, diese Parameter auf sinnvolle Weise hinzuzufügen.

Außerdem bezieht sich die Verschiebung in den Parametern auf den getesteten Balken (der parabolische SAR wird nicht verschoben, da der gleitende Durchschnitt in der Regel verschoben werden kann). Diese Parameter sind wahrscheinlich für den Aufruf eines eingebauten SAR gedacht, und der eingebaute SAR hat die folgende Form

double iSAR([/TD] [TD]string symbol, int timeframe, double step, double maximum, int shift)

Shift 1 bedeutet in diesem Fall, dass der Wert des ersten geschlossenen Balkens des parabolischen sar getestet wird.

joelnelson:
Lieber Freund,

KÖNNEN SIE HILFEN, DIE FOLGENDEN CODES ZU DIESEM PARABOLIC SAR alert parabolic_alert_mod.mq4INDICATOR hinzuzufügen?

Ich bin nicht auf der Suche nach einem EA. Wenn möglich, fügen Sie zumindest die SHIFT-Option in den Indikator ein.

extern double TakeProfit = 50;

extern double Lots = 0.1;

extern double TrailingStop = 30;

extern double SAR_Step = 0.02;

extern double SAR_Maximum = 0.2;

extern double Shift=1;
 

...

Dieser Fehler kann von einigen Funktionen zurückgegeben werden.

Die Funktionen, die diesen Fehler beim Testen verursachen können, sind die folgenden :

MarktInfo

MessageBox

SendFTP

SendMail

FensterIstSichtbar

FensterFinden

WindowHandle

Ein Aufruf einiger der oben genannten Funktionen verursachte also diesen Fehler

crsnape@btinternet.com:
Hallo, ich erhalte den Fehlercode 4059:[TD]Funktion ist im Testmodus nicht erlaubt.
ERR_FUNC_NOT_ALLOWED_IN_TESTING[/TD]4059
Ich habe eine Suche durchgeführt, kann aber keine weiteren Informationen darüber finden, was es bedeutet?
Grund der Beschwerde: