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: 4972
Beiträge: 43248
Benutzer: 7.216
Aktive Benutzer: 84
Links: 84
Wir begrüßen unseren neuesten Benutzer: bb1107
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 2 Tagen
- bb1107
vor einer Woche
- rg-trader
vor 2 Wochen
- toshistyle
vor 2 Wochen
- Robin
vor 3 Wochen
- mMmaanu

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 09.07.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
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, 6x aufgerufen)
Dateityp: ex4 Valerius_MT4_CCI_STOCH_WPR_AutoLots_AutoTF_EA.ex4 (30,8 KB, 2x aufgerufen)
  #2 (permalink)  
Alt 11.07.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hat Niemand ne Idee was das Problem ist?
  #3 (permalink)  
Alt 12.07.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
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?
  #4 (permalink)  
Alt 13.07.19
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 103
daybyter befindet sich auf einem aufstrebenden Ast
Standard

Gib Dir doch mal vor dem potentiellen Order Öffnen Deine Variablen mit nem Print aus.
  #5 (permalink)  
Alt 14.07.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
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?
  #6 (permalink)  
Alt 14.07.19
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 103
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.
  #7 (permalink)  
Alt 15.07.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
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)
  #8 (permalink)  
Alt 15.07.19
Mitglied
 
Registriert seit: Apr 2018
Beiträge: 103
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.
  #9 (permalink)  
Alt 16.07.19
Premium Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 362
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
  #10 (permalink)  
Alt 16.07.19
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
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, 3x aufgerufen)
Thema geschlossen

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 +1. Es ist jetzt 07:10 Uhr.





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