Kenn ich nicht. Aber über Nick Leeson gibt es einen Film, der ist ganz nett gemacht. Wie er den Monitor anschreit um den Kurs zu drehen hat was. Der hätte das Trader-Terminal sicher gebrauchen können.
Übrigens, Du bist Trader, nicht Broker. Broker sind die, die Deine Orders ausdrucken und sich drüber kaputt lachen bevor sie Dir nen Kurs rüberschieben. :D
int RSIfastDef = iRSI(_Symbol,_Period,8,PRICE_WEIGHTED);
int MAfastLWDef = iMA(_Symbol,_Period,10,0,MODE_LWMA,RSIfastDef); //das habe ich mal im englischen Forum aufgeschnappt, aber späterint MAfastSMDef = iMA(_Symbol,_Period,30,0,MODE_SMMA,RSIfastDef); //den Thread nicht mehr gefunden. Scheint nicht zu funktionieren.int RSIslowDef = iRSI(_Symbol,_Period,150,PRICE_WEIGHTED);
int MAslowLWDef = iMA(_Symbol,_Period,10,0,MODE_SMA,RSIslowDef);
int MAslowSMDef = iMA(_Symbol,_Period,30,0,MODE_SMMA,RSIslowDef);
int PosMax =1; //still need MagicManager, Money Manager, Ordertimer/Isnewcandle?, Trailingstop and Trailingtake.bool BuySignalTrend=false;
bool SellSignalTrend=false;
//Deklarationen Arrays, BufferArraySetAsSeries(RSIfast,true);
ArraySetAsSeries(MAfastLW,true);
ArraySetAsSeries(MAfastSM,true);
ArraySetAsSeries(RSIslow,true);
ArraySetAsSeries(MAslowLW,true);
ArraySetAsSeries(MAslowSM,true);
amando:
Das gehört jedenfalls in die OnInit, das hat in der OnTick nix verloren. Du erzeugst ja bei jedem tick ein neues handle
Okay, ich hab das jetzt mal gemacht, aber die Variablen muss man dann global zugänglich machen, oder? Und der CopyBuffer bleibt in der OnTick(), weil der ja immer refreshed werden muss nehme ich an?
Hab das jetzt mal so gelöst:
#property description"Expert Advisor for Gold,M30. Trying to find strategies based on different RSIs and their MAs,"#property description"This is only the trend part. I made a raw version with four conditions for each buy and sell but unfortunately"#property description"It doesn't do what it is supposed to. So I reduced it to one condition only to troubleshoot it and bring it up"#property description"to par. Later on I will look into other functions like TS, MM, Security checking aso. But for now I am going to"#property description"use something simple to check one by one if the strategies are successful."#include<Trade\Trade.mqh>
CTrade trade;
inputdouble TrendMinChange=0.04; //Die minimale Wertaenderung des SMMA des 150er RSI, der zeigt, ob ein Trend besteht (RSI Punkte)// input double TrendGrowthRate=0.01;inputdouble Lotsize=0.05;
inputint SL=10000;
inputint TP=40000;
//declarations, variablesint PosMax =1; //still need MagicManager, Money Manager, Ordertimer/Isnewcandle?, Trailingstop and Trailingtake.bool BuySignalTrend=false;
bool SellSignalTrend=false;
double RSIfast[],MAfastLW[],MAfastSM[],RSIslow[],MAslowLW[],MAslowSM[];
int RSIfastDef,MAfastLWDef,MAfastSMDef,RSIslowDef,MAslowLWDef,MAslowSMDef;
intOnInit()
{
RSIfastDef = iRSI(_Symbol,_Period,8,PRICE_WEIGHTED);
MAfastLWDef = iMA(_Symbol,_Period,10,0,MODE_LWMA,RSIfastDef); //das habe ich mal im englischen Forum aufgeschnappt
MAfastSMDef = iMA(_Symbol,_Period,30,0,MODE_SMMA,RSIfastDef);
RSIslowDef = iRSI(_Symbol,_Period,150,PRICE_WEIGHTED);
MAslowLWDef = iMA(_Symbol,_Period,10,0,MODE_SMA,RSIslowDef);
MAslowSMDef = iMA(_Symbol,_Period,30,0,MODE_SMMA,RSIslowDef);
ArraySetAsSeries(RSIfast,true);
ArraySetAsSeries(MAfastLW,true);
ArraySetAsSeries(MAfastSM,true);
ArraySetAsSeries(RSIslow,true);
ArraySetAsSeries(MAslowLW,true);
ArraySetAsSeries(MAslowSM,true);
return(0);
}
voidOnTick()
{
//Deklarationen Arrays, Buffer double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
double Balance=AccountInfoDouble(ACCOUNT_BALANCE);
double Equity=AccountInfoDouble(ACCOUNT_EQUITY);
int Spread=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD);
CopyBuffer(RSIfastDef,0,0,40,RSIfast);
CopyBuffer(MAfastLWDef,0,0,40,MAfastLW);
CopyBuffer(MAfastSMDef,0,0,40,MAfastSM);
CopyBuffer(RSIslowDef,0,0,40,RSIslow);
CopyBuffer(MAslowLWDef,0,0,40,MAslowLW);
CopyBuffer(MAslowSMDef,0,0,40,MAslowSM);
//Conditions//Buy------------------------------
BuySignalTrend=
// Condition for long trend if SMMA30 surpasses TrendMinChange and increase at least stays the same, possibly strengthens
(MAslowSM[2]-MAslowSM[3]>=TrendMinChange)
&& (MAslowSM[1]-MAslowSM[2]>MAslowSM[2]-MAslowSM[3])//+TrendGrowthRate)
&& (MAslowSM[0]-MAslowSM[1]>MAslowSM[1]-MAslowSM[2])//+TrendGrowthRate) //Could use a for loop here and put it in a bool Decrease() function later
&& (MAslowLW[0]-MAslowLW[1]>MAslowLW[1]-MAslowLW[2])//+TrendGrowthRate)
&& (RSIslow[0]>MAslowLW[0])
&& (MAslowLW[0]>MAslowSM[0])
&& (RSIslow[0]>=50);
//Sell----------------
SellSignalTrend=
// Condition for long trend if SMMA30 falls below minus TrendMinChange and its decrease at least stays the same, possibly strengthens
(MAslowSM[2]-MAslowSM[3]<=-TrendMinChange)
&& (MAslowSM[1]-MAslowSM[2]<MAslowSM[2]-MAslowSM[3])//-TrendGrowthRate) //Could use a for loop here and put it in a bool Decrease() function later
&& (MAslowSM[0]-MAslowSM[1]<MAslowSM[1]-MAslowSM[2])//-TrendGrowthRate)
&& (MAslowLW[0]-MAslowLW[1]<MAslowLW[1]-MAslowLW[2])//-TrendGrowthRate)
&& (RSIslow[0]<MAslowLW[0])
&& (MAslowLW[0]<MAslowSM[0])
&& (RSIslow[0]<=50);
//Handelsaktionen verscheidener Größenordnungen// BuySellLarge //BuySellSmall if (
(BuySignalTrend==true)
&& (PositionsTotal()<PosMax)
)
trade.Buy(Lotsize,NULL,Ask,(Ask-SL*_Point),(Ask+TP*_Point),NULL);
{
Comment("Buy");
}
if (
(SellSignalTrend==true)
&& (PositionsTotal()<PosMax)
)
trade.Sell(Lotsize,NULL,Bid,(Bid+SL*_Point),(Bid-TP*_Point),NULL);
{
Comment("Sell");
}
}
Er läuft schonmal. Mir sind noch einige Fehler in den Bedingungen aufgefallen, die sind hier korregiert.
Aber man sieht glaube ich deutlich, dass das Money-Management fehlt. Die Fehlsignale hauen einfach zu sehr rein. Mir kam der Gedanke, dass ich jetzt gerne Trailing Stop, Trailing Take, Tradepause mit Kerzenzähler und MagicManagement einbauen würde. Mit Klassen hab ich mir das mal angesehen, ich weiß zwar in etwa, wie man sie benutzt, aber es ist so verkapselt, dass man zu jeder Zeit in fünf Richtungen drei Vererbungsstufen von Klassen kennen muss um sich zurechtzufinden, welche Methode wo ist, außerdem komme ich mit der objektorientierten Synthax noch weniger klar. Keine Chance, da schnell durchzusteigen. Daher habe ich beschlossen, die Sachen die ich haben will prozedural zusammenzufügen. Vielleicht sollte man auch erstmal laufen lernen, bevor man anfängt, Auto zu fahren.
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.
Du sollst ja auch nicht vorm Fernseher abhängen, sondern die Börsenkurse verfolgen. Hiermit zum Beispiel. ;)
https://www.spiegel.de/netzwelt/gadgets/expanscape-aurora-7-notebook-mit-sieben-bildschirmen-vorgestellt-a-f7bee9c1-4ac9-4a00-9f78-8ed7d807dab2
ach du hast wohl im Kino nicht aufgepasst, Wolf of Wallstreet
Keiner weis ob eine Aktie steigt oder fällt, und wir broker am wenigsten.
Was haben wir daraus gelernt, der Kurs ist Random, Du musst nur ein ordentliches Moneymanagment haben, dann kommst Du durch
Kenn ich nicht. Aber über Nick Leeson gibt es einen Film, der ist ganz nett gemacht. Wie er den Monitor anschreit um den Kurs zu drehen hat was. Der hätte das Trader-Terminal sicher gebrauchen können.
Übrigens, Du bist Trader, nicht Broker. Broker sind die, die Deine Orders ausdrucken und sich drüber kaputt lachen bevor sie Dir nen Kurs rüberschieben. :D
amando:
Das gehört jedenfalls in die OnInit, das hat in der OnTick nix verloren. Du erzeugst ja bei jedem tick ein neues handle
Okay, ich hab das jetzt mal gemacht, aber die Variablen muss man dann global zugänglich machen, oder? Und der CopyBuffer bleibt in der OnTick(), weil der ja immer refreshed werden muss nehme ich an?
Hab das jetzt mal so gelöst:
Er läuft schonmal. Mir sind noch einige Fehler in den Bedingungen aufgefallen, die sind hier korregiert.
Aber man sieht glaube ich deutlich, dass das Money-Management fehlt. Die Fehlsignale hauen einfach zu sehr rein. Mir kam der Gedanke, dass ich jetzt gerne Trailing Stop, Trailing Take, Tradepause mit Kerzenzähler und MagicManagement einbauen würde. Mit Klassen hab ich mir das mal angesehen, ich weiß zwar in etwa, wie man sie benutzt, aber es ist so verkapselt, dass man zu jeder Zeit in fünf Richtungen drei Vererbungsstufen von Klassen kennen muss um sich zurechtzufinden, welche Methode wo ist, außerdem komme ich mit der objektorientierten Synthax noch weniger klar. Keine Chance, da schnell durchzusteigen. Daher habe ich beschlossen, die Sachen die ich haben will prozedural zusammenzufügen. Vielleicht sollte man auch erstmal laufen lernen, bevor man anfängt, Auto zu fahren.
Nachtrag: https://www.mql5.com/de/articles/10