Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools  
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4279
Beiträge: 39492
Benutzer: 6.592
Aktive Benutzer: 246
Links: 80
Wir begrüßen unseren neuesten Benutzer: trader2
Mit 667 Benutzern waren die meisten Benutzer gleichzeitig online (vor 2 Wochen um 05:39).
Neue Benutzer:
vor 17 Stunden
- trader2
vor einem Tag
- qaseem
vor 2 Tagen
- NiclaszZ
vor 2 Tagen
- florianb90
vor 6 Tagen
- Frank

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 153
Gesamt: 153
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 09.07.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 773
MA-EA befindet sich auf einem aufstrebenden Ast
Standard Mehrere Timeframes traden lassen

Hallo.

Ich versuche CCI, Stochastic und WPR die M15, M30 und H1 Charts handeln zu lassen. Forex. Hab für jeden Chart extra die 3 Indikatoren deklariert und auch für jeden Chart extra die Einstiegsbedingungen mit bools festgelegt.

Die komplette Quell-Datei ist im Anhang.

Code:
//=============================================================================================================
// C C I   D E K L A R A T I O N
//=============================================================================================================

double CCI_M15=iCCI(Symbol(),15,CCI_Period,CCI_Price,1);
double CCI_M30=iCCI(Symbol(),30,CCI_Period,CCI_Price,1);
double CCI_M60=iCCI(Symbol(),60,CCI_Period,CCI_Price,1);

//=============================================================================================================
// S T O C H A S T I C   D E K L A R A T I O N
//=============================================================================================================

double STO_Ma_M15=iStochastic(Symbol(),15,Stoch_K_Period,Stoch_D_Period,Stoch_Slowing,Stoch_MA_Method,Stoch_price_field,MODE_MAIN,1);
double STO_Ma_M30=iStochastic(Symbol(),30,Stoch_K_Period,Stoch_D_Period,Stoch_Slowing,Stoch_MA_Method,Stoch_price_field,MODE_MAIN,1);
double STO_Ma_M60=iStochastic(Symbol(),60,Stoch_K_Period,Stoch_D_Period,Stoch_Slowing,Stoch_MA_Method,Stoch_price_field,MODE_MAIN,1);

double STO_Si_M15=iStochastic(Symbol(),15,Stoch_K_Period,Stoch_D_Period,Stoch_Slowing,Stoch_MA_Method,Stoch_price_field,MODE_SIGNAL,1);
double STO_Si_M30=iStochastic(Symbol(),30,Stoch_K_Period,Stoch_D_Period,Stoch_Slowing,Stoch_MA_Method,Stoch_price_field,MODE_SIGNAL,1);
double STO_Si_M60=iStochastic(Symbol(),60,Stoch_K_Period,Stoch_D_Period,Stoch_Slowing,Stoch_MA_Method,Stoch_price_field,MODE_SIGNAL,1);

//=============================================================================================================
// W P R   D E K L A R A T I O N
//=============================================================================================================

double WPR_M15=iWPR(Symbol(),15,WPR_Period,1);
double WPR_M30=iWPR(Symbol(),30,WPR_Period,1);
double WPR_M60=iWPR(Symbol(),60,WPR_Period,1);
Code:
//=============================================================================================================
// B E D I N G U N G E N   F U E R   O R D E R   S E N D
//=============================================================================================================

//           -100                                                          -80
if(CCI_M15 > CCI_indicator_level_1 && STO_Ma_M15 > STO_Si_M15 && WPR_M15 > WPR_indicator_level_2){
bool M15_Send_Buy=true;
int Close_TF=15;
int Buy_MN=15;}

if(CCI_M30 > CCI_indicator_level_1 && STO_Ma_M30 > STO_Si_M30 && WPR_M30 > WPR_indicator_level_2){
bool M30_Send_Buy=true;
Close_TF=30;
Buy_MN=30;}

if(CCI_M60 > CCI_indicator_level_1 && STO_Ma_M60 > STO_Si_M60 && WPR_M60 > WPR_indicator_level_2){
bool M60_Send_Buy=true;
Close_TF=60;
Buy_MN=60;}


//           +100                                                          -20
if(CCI_M15 < CCI_indicator_level_2 && STO_Ma_M15 < STO_Si_M15 && WPR_M15 < WPR_indicator_level_1){
bool M15_Send_Sel=true;
Close_TF=15;
int Sell_MN=15;}

if(CCI_M30 < CCI_indicator_level_2 && STO_Ma_M30 < STO_Si_M30 && WPR_M30 < WPR_indicator_level_1){
bool M30_Send_Sel=true;
Close_TF=30;
Sell_MN=30;}

if(CCI_M60 < CCI_indicator_level_2 && STO_Ma_M60 < STO_Si_M60 && WPR_M60 < WPR_indicator_level_1){
bool M60_Send_Sel=true;
Close_TF=60;
Sell_MN=60;}

Zum Schließen der Orders müssten diese bools ja reichen, denk ich. Der jeweilige Timeframe zum Schließen wird oben bei den Einstiegsbedingungen fest gelegt.
Code:
//=============================================================================================================
// B E D I N G U N G E N   F U E R   O R D E R   C L O S E
//=============================================================================================================

double STO_Ma_Close=iStochastic(Symbol(),Close_TF,Stoch_K_Period,Stoch_D_Period,Stoch_Slowing,Stoch_MA_Method,Stoch_price_field,MODE_MAIN,1);
double STO_Si_Close=iStochastic(Symbol(),Close_TF,Stoch_K_Period,Stoch_D_Period,Stoch_Slowing,Stoch_MA_Method,Stoch_price_field,MODE_SIGNAL,1);

if(STO_Ma_Close<STO_Si_Close)bool Close_Buy=true;
if(STO_Ma_Close>STO_Si_Close)bool Close_Sel=true;

Befehle zum Order öffnen:
Code:
//=============================================================================================================
// O P E N   O R D E R S
//=============================================================================================================

  if(CB_iTime==Trading_iTime_M15 || CB_iTime==Trading_iTime_M30 || CB_iTime==Trading_iTime_M60){
    if(IsInv==false && RT==true && SPR_AL==true){

      if( open_Buy==true ){
        if( M15_Send_Buy==true || M30_Send_Buy==true || M60_Send_Buy==true )OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Buy_SL,Buy_TP,0,Buy_MN,0,clrBeige);}

      if( open_Sell==true ){
        if( M15_Send_Sel==true || M30_Send_Sel==true || M60_Send_Sel==true )OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Sel_SL,Sel_TP,0,Sell_MN,0,clrBlue);}}}

Zu guter Letzt die Befehle zum Schließen der Orders:
Code:
for(i=OrdersTotal()-1;i>=0;i--){
  if(OrderSelect(i,SELECT_BY_POS)){

    if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){
      if( ( Close_Buy==true ) ||(Close_all_Orders_after_Time_O_Clock==true&&TC>CA))OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrDarkGoldenrod);}
        
    if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){
      if( ( Close_Sel==true ) ||(Close_all_Orders_after_Time_O_Clock==true&&TC>CA))OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrDarkGreen);}}}
Soweit macht er das im MT4 auch. Allerdings nur ein mal! Er darf erst ab 8:00 Uhr morgens Orders öffnen und tut das auch nur dann. Er darf bis 16:37 öffnen. Aber mehr als eine Order pro Währungspaar macht er nicht auf. Und ich kann mir beim besten Willen nicht vorstellen, dass er in über 8 Stunden bei 29 WP in jeweils 3 Timeframes keine einzige Handelsmöglichkeit findet.
Angehängte Dateien
Dateityp: mq4 Valerius_MT4_CCI_STOCH_WPR_AutoLots_AutoTF_EA.mq4 (41,5 KB, 5x aufgerufen)
Dateityp: ex4 Valerius_MT4_CCI_STOCH_WPR_AutoLots_AutoTF_EA.ex4 (30,8 KB, 2x aufgerufen)
Mit Zitat antworten
  #2 (permalink)  
Alt 11.07.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 773
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hat Niemand ne Idee was das Problem ist?
Mit Zitat antworten
  #3 (permalink)  
Alt 12.07.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 773
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Liegts vielleicht an
Code:
int deinit(){
return(0);}
dass er nach einem Programm-Durchlauf nix mehr macht?
Mit Zitat antworten
  #4 (permalink)  
Alt 13.07.19
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 62
daybyter befindet sich auf einem aufstrebenden Ast
Standard

Gib Dir doch mal vor dem potentiellen Order Öffnen Deine Variablen mit nem Print aus.
Mit Zitat antworten
  #5 (permalink)  
Alt 14.07.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 773
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

https://docs.mql4.com/common/print


Aber ich hab den Code ein paar mal durch geguckt. Scheint Alles in Ordnung zu sein. Ausser das bei Order Send(), Order Modify() und OrderClose() immer kommt "Return Value should be checked" oder sowas in der Art. Hab mal
Code:
return(0)
vor die letzte schließenden Ausführungsklammer geschrieben, die Warnungen kamen aber immer noch.

Im MT4 kommt auch keine Fehlermeldung, nur manchmal was mit "busy".

Hat vielleicht die Datei nen Schaden oder der MT4 oder irgendwas Anderes?
Mit Zitat antworten
  #6 (permalink)  
Alt 14.07.19
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 62
daybyter befindet sich auf einem aufstrebenden Ast
Standard

Also Dein return 0 im deinit macht wohl keinen Schaden, weil da ja Dein Programm eh schon beendet ist.

Aber die Rückgabewerte von OrderModify usw solltest Du mal auf jeden Fall auswerten, weil da ja ggf Fehlercodes zurückgegeben werden, falls dieser Befehl nicht ausgeführt werden konnte. Anhand des Wertes kannst Du dann sehe, was da evtl. schiefgegangen ist.
Mit Zitat antworten
  #7 (permalink)  
Alt 15.07.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 773
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

deinit() hab ich komplett rausgenommen.

Heute hat er total gesponnen. Hat einige Orders geöffnet und gleich wieder geschlossen. Dann hat er bei ein paar WP Buy und Sell geöffnet, dabei dürfte er eigentlich nur in eine Richtung traden. Und nach den Orders heute früh nach 7 Uhr hat er bis Feierabend um 17:37 wieder Keine weitere Order geöffnet. Das ist doch Alles nicht normal! An den verschiedenen Timeframes kanns nicht liegen. Er hat auch bei nur einem TF nur früh geöffnet und dann bis zum Feierabend nich mehr. Hab ich nen Clown im Rechner oder was? Das geht doch Alles gar nicht.

Und haufenweise "Trade Context is busy".

Da muss irgendwas gewaltig nicht stimmen.
Angehängte Dateien
Dateityp: mq4 Valerius_MT4_STOCH_WPR_AutoLots_AutoTF_EA.mq4 (39,5 KB, 0x aufgerufen)
Mit Zitat antworten
  #8 (permalink)  
Alt 15.07.19
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 62
daybyter befindet sich auf einem aufstrebenden Ast
Standard

https://www.vantagefx.com/mt4-help-s...-busy-message/

Da stehts. Du musst die Fehlermeldungen von Deinen OrderSend Befehlen checken. Nicht einfach blind die nächste Order raushauen.
Mit Zitat antworten
  #9 (permalink)  
Alt 16.07.19
Premium Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 351
Leopold befindet sich auf einem aufstrebenden Ast
Standard

@MA-EA: Ich glaube es wär besser du beschäftigst dich mit einen anderen Thema, das Programmieren dürfte einfach nichts sein für dich. Das ist der Eindruck den ich jetzt seit einiger zeit gesammelt habe.

fg Leopold
Mit Zitat antworten
  #10 (permalink)  
Alt 16.07.19
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 183
AVT befindet sich auf einem aufstrebenden Ast
Standard

Ich habe Deine erste Version genommen und eine Debugfunktion eingefügt, Erklärungen stehen im Code. Nun mußt Du anhand der Beispiele das weiterführen/vervollständigen.
Aufzeichnungen findest Du unter
C:/Benutzer/AppData/Roaming/MetaQuotes/Terminal/LangeNummer/MQL4/Logs/JJJJMMDD.log für die Meldung unter "Journal" und für die Meldungen unter "Experten" unter C:/Benutzer/AppData/Roaming/MetaQuotes/Terminal/LangeNummer/logs/JJJJMMDD.log
Die kannst Du dann benutzen, um haargenau zu vergleichen, welche Werte Du hast und Dich dann fragen, warum/woher die Werte kommen, ob sie nach Deiner Planung richtig sind oder welche Werte das eigentlich sein sollten.
Ist halt eine Menge Arbeit. AVT
Angehängte Dateien
Dateityp: mq4 Debug-Valerius_MT4_CCI_STOCH_WPR_AutoLots_AutoTF_EA.mq4 (51,4 KB, 2x aufgerufen)
Mit Zitat antworten
Antwort

Lesezeichen


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 11:25 Uhr.


Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2019 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------