ich habe eine Idee im Kopf aber weiß nicht ob das überhaupt so geht und welche Fallstricke da auf mich warten ;-)
Mein Plan ist einen EA auf ein Fenster für Periode M5 zu legen und dann aber auch gleichzeitig bestimmte Indikatoren als Vergleich für Periode M1 und M15 zusätzlich zu berechnen.
kann ich folgendes einfach so machen und würde das die korrekten Daten berechnen? Also kann ein EA in M5 auf die Daten Von den Perioden M1 und M15 trotzdem zugreifen?
ich habe einen Indikator den ich mehrfach in einen Chart einfügen will, was aber nicht geht. Ich kann den Indikator nur einmal einfügen. Kann mir jemand von euch sagen, ob man das ändern kann bzw. woran es liegt.
Da mein altes Thema dazu dicht ist, mach ich einfach mal nen Neues auf.
Im Anhang die neueste Version von LoShDistV3 EA. Soll nach und nach immer mehr Sell/Buy-Orders auf machen. Wenn eine der Allerersten ne einstellbare Gewinn-Distanz erreicht hat, sollen alle noch offenen Orders geschlossen und das Ganze von vorn gestartet werden.
1.
Bin ich eher noch Anfänger...
2.
...deswegen kann man bestimmt Einiges optimieren.
3.
Bin ich unschlüssig, wie ich das mit der Order-Zählerei machen soll. Ein paar Zähler müssen immer mit zählen, wie viele Orders geöffnet wurden. Mit diesen Zählern wird dann berechnet, wie viele Orders in Gegenrichtung eröffnet werden müssen, um irgendwelche Verluste mit der richtigen Orderanzahl in Gegenrichtung wieder auszugleichen.
4.
Werden die allerersten und die neuesten Orders immer wieder übers Ticket aufgerufen, um zu berechnen, wann weitere Orders geöffnet werden sollen, wie viele, bzw. ob Alle geschlossen werden können. Hatte immer wieder die Fehlermeldung, dass Ticket für irgendne ausgewählte Order nicht mehr gefunden wurde. Oder umgedreht. Jedenfalls weiß ich nicht, ob das für Abstürze oder Fehler oder sonswas für Probleme sorgt, wenn man irgendwie Tickets oder sonstwas für Infos von Orders aufruft, die inzwischen geschlossen wurden.
Code:
/*=============================================================================================================
// N O T I Z E N U N D I N F O S
//=============================================================================================================
//=============================================================================================================
// P R O P E R T Y
//============================================================================================================*/
//#property strict
// #property strict sorgt anscheinend dafür,
// dass Kommentare im Konfig-Fenster im MT4 sichtbar sind.
#property copyright"LoShDistV3.mq4"
#property copyright"daniel-rudloff@web.de"
//=============================================================================================================
// B E S C H R E I B U N G
//=============================================================================================================
extern string TOY="true = on / yes";
extern string FON="false = off / no";
//=============================================================================================================
// E I N S T E L L U N G E N
//=============================================================================================================
extern string esMN="Magic Numbers";
extern int MN_FirstSel=2;
extern int MN_FirstBuy=4;
extern int MN_NextSel=6;
extern int MN_NextBuy=8;
//-----------------------------------------------------------------------------------------------------------*/
extern string OOO1="Open Orders";
extern string OOO2="from/till Hour";
extern string OOO3="(Server Time)";
extern int OpenFromHour=5; // Zum Testen ab 5 Uhr Orders öffnen lassen.
extern int OpenTillHour=22; // Zum Testen bis einschließlich 22 Uhr öffnen lassen.
//-----------------------------------------------------------------------------------------------------------*/
extern int Slippage=12345;
//-----------------------------------------------------------------------------------------------------------*/
extern int SL=275; // ?
//-----------------------------------------------------------------------------------------------------------*/
extern int TP=425; // ?
//-----------------------------------------------------------------------------------------------------------*/
extern string esIITCBSMS1="if IsTradeContexBusy()";
extern string esIITCBSMS2="sleep Milli Seconds";
extern int slMS=16; // Zum Testen 16 MS
//-----------------------------------------------------------------------------------------------------------*/
extern string esDOONO1="Dist to OrderOpenPrice()";
extern string esDOONO2="open next Order";
extern int Dist_ONO = 25; // ?
//-----------------------------------------------------------------------------------------------------------*/
extern string esDOCAO1="Dist to OrderOpenPrice()";
extern string esDOCAO2="close all Orders";
extern int Dist_CAO = 65; // Zum Testen 65. Weniger als ... ist wahrscheinlich nicht ausreichend?
//-----------------------------------------------------------------------------------------------------------*/
extern int OrdersNeed_Multi = 2;
//-----------------------------------------------------------------------------------------------------------*/
extern double Lots=0.01;
extern double LotsPlus=0.01; // ?
//=============================================================================================================
// G L O B A L E D E K L A R A T I O N E N
//=============================================================================================================
bool
fiSH,fiLO,
neSH,neLO,
OCsel,OCbuy
;
//-----------------------------------------------------------------------------------------------------------*/
double
SL_Sel,SL_Buy,TP_Sel,TP_Buy,MSL,
FiSelOOP_DistONO,FiBuyOOP_DistONO,
NeSelOOP_DistONO,NeBuyOOP_DistONO,
FiSelOOP_DistCAO,FiBuyOOP_DistCAO
;
//-----------------------------------------------------------------------------------------------------------*/
int
TI_FiSel,TI_FiBuy,TI_NeSel,TI_NeBuy,
i,j,k,l,m,n,o,p,q,
FL_opSel,FL_neSel,FL_opBuy,FL_neBuy, // Temporäre Opened/Need-Werte, nur für forLoops ( ? )
Opened_Sel,Opened_Buy,
Need_Sel,Need_Buy
;
//=============================================================================================================
// I N I T
//=============================================================================================================
void OnInit(){}
//=============================================================================================================
// D E I N I T ?
//=============================================================================================================
void OnDeinit(const int reason){}// ?
//=============================================================================================================
// E A F U N K T I O N E N S T A R T
//=============================================================================================================int
void OnTick(){
//=============================================================================================================
// S T O P L O S S
//=============================================================================================================
//SL auf 0 stellen, wenn oben <1,
//um irgendwelche Missverständnisse zu vermeiden.
if(SL<1){
SL_Sel=0.0;
SL_Buy=0.0;}
else{
SL_Sel=NormalizeDouble(Bid+SL*_Point,_Digits);
SL_Buy=NormalizeDouble(Ask-SL*_Point,_Digits);}
//SL genauso groß wie Minstoplevels machen, wenn er kleiner ist:
MSL=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(SL_Sel<MSL)SL_Sel=MSL;
if(SL_Buy<MSL)SL_Buy=MSL;
//=============================================================================================================
// T A K E P R O F I T
//=============================================================================================================
//TP auf 0 stellen, wenn oben <1,
//um irgendwelche Missverständnisse zu vermeiden.
if(TP<1){
TP_Sel=0.0;
TP_Buy=0.0;}
else{
TP_Sel=NormalizeDouble(Bid-TP*_Point,_Digits);
TP_Buy=NormalizeDouble(Ask+TP*_Point,_Digits);}
//=============================================================================================================
// C H E C K H O U R
//=============================================================================================================
// Prüfen, ob zur Zeit Orders geöffnet werden dürfen.
if(
(Hour()>=OpenFromHour&&Hour()<=OpenTillHour)||
(Hour()>OpenTillHour&&Hour()<OpenFromHour && Opened_Sel>=1 && Opened_Buy>=1 )
){
//=============================================================================================================
// 1 . O R D E R S E A R C H
//=============================================================================================================// Prüfen, überhaupt Orders offen sind.
fiSH=false;
neSH=false;
fiLO=false;
neLO=false;
for(i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_FirstSel)fiSH=true;
if(OrderMagicNumber()==MN_NextSel )neSH=true;
if(OrderMagicNumber()==MN_FirstBuy)fiLO=true;
if(OrderMagicNumber()==MN_NextBuy )neLO=true;}}}
//=============================================================================================================
// O P E N F I R S T S E L L / O P E N F I R S T B U Y
//=============================================================================================================// Prüfen, überhaupt Orders offen sind.
// Wenn gar keine Orders offen sind...
if(fiSH==false&&neSH==false&&fiLO==false&&neLO==false){
//-----------------------------------------------------------------------------------------------------------*/
//...Zähler auf 0 setzen.
Opened_Sel=0;
Opened_Buy=0;
Need_Sel =0;
Need_Buy =0;
//-----------------------------------------------------------------------------------------------------------*/
// ...FirstSell öffnen:
if(IsTradeAllowed()==true){
TI_FiSel=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL_Sel,TP_Sel,NULL,MN_FirstSel,clrBlue);
if(IsTradeContextBusy()==true)Sleep(slMS);} // ?
// ...FirstBuy öffnen:
if(IsTradeAllowed()==true){
TI_FiBuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL_Buy,TP_Buy,NULL,MN_FirstBuy,clrBlue);
if(IsTradeContextBusy()==true)Sleep(slMS);} // ?
}
//=============================================================================================================
// 2 . O R D E R S E A R C H
//=============================================================================================================
// Prüfen, ob 1.Sell und 1.Buy geöffnet wurden,
// und ob next Sell und next Buy schon geöffnet wurden.
for(j=OrdersTotal()-1;j>=0;j--){
if(OrderSelect(j,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_FirstSel)fiSH=true;
if(OrderMagicNumber()==MN_NextSel )neSH=true;
if(OrderMagicNumber()==MN_FirstBuy)fiLO=true;
if(OrderMagicNumber()==MN_NextBuy )neLO=true;}}}
//=============================================================================================================
// O P E N F I R S T N E X T O R D E R S
//=============================================================================================================
// Wenn nur FirstSell und FirstBuy offen sind,
// bei entsprechenden Bedingungen
// next Sel / next Buy öffnen.
if(fiSH==true&&fiLO==true&&neSH==false&&neLO==false){
//-----------------------------------------------------------------------------------------------------------*/
// Wenn FirstSell Bedingungen erfüllt, next Sell öffnen.
if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){
if(OrderSymbol()==Symbol()){ // ?
FiSelOOP_DistONO=NormalizeDouble( OrderOpenPrice() - Dist_ONO*_Point,_Digits);
if(Bid <= FiSelOOP_DistONO){
for( k=OrdersNeed_Multi ; k>0 ; k--){
if(IsTradeAllowed()==true)TI_NeSel=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL_Sel,TP_Sel,NULL,MN_NextSel,clrBlue);
if(IsTradeContextBusy()==true)Sleep(slMS);
Opened_Sel++;
Need_Sel = Opened_Sel * OrdersNeed_Multi;
Need_Buy = Need_Sel * OrdersNeed_Multi;} // ?
} } }
//-----------------------------------------------------------------------------------------------------------*/
// Wenn 1.Buy Bedingungen erfüllt,
// next Buy öffnen.
if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){
if(OrderSymbol()==Symbol()){
FiBuyOOP_DistONO=NormalizeDouble( OrderOpenPrice() + Dist_ONO*_Point,_Digits);
if(Ask>=FiBuyOOP_DistONO){
for( l=OrdersNeed_Multi ; l>0 ; l--){
if(IsTradeAllowed()==true)TI_NeBuy=OrderSend(Symbol(),OP_BUY,Lots,Bid,Slippage,SL_Buy,TP_Buy,NULL,MN_NextBuy,clrBlue);
if(IsTradeContextBusy()==true)Sleep(slMS);
Opened_Buy++;
Need_Buy = Opened_Buy * OrdersNeed_Multi;
Need_Sel = Need_Buy * OrdersNeed_Multi;}
} } }
//-----------------------------------------------------------------------------------------------------------*/
}
//=============================================================================================================
// 3 . O R D E R S E A R C H
//=============================================================================================================
// 1.Sell und 1.Buy müssen offen sein.
// nextSell und/oder nextBuy müssen offen sein.
for(m=OrdersTotal()-1;m>=0;m--){
if(OrderSelect(m,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_FirstSel)fiSH=true;
if(OrderMagicNumber()==MN_NextSel )neSH=true;
if(OrderMagicNumber()==MN_FirstBuy)fiLO=true;
if(OrderMagicNumber()==MN_NextBuy )neLO=true;}}}
//=============================================================================================================
// C H E C K F I R S T O R D E R S A N D N E X T O R D E R S
//=============================================================================================================
// Wenn FirstSell und FirstBuy offen sind...
if(fiSH==true&&fiLO==true){
// ...und nextSell oder nextBuy offen sind,
if(neSH==true||neLO==true){
// Weitere nextOrders öffnen,
// wenn Bedingungen erfüllt sind.
//=============================================================================================================
// C H E C K F I R S T A N D N E X T S E L L O R D E R S
//=============================================================================================================// Letzten next Sell über Ticket auswählen.
// Letzten NextSell auswählen.
if(OrderSelect(TI_NeSel,SELECT_BY_TICKET)){
if(OrderSymbol()==Symbol()){
// Prüfen, ob letzter NextSell OpenNextOrder-Dist erreicht hat.
NeSelOOP_DistONO=NormalizeDouble( OrderOpenPrice() - Dist_ONO*_Point,_Digits );
if(Bid <= NeSelOOP_DistONO){
// Wenn ja, FirstSell über Ticket auswählen.
if(OrderSelect(TI_FiSel,SELECT_BY_TICKET)){
if(OrderSymbol()==Symbol()){
//=============================================================================================================
// O P E N N E W S E L L O R D E R S B Y D I S T
//=============================================================================================================
// Wenn FirstSell Gewinn-Distanz nicht erreicht hat, weitere Sell-Orders öffnen.
if( Ask > FiSelOOP_DistCAO ){
FL_opSel=Opened_Sel; // ?
FL_neSel=Need_Sel; // ?
for( n=FL_neSel ; n>0 ; n--){
if(IsTradeAllowed()==true)TI_NeSel=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL_Sel,TP_Sel,NULL,MN_NextSel,clrYellow);
if(IsTradeContextBusy()==true)Sleep(slMS);
Opened_Sel++;
Need_Sel = Opened_Sel * OrdersNeed_Multi;
Need_Buy = Need_Sel * OrdersNeed_Multi;} }
//=============================================================================================================
// C L O S E A L L O R D E R S B Y S E L L D I S T
//=============================================================================================================
// Wenn FirstSell Gewinn-Dist doch erreicht hat...
if( Ask <= FiSelOOP_DistCAO ){
// ...Lots erhöhen...
Lots = OrderLots() + LotsPlus; // ?
// ...und alle Orders schließen.
for(p=OrdersTotal()-1;p>=0;p--){
if(OrderSelect(p,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_NextBuy){
if(IsTradeAllowed()==true)OCbuy=OrderClose(NULL,OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_FirstBuy){
if(IsTradeAllowed()==true)OCbuy=OrderClose(NULL,OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_NextSel){
if(IsTradeAllowed()==true)OCsel=OrderClose(NULL,OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_FirstSel){
if(IsTradeAllowed()==true)OCsel=OrderClose(NULL,OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
} } } }
//-----------------------------------------------------------------------------------------------------------*/
} } } } }
//=============================================================================================================
// C H E C K F I R S T A N D N E X T B U Y O R D E R S
//=============================================================================================================
// Letzten NextBuy über Ticket auswählen.
if(OrderSelect(TI_NeBuy,SELECT_BY_TICKET)){
if(OrderSymbol()==Symbol()){
// Prüfen, ob NextBuy OpenNextOrder-Dist erreicht hat.
NeBuyOOP_DistONO=NormalizeDouble(OrderOpenPrice() + Dist_ONO*_Point,_Digits);
if(Ask >= NeBuyOOP_DistONO){
// Wenn ja, FirstBuy über Ticket auswählen.
if(OrderSelect(TI_FiBuy,SELECT_BY_TICKET)){
if(OrderSymbol()==Symbol()){
// Prüfen, ob 1.Buy Gewinn-Distanz erreicht hat.
FiBuyOOP_DistCAO=NormalizeDouble( OrderOpenPrice() + Dist_CAO*_Point,_Digits);
//=============================================================================================================
// O P E N N E W B U Y O R D E R S B Y D I S T
//=============================================================================================================
// Wenn 1.Buy Gewinn-Distanz nicht erreicht hat weitere Buy-Orders öffnen.
if(Bid < FiBuyOOP_DistCAO){
FL_opBuy=Opened_Buy; // ?
FL_neBuy=Need_Buy; // ?
for( o=FL_neBuy ; o>0 ; o--){
if(IsTradeAllowed()==true)TI_NeBuy=OrderSend(Symbol(),OP_BUY,Lots,Bid,Slippage,SL_Buy,TP_Buy,NULL,MN_NextBuy,clrYellow);
if(IsTradeContextBusy()==true)Sleep(slMS);
Opened_Buy++;
Need_Buy = Opened_Buy * OrdersNeed_Multi;
Need_Sel = Need_Buy * OrdersNeed_Multi;} }
//=============================================================================================================
// C L O S E A L L O R D E R S B Y B U Y D I S T
//=============================================================================================================
// Wenn FirstBuy Gewinn-Dist doch erreicht hat...
if( Bid >= FiBuyOOP_DistCAO ){
// ...Lots erhöhen...
Lots = OrderLots() + LotsPlus; // ?
// ...und alle Orders schließen.
for(q=OrdersTotal()-1;q>=0;q--){
if(OrderSelect(q,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_NextSel){
if(IsTradeAllowed()==true)OCsel=OrderClose(NULL,OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_FirstSel){
if(IsTradeAllowed()==true)OCsel=OrderClose(NULL,OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_NextBuy){
if(IsTradeAllowed()==true)OCbuy=OrderClose(NULL,OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
if(OrderMagicNumber()==MN_FirstBuy){
if(IsTradeAllowed()==true)OCbuy=OrderClose(NULL,OrderLots(),NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(slMS);}
} } } }
//-----------------------------------------------------------------------------------------------------------*/
} } } } }
//-----------------------------------------------------------------------------------------------------------*/
} }
//-----------------------------------------------------------------------------------------------------------*/
} // Öffnende Klammer nach Hour Check
//=============================================================================================================
// E A F U N K T I O N E N B E E N D E N
//=============================================================================================================
}//(void OnTick)
ich habe einen Ea der boxen anhand von einem vorgegebenen zeitrahmen definiert. an den rändern werden pending orders platziert > also klasischer range handel.
jetzt bin ich dabei ihn so umzuschreiben, dass er mehrere boxen tradet. nach vielen versuchen, bin ich jetzt soweit das er die boxen einzeichnet und auch trades eingeht.
das problem ist das er die pending orders ständig öffnet und schliesst und damit dann auch aufhört bevor die ablaufzeit rum ist.
um das problem zu verdeutlichen packe ich in den anhang mal ein screenshot vom chart und die mq4 datei.
vielleicht findet sich hier ja jemand der mir helfen kann das problem zu lösen.
wie funktioniert es genau den code mit z.b. der print funktion zu prüfen. so das er mir die genauen parameter ausgibt. ich habe das schon öfters in lernvideos gesehen, finde es aber gerade nicht wieder.
aktuell eröffnet und schliesst mein ea mit jedem tick stop orders. er soll aber nur jeweils eine in jede richtung eröffnen.
vielleicht hat ja jemand einen link zu einem lernvideo.
Hallo an alle da draußen,
ich habe einen Expert auf meinem Demokonto getestet. Den gleichen Expert testete ich dann im LiveKonto (gleicher Broker, gleiche Einstellungen). Nach mehreren Durchläufen habe ich festgestellt, daß im LiveKonto immer wieder weniger Trades ausgeführt werden (ca 10%).
ich möchte gerne die echte, aktuelle Zeit auslesen, obwohl der EA gerade im Backtest läuft.
Hat jemand von euch eine Idee, welche Funktion hierfür die richtige ist?
TimeCurrent() TimeLocal() und TimeTradeServer() liefern nur die Zeit, welche gerade im Backtest anstehen würde, aber nicht die recht aktuelle Zeit.
Probiere seit einiger Zeit einen EA mit 3 (zum Teil ) selbst gemachten Indikatoren. Der hat bisher immer nur Buy-Orders geöffnet, obwohl es doch eigentlich wenigstens ein paar Chancen für Sell-Orders geben müsste. Hab den Code immer wieder durch geguckt und hab keine Ahnung, warum er nicht auch Sell-Orders öffnet. Fehlermeldungen oder Warnungen gibts Keine. Weder beim Kompilieren noch im MT4.
Im Anhang der EA und die 3 Indis. Braucht man nur in den Indikator-Ordner kopieren/speichern und Kompilieren. Dass der EA in den EA-Ordner kompiliert werden muss, brauch ich wohl nicht extra erklären.
Code:
Eigene Indikatoren:
-OnePrice
-Price+MAd2
-First MA+MAd2
-Second MA+MAd2
//-------------------------------------------------------------------------------------------------------------
//=============================================================================================================
// P R O P E R T Y
//============================================================================================================*/
// #property strict
// #property strict sorgt anscheinend dafür,
// dass Kommentare im Konfig-Fenster im MT4 sichtbar sind.
#property copyright"EIMT4EA_oPRPpMd2MpMd2.mq4"
#property copyright"daniel-rudloff@web.de"
//=============================================================================================================
// B E S C H R E I B U N G
//=============================================================================================================
extern string esTOY="true = on / yes";
extern string esFON="false = off / no";
extern string esB01="Send Sell/Buy if:";
extern string esB02="first_OnePr";
extern string esB03=">=/<=";
extern string esB04="PRpMAd2_Price";
extern string esB05=">=/<=";
extern string esB06="first MAplMAd2";
extern string esB07=">=/<=";
extern string esB08="secon MAplMAd2";
//=============================================================================================================
// E I N S T E L L U N G E N
//=============================================================================================================
extern string esOOT="Open Orders";
input bool open_Sel=true;
input bool open_Buy=true;
//-----------------------------------------------------------------------------------------------------------*/
extern string esMN="Magic Numbers";
extern int MN_Sel=12;
extern int MN_Buy=34;
//-----------------------------------------------------------------------------------------------------------*/
extern string OOO1="Open Orders";
extern string OOO2="from/till";
extern string OOO3="(Server Time)";
extern int FromH=5; // Zum Testen ab 5 Uhr öffnen
extern int TillH=15;
//-----------------------------------------------------------------------------------------------------------*/
extern string CAOTOC1="Close all Orders at";
extern string CAOTOC2="(Server Time)";
extern bool CAOA=true;
extern int CloseH=17;
//-----------------------------------------------------------------------------------------------------------*/
extern int Slippage=12345; // ?
//-----------------------------------------------------------------------------------------------------------*/
extern string esIITCBSMS1="if IsTradeContexBusy";
extern string esIITCBSMS2="sleep Milli Seconds";
extern int Sl_MS=16;
//-----------------------------------------------------------------------------------------------------------*/
extern string esMS="Max Spread";
extern int Max_Spr=65; // Zum Testen 65
//-----------------------------------------------------------------------------------------------------------*/
extern int SL=175; // 175 testen
//-----------------------------------------------------------------------------------------------------------*/
// Bei ActivTrades müssen SL/TP anscheinend mindestens 5 sein
extern string esTS="Trailing Stop !VIELLEICHT ERROR DRIN!";
input bool TrailingStop=true; // Zum Testen ein.
extern int TrailingStopStep=25; // Zum Testen 25. Bei TSS 6 wurden gar keine Orders geöffnet.
//-----------------------------------------------------------------------------------------------------------*/
extern int TP=2000; // Zum Testen 2000
//-----------------------------------------------------------------------------------------------------------*/
extern double Lots=0.01;
//-----------------------------------------------------------------------------------------------------------*/
extern string ALSZ="Auto Lotsize !ERROR!";
extern bool Percent_of_Balance=false; // Zum Testen aus. Berechnung ist falsch!
extern double Auto_Lotsize_Perc=0.32; // Zum Testen 0,32%
//-----------------------------------------------------------------------------------------------------------*/
extern string esTF="TimeFrame";
input ENUM_TIMEFRAMES TF=15;// Zum Testen M15
//-----------------------------------------------------------------------------------------------------------*/
// Distance Ask/Bid zu OpenPrice0
extern string esDABOP1="Distance Ask/Bid";
extern string esDABOP2="to";
extern string esDABOP3="OpenPrice Bar0";
extern int DistOP=15;// 15 zum Testen
//=============================================================================================================
// G L O B A L E E I N S T E L L U N G E N E I G E N E I N D I
// P R I C E
//=============================================================================================================
extern string esEAP="EA Price One"; // Vielleicht später mehrere Preise nutzen.
input ENUM_APPLIED_PRICE first_OnePr=PRICE_CLOSE;
//=============================================================================================================
// G L O B A L E E I N S T E L L U N G E N E I G E N E I N D I
// ( P R I C E + M A ) D 2
//=============================================================================================================
extern string esPpM21="PRpMAd2_CHA";
extern string esPpM22="( Price...";
input ENUM_APPLIED_PRICE PRpMAd2_Price=PRICE_CLOSE;
extern string esPpM2MA="... + Moving Average ) / 2";
extern int PRpMAd2_MA_Period=2; // Periode scheint egal zu sein...
input ENUM_MA_METHOD PRpMAd2_MA_Method=MODE_SMA;
input ENUM_APPLIED_PRICE PRpMAd2_MA_Price =PRICE_CLOSE;
//=============================================================================================================
// G L O B A L E E I N S T E L L U N G E N E I G E N E I N D I
// M A p l MA d 2
//=============================================================================================================
extern string esMpMd2o="first MAplMAd2_CHA";
extern int fiMpMd2_onePeriod=3;
input ENUM_MA_METHOD fiMpMd2_oneMethod=MODE_SMA;
input ENUM_APPLIED_PRICE fiMpMd2_onePrice =PRICE_CLOSE;
extern int fiMpMd2_twoPeriod=6;
input ENUM_MA_METHOD fiMpMd2_twoMethod=MODE_SMA;
input ENUM_APPLIED_PRICE fiMpMd2_twoPrice =PRICE_CLOSE;
//-----------------------------------------------------------------------------------------------------------*/
extern string esMpMd2t="second MAplMAd2_CHA";
extern int seMpMd2_onePeriod=4;
input ENUM_MA_METHOD seMpMd2_oneMethod=MODE_SMA;
input ENUM_APPLIED_PRICE seMpMd2_onePrice =PRICE_CLOSE;
extern int seMpMd2_twoPeriod=8;
input ENUM_MA_METHOD seMpMd2_twoMethod=MODE_SMA;
input ENUM_APPLIED_PRICE seMpMd2_twoPrice =PRICE_CLOSE;
//=============================================================================================================
// G L O B A L E D E K L A R A T I O N E N
//=============================================================================================================
bool
SHLO,
OMsel,OMbuy,
OCsel,OCbuy
;
//-----------------------------------------------------------------------------------------------------------*/
double
SL_Sel,SL_Buy,TP_Sel,TP_Buy,
SPR,
OPZ,OPZD_Sel,OPZD_Buy,
first_onePR,
first_PRpMAd2,
first_MAplMAd2,secon_MAplMAd2
;
//-----------------------------------------------------------------------------------------------------------*/
int
TiSel,TiBuy
;
//=============================================================================================================
// I N I T
//=============================================================================================================
void OnInit(){
ChartSetSymbolPeriod(0,NULL,TF);}
//=============================================================================================================
// D E I N I T ?
//=============================================================================================================
void OnDeinit(const int reason){}
//=============================================================================================================
// E A F U N K T I O N E N S T A R T
//=============================================================================================================int
void OnTick(){
//=============================================================================================================
// S T O P L O S S
//=============================================================================================================
//SL auf 0 stellen, wenn oben <1,
//um irgendwelche Missverständnisse zu vermeiden.
if(SL<1){
SL_Sel=0.0;
SL_Buy=0.0;}
if(SL>=1){
SL_Sel=NormalizeDouble(Bid+SL*_Point,_Digits);
SL_Buy=NormalizeDouble(Ask-SL*_Point,_Digits);}
//SL genauso groß wie Minstoplevel machen, wenn er kleiner ist:
double MSL=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(SL_Sel<MSL)SL_Sel=MSL;
if(SL_Buy<MSL)SL_Buy=MSL;
//=============================================================================================================
// T A K E P R O F I T
//=============================================================================================================
//TP auf 0 stellen, wenn oben <1,
//um irgendwelche Missverständnisse zu vermeiden.
if(TP<1){
TP_Sel=0.0;
TP_Buy=0.0;}
if(TP>=1){
TP_Sel=NormalizeDouble(Bid-TP*_Point,_Digits);
TP_Buy=NormalizeDouble(Ask+TP*_Point,_Digits);}
//=============================================================================================================
// L O T S ?
//=============================================================================================================
double Min_L=MarketInfo(Symbol(),MODE_MINLOT);
double Max_L=MarketInfo(Symbol(),MODE_MAXLOT);
if(Lots<Min_L)Lots=Min_L;
if(Lots>Max_L)Lots=Max_L;
//=============================================================================================================
// A U T O L O T S werden falsch berechnet!
//=============================================================================================================
double
MarReq,
AccBal,
oneL_ML,
MarReq_ML,
OnePercAccBal,
Print_Lots,
OnePercAccBal_AutoLotPerc,
OnePercAccBalAutoLotPerc_MREQMinL
;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
MarReq=MarketInfo(Symbol(),MODE_MARGINREQUIRED); // nötige Margin für 1 Lot (100.000 Units)
AccBal=AccountBalance(); // momentaner Kontostand
// "1 Lot" geteilt durch Mindest-Lot, um später raus zu finden, wie viel Margin für Mindest-Lot gebraucht wird.
if(Min_L<1.0 )oneL_ML=1.0*Min_L;
if(Min_L>=1.0)oneL_ML=1.0/Min_L;
// müsste bis hier richtig sein...
// Margin_für_1_Lot geteilt durch Ergebnis, um raus zu finden, wie viel Margin für Mindest_Lot benötigt wird.
// z.B.: €1000,00 / 100 = €10,00
if(MarReq< 1.0){
if(oneL_ML< 1.0)MarReq_ML = MarReq * oneL_ML; // ?
if(oneL_ML>=1.0)MarReq_ML = MarReq / oneL_ML;} // ?
if(MarReq>=1.0){
if(oneL_ML< 1.0)MarReq_ML = MarReq * oneL_ML; // ?
if(oneL_ML>=1.0)MarReq_ML = MarReq / oneL_ML;} // ?
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 1% vom Kontostand ausrechnen
// z.B.: €1000,00 / 100% = €10,00
OnePercAccBal = AccBal / 100.0; // ?
// 1% des Kontostands * Prozent, für die Lots gekauft werden sollen
// z.B.: €10,00 * 2,5% = €25,00 ?
if(OnePercAccBal<1.0){
if(Auto_Lotsize_Perc< 1.0)OnePercAccBal_AutoLotPerc = OnePercAccBal / Auto_Lotsize_Perc; // ?
if(Auto_Lotsize_Perc>=1.0)OnePercAccBal_AutoLotPerc = OnePercAccBal * Auto_Lotsize_Perc;} // ?
if(OnePercAccBal>=1.0){
if(Auto_Lotsize_Perc< 1.0)OnePercAccBal_AutoLotPerc = OnePercAccBal / Auto_Lotsize_Perc; // ?
if(Auto_Lotsize_Perc>=1.0)OnePercAccBal_AutoLotPerc = OnePercAccBal * Auto_Lotsize_Perc;} // ?
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
OnePercAccBalAutoLotPerc_MREQMinL = OnePercAccBal_AutoLotPerc / MarReq_ML;
// z.B.: €25,00 * 0.01L = 0.025L (?)
Print_Lots = OnePercAccBalAutoLotPerc_MREQMinL * Min_L;
//=============================================================================================================
// E A P R I C E D E K L A R A T I O N / B E R E C H N U N G
//=============================================================================================================
first_onePR = iCustom(Symbol(),TF,
"OnePrice_CHA"
,
first_OnePr
,
0 // Line Index ?
,
1 // Bar 1
);
//=============================================================================================================
// I N D I K A T O R E N / O S Z I L L A T O R E N D E K L A R A T I O N E N
//=============================================================================================================
//=============================================================================================================
// I N D I K A T O R E N / O S Z I L L A T O R E N D E K L A R A T I O N E N
// MA minus MA +/- MA
//=============================================================================================================
/*
double iCustom(
string symbol, // symbol
int timeframe, // timeframe
string name, // path/name of the custom indicator compiled program
... // custom indicator input parameters (if necessary)
int mode, // line index
int shift // shift
);
double iMA(
string symbol, // symbol
int timeframe, // timeframe
int ma_period, // MA averaging period
int ma_shift, // MA shift
int ma_method, // averaging method
int applied_price, // applied price
int shift // shift
);
*/
// 1.
first_PRpMAd2 = iCustom(Symbol(),TF,
"PRpMAd2_CHA"
,
PRpMAd2_Price,
PRpMAd2_MA_Period,
0, // MA-Shift
PRpMAd2_MA_Method,
PRpMAd2_MA_Price,
0 // Line Index ?
,
1 // Bar 1
);
//-----------------------------------------------------------------------------------------------------------*/
//
first_MAplMAd2 = iCustom(Symbol(),TF,
"MAplMAd2_CHA"
,
fiMpMd2_onePeriod,
0,// MA-Shift
fiMpMd2_oneMethod,
fiMpMd2_onePrice,
fiMpMd2_twoPeriod,
0,// MA-Shift
fiMpMd2_twoMethod,
fiMpMd2_twoPrice,
0 // Line Index ?
,
1 // Bar 1
);
//-----------------------------------------------------------------------------------------------------------*/
secon_MAplMAd2 = iCustom(Symbol(),TF,
"MAplMAd2_CHA"
,
seMpMd2_onePeriod,
0,// MA-Shift
seMpMd2_oneMethod,
seMpMd2_onePrice,
seMpMd2_twoPeriod,
0,// MA-Shift
seMpMd2_twoMethod,
seMpMd2_twoPrice,
0 // Line Index ?
,
1 // Bar 1
);
//=============================================================================================================
// S P R E A D
//=============================================================================================================
SPR=Ask-Bid;
//=============================================================================================================
// ?
//=============================================================================================================
//=============================================================================================================
// O P B A R 0 D E K L A R A T I O N / B E R E C H N U N G
//=============================================================================================================
OPZ = iOpen(Symbol(),TF,0);
OPZD_Sel=NormalizeDouble( OPZ - DistOP *_Point,_Digits);
OPZD_Buy=NormalizeDouble( OPZ + DistOP *_Point,_Digits);
//=============================================================================================================
// O R D E R S E N D
//=============================================================================================================
if(Hour()>=FromH&&Hour()<=TillH){
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(NormalizeDouble(SPR<=Max_Spr*_Point,_Digits)){
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
SHLO=false;
for(int i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderMagicNumber()==MN_Sel||OrderMagicNumber()==MN_Buy)SHLO=true;}}}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(SHLO==false){
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(open_Sel==true){
if(
first_onePR <= first_PRpMAd2 &&
first_PRpMAd2 <= first_MAplMAd2 &&
first_MAplMAd2 <= secon_MAplMAd2 &&
Bid <= OPZD_Sel
){
if(IsTradeAllowed()==true)TiSel=OrderSend(Symbol(),OP_SELL,Lots,NULL,Slippage,SL_Sel,TP_Sel,NULL,MN_Sel,clrBlue);
if(IsTradeContextBusy()==true)Sleep(Sl_MS);
Print("Sended Sell:",
"-Ask=",Ask,
"-Bid=",Bid,
"-Spr=",SPR,
"-OPZD_Sel=",OPZD_Sel,
"-OpenPr0=",OPZ,
"-1.OnePr=",first_onePR,
"-1.PRpMAd2=",first_PRpMAd2,
"-1.MAplMAd2=",first_MAplMAd2,
"-2.MAplMAd2=",secon_MAplMAd2
);
Print("AutoLots:",
"-MarReq=",MarReq,
"-AccBal=",AccBal,
"-MinL=",Min_L,
"-oneL_ML=",oneL_ML,
"-MarReq_1L=",MarReq,
"-MarReq_ML=",MarReq_ML,
"-OnePercAccBal=",OnePercAccBal,
"-Auto_PrintLots=",Print_Lots
);
} }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(open_Buy==true){
if(
first_onePR >= first_PRpMAd2 &&
first_PRpMAd2 >= first_MAplMAd2 &&
first_MAplMAd2 >= secon_MAplMAd2 &&
Ask >= OPZD_Buy
){
if(IsTradeAllowed()==true)TiBuy=OrderSend(Symbol(),OP_BUY,Lots,NULL,Slippage,SL_Buy,TP_Buy,NULL,MN_Buy,clrBlue);
if(IsTradeContextBusy()==true)Sleep(Sl_MS);
Print("Sended Buy:",
"-Ask=",Ask,
"-Bid=",Bid,
"-Spr=",SPR,
"-OPZD_Buy=",OPZD_Buy,
"-OpenPr1=",OPZ,
"-1.OnePr=",first_onePR,
"-1.PRpMAd2=",first_PRpMAd2,
"-1.MAplMAd2=",first_MAplMAd2,
"-2.MAplMAd2=",secon_MAplMAd2
);
Print("AutoLots:",
"-MarReq=",MarReq,
"-AccBal=",AccBal,
"-MinL=",Min_L,
"-oneL_ML=",oneL_ML,
"-MarReq_1L=",MarReq,
"-MarReq_ML=",MarReq_ML,
"-OnePercAccBal=",OnePercAccBal,
"-Auto_PrintLots=",Print_Lots
);
} }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
} } }
//=============================================================================================================
// ? O R D E R M O D I F Y ( T R A I L I N G S T O P ) ?
//=============================================================================================================
if(TrailingStop==true){
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
for(int k=OrdersTotal()-1;k>=0;k--){
if(OrderSelect(k,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Neuer SELL-"SL" (S_TS) Funktionen/Berechnungen
if(OrderMagicNumber()==MN_Sel){
//neuer Sell_SL = alter Sell_SL - TSS
double TS_Sel = NormalizeDouble( OrderStopLoss() - TrailingStopStep *_Point,_Digits);
//
double TSSel_SL = NormalizeDouble( TS_Sel - SL *_Point,_Digits);
//Wenn Bid drunter ist, soll neuer Sell-SL gesendet werden.
if( Bid < TSSel_SL ){
if(IsTradeAllowed()==true)OMsel=OrderModify(OrderTicket(),OrderOpenPrice(),TS_Sel,OrderTakeProfit(),NULL,clrBlue);
if(IsTradeContextBusy()==true)Sleep(Sl_MS);} }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Neuer Buy-"SL" (S_TS) Funktionen/Berechnungen
if(OrderMagicNumber()==MN_Buy){
// Alter Buy-SL + TSS = neuer Buy-SL
double TS_Buy = NormalizeDouble( OrderStopLoss() + TrailingStopStep *_Point,_Digits);
// neuer BUY_"SL" + SL
double TSBuy_SL = NormalizeDouble( TS_Buy + SL *_Point,_Digits);
if( Ask > TSBuy_SL ){
if(IsTradeAllowed()==true)OMbuy=OrderModify(OrderTicket(),OrderOpenPrice(),TS_Buy,OrderTakeProfit(),NULL,clrBlue);
if(IsTradeContextBusy()==true)Sleep(Sl_MS);} }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
} } } }
//=============================================================================================================
// O R D E R C L O S E
//=============================================================================================================
for(int l=OrdersTotal()-1;l>=0;l--){
if(OrderSelect(l,SELECT_BY_POS)){
if(OrderSymbol()==Symbol()){
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(OrderMagicNumber()==MN_Sel){
if(
( first_onePR >= first_PRpMAd2 &&
first_PRpMAd2 >= first_MAplMAd2
)||(CAOA==true&&Hour()>=CloseH)){
if(IsTradeAllowed()==true)OCsel=OrderClose(NULL,NULL,NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(Sl_MS);
Print("Closed Sel:",
"-Ask=",Ask,
"-Bid=",Bid,
"-Spr=",SPR,
"-1.onePR=",first_onePR,
"-1.PRpMAd2=",first_PRpMAd2,
"-1.MAplMAd2=",first_MAplMAd2
);
} }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(OrderMagicNumber()==MN_Buy){
if(
( first_onePR <= first_PRpMAd2 &&
first_PRpMAd2 <= first_MAplMAd2
)||(CAOA==true&&Hour()>=CloseH)){
if(IsTradeAllowed()==true)OCbuy=OrderClose(NULL,NULL,NULL,Slippage,clrRed);
if(IsTradeContextBusy()==true)Sleep(Sl_MS);
Print("Closed Buy:"
"-Ask=",Ask,
"-Bid=",Bid,
"-Spr=",SPR,
"-1.onePR=",first_onePR,
"-1.PRpMAd2=",first_PRpMAd2,
"-1.MAplMAd2=",first_MAplMAd2
);
} }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
} } }
//=============================================================================================================
// E A F U N K T I O N E N B E E N D E N
//=============================================================================================================
}// void OnTick
Multiple Time Frame Analysis ist ja bekannt, man weiß ja auch wie man verschiedene Timeframe Betrachtungen eines charts in einem Fenster öffnet,nur möchte ich eben den M1 und M5 in einem Indikatorabschnitt haben.
Konkret: wie man an dem screenshot sieht, habe ich in M1 die beiden Indikatoren Stochastik und RSI übereinandergelegt. Wenn die parallel laufen usw. ist das immer sehr interessant.
Jetzt möchte ich aber ZUSÄTZLICH dort wo der Stochastik und RSI in M1 läuft , auch den M5 Stochastik und RSI hineinpacken (steht dabei bei screenshot).
Kann man das irgendwie mit herumschieben machen, oder muss man da einen eigenen Indikator programmieren?
Ein MA (Gleitender Durchschnitt) hat bekanntlich verschiedene Einstellmöglichkeiten.
Mir geht es um die : Anwenden auf, close(0),open(1), high(2), low(3), Med...(4),Typical...(5),weigh...(6), undPrevious Indikator´s Data(7), First indikator...(8)
Wenn ich diese Option (Previous...) möchte, es ist die 7. in der Liste, die kann aber nicht auswählen. Erst muss der Indikator auf den Chart gezogen werden, danach kann ich die Option Wählen.
Ich verwende den MA in einem EA der gute Ergebnisse liefert.
( Einstellung close.)
Im Chart sehe ich aber, dass die Einstellung Previous Indikator`s Data noch besser wäre. Leider kann ich das nicht eingeben. Ich kann nur zwischen 1, 2, 3, 4, 5, 6 wählen. die 7( Previous...) wird nicht akzeptiert.
Hat jemand eine Idee wie man das ( die 7 eingeben) realisieren kann ???
Hi,
ich möchte mir gerne bei einem Ver-/Kaufsignal einen Pfeil ins Chart einzeichnen lassen. Leider habe ich trotz der Bibliotheken, YouTube etc. noch keine richtige Hilfe gefunden.
Ich möchte, dass bei jedem neuen Signal, wieder ein Pfeil eingezeichnet wird und die vorherigen natürlich bestehen bleiben.
Jetzt ist es aber so, dass er nur einmal, also wenn das Signal das erste mal kommt, einen Pfeil einzeichnet und danach nicht mehr... was mache ich denn falsch??
Hallo zusammen,
habe nun seit einiger Zeit keine EAs mehr geschrieben, möchte aber nun einen aufsetzen, der meinen Trade nach meinem manuellen Eingang verwaltet. Ich habe in Erinnerung, dass ich mit der magic Number arbeiten muss, aber meine Kenntnisse sind zu eingerostet, um mein Vorhaben umzusetzen. Der EA soll idealerweise auch mehrere trades gleichzeitig bedienen, wodurch ich vermutlich unterschiedliche magic Numbers benötige bzw vergeben muss. Kann mir jemand auf die Sprünge helfen, welcher Code Schnipsel mir diesbezüglich weiterhilft?
seit ca. zwei Wochen beschäftige ich mich intensiv mit dem Codeing. Die ersten EA´s laufen ganz gut. Jetzt verheitze ich mich aber schon seit Tagen an der Positionsgrößenberechnung.
Ich möchte den Eurobetrag pro Trade eingeben und anhand des SL soll dann die Size berechnet werden. Was auch gehen würde, besser beides um es auszuwählen, wäre die Berechnung in Prozent der Kontogröße.
Leider habe ich bis jetzt nichts Erklärendes dazu gefunden.
Kann mir da jemand bitte helfen eine Quelle zu finden, wo das erklärt wird? Oder vielleicht sogar einen Codeschnipsel dazu hat.
Hallo, da ich mir jetzt schon eine Weile meinen Kopfzerbreche und keine Lösung finde und auf dem Holzweg bin und anscheinend niemand ein ähnliches Problem hatte, bin ich nun hier.
Mein Problem ist, ich möchte wissen war der RSI in der 5Minuten Periode in den letzten 120, 5minuten Kerzen, über 70 oder unter 30. Ich dachte das geht über den shift wert der mir ja diese Info gibt aber Folgendes.
so habe ich mir das gedacht aber das muss doch auch einfacher gehen und nicht das ich 120 abfragen dieser Art mache.?
Ich dachte es würde mit einem Array gehen aber das habe ich nicht hinbekommen.
Hallo Miteinander. Ich bin auf der Suche nach einem Tool zwecks Marktbeobachtung (besser gesagt, das Orderbuch) und Benachrichtigung per email oder WhatsApp / Telegramm...
Dieses Tool sollte im Order-Buch, nach Überschreitung eines Bestimmten Level an Ordervolumen (also Pending- und Marketorders in der Summe)Alarm schlagen und auch anzeigen ob Käufer oder Verkäufer dominieren.
Hat jemand vllt eine Idee, ob es so ein Tool gibt oder ob man es Programmieren lassen soll?!?
Ich habe etwas gefunden, das dem ziemlich nahe kommt, ist aber leider für eine andere Plattform und seine Benachrichtigung ist "nur" akustisch am PC.
kurze Frage, session_index bedeutet die Nummer der Handelssitzung, was ist damit genau gemeint. Bedeutet das 0 ist diese Woche und 1 vorige Woche etc oder wie ist session_index zu verstehen? https://www.mql5.com/de/docs/marketi...fosessiontrade
Ich krieg das einfach nicht hin und wäre Euch dankbar, wenn Ihr mir helfen könntet.
Es geht hierbei um die Möglichkeit von Reihenfolgen.
(Das Herausfinden einer Reihenfolge ist kein Problem.)
Das Problem wird nachher der spätere Vergleich.
Aufgabe: Ein Array initialisieren, das feste integer Werte enthält.
Beispiel: Bei 2 Werten habe ich 2 Möglichkeiten, nämlich
- erst 1, dann 2
- erst 2, dann 1
Ich kann also sagen, das 1 Array enthält 2 feste Werte, nämlich 1 und 2
und das 2. Array enthält 2 feste Werte, nämlich 2 und 1.
Code:
int Array1[2]={1,2}; //2 Werte: 1 und 2
int Array2[2]={2,1}; //2 Werte: 2 und 1
Wenn ich nun ein gefundenes Ergebnis vergleichen will, kann ich das nur mit einer if-Abfrage machen
Problem: Bei höheren Werten (3,4,5...) steigen die Möglichkeiten fakultätsartig.
Das heißt, bei 3 hätte ich schon 6 feste Arrays zu definieren und dementsprechend auch 6 if-Abfragen.
Um das ganze in einen Loop zu packen, müßte ich die Arrays zu einem zusammenfassen, etwa so:
Code:
int ArrayBis2[hat 2 Zeilen][mit 2 Werten]={ ?1,2? , ?2,1?};
Egal wie ich versuche, das zu schreiben, ich krieg nur Fehlermeldungen.
Mache ich einen Denkfehler, habe ich ein Verständnisproblem?
Wäre nett, wenn mich jemand hier wieder auf die Spur bringen könnte.
Danke. AVT
ich nutze zum testen von indikatoren meist die selbe code struktur. jetzt ist der bollinger in kombi mit dem rsi dran.
ich habe verschiedene dinge probiert und komme dennoch nicht weiter. er eröffnet einen trade, schliesst ihn aber nicht mehr. bei long und short (einzeln getestet)
in der execute long funktion wird das ticket zurückgegeben, wonach dann in der else if anweisung gefragt wird. verstehe einfach nicht warum er nicht schliesst.hab den code verglichen mit den anderen indikatoren die ich getestet hab und konnte keine auffälligkeiten feststellen.
ich danke für erfolgreiche hinweise zur ergreifung des fehlers
lieben gruss,
berlin
hier ist der Teil der checkt ob ein long in frage kommt:
if(IsTradingAllowed())
if(iClose(Symbol(),TimeframeBB,0) > bbLower1){
if(iClose(Symbol(),TimeframeBB,2) < bbLower2 && rsi2 < RSIuntenLong
&& iClose(Symbol(),TimeframeBB,1) < bbUpper1 && rsi1 < RSIuntenLong)
if(orderTicket <= 0){
orderTicket = executeLong();
}
}
Ich habe bereits einige Erfahrung in dem Thema EA's schreiben. Nun bin ich aber auf ein Problem gestossen, welches mich zum verzweifeln bringt.
Wenn die OrderSend()-Funktion ein Volumen bei einem Index von mehr als 99.90 Konträkten hat, wird die Order nicht ausgeführ und die Fehlermeldung "OrderSend Error 131" wird ausgegeben.
Kennt jemand die möglichkeit eine Art "MultiOrderOpening"- Function zu schreiben?