Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43266
Benutzer: 7.222
Aktive Benutzer: 72
Links: 84
Wir begrüßen unseren neuesten Benutzer: Mane
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak
vor 2 Wochen
- Amateur
vor 2 Wochen
- infos1982

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 09.02.22
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard Custom Indicator lässt MT4 einfrieren

Hallo.

Experimentiere derzeit mit ein paar eigenen Indis rum.

Im Anhang der MAdPR_SEP_v1.mq4. Versuche, im Unterfenster nen MA durch nen Price zu dividieren und andersrum. Beim Kompilieren gibts keine Fehlermeldung und es scheint Alles richtig zu sein. Aber wenn ich im MT4 den Indi in irgend einen Chart ziehe, und im Konfig-Fensterchen OK klicke, friert der gesamte MT4 ein und lässt sich bloß noch mit Windoof zwangs-schließen.

Davon abgesehn hab ich nen eigenen Indi, der im Unterfenster 2 Preise, Jeder durch den Anderen dividiert. Der ist eigentlich das Selbe wie der MAdPR-Indi und mit dem gibts keinerlei Probleme. Lad ich auch mal hoch.

Code:
for( i=0 ; rates_total>i ; i++ ){// ?

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

Pr_Hi=iHigh (NULL,NULL,i);
Pr_Op=iOpen (NULL,NULL,i);
Pr_Cl=iClose(NULL,NULL,i);
Pr_Lo=iLow  (NULL,NULL,i);

Pr_ME = ( Pr_Hi + Pr_Lo ) / 2.0;

Pr_TY = ( Pr_Hi + Pr_Cl + Pr_Lo ) / 3.0;

Pr_WE = ( Pr_Hi + Pr_Cl + Pr_Cl + Pr_Lo ) / 4.0;

// Zuweisung Price
if(Price==PRICE_HIGH    )PR=Pr_Hi;
if(Price==PRICE_CLOSE   )PR=Pr_Cl;
if(Price==PRICE_OPEN    )PR=Pr_Op;
if(Price==PRICE_LOW     )PR=Pr_Lo;
if(Price==PRICE_MEDIAN  )PR=Pr_ME;
if(Price==PRICE_TYPICAL )PR=Pr_TY;
if(Price==PRICE_WEIGHTED)PR=Pr_WE;

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

MA=iMA(Symbol(),Period(),MA_Period,MA_ChartShift,MA_Method,MA_Price,i);

//=============================================================================================================
//  B U F F E R   P R d M A
//=============================================================================================================

if( MA <= -1.0 || MA >= 1.0 )BUF_PdM[i] = PR / MA;

//-------------------------------------------------------------------------------------------------------------

if( MA > -1.0 && MA < 1.0 ){


  mT=0;// mal 10
  
  MA_T = MA;
  
  while( MA_T > -1.0 && MA_T < 1.0 ){

    MA_mT = MA_T * 10.0;// MA_T * 10
    
    MA_T = MA_mT;
    
    mT++;

  }


  PdM_T = PR / MA_mT;


  for( j=mT ; j>0 ; j-- ){
  
    PdM_mT = PdM_T * 10.0;
    
    PdM_T = PdM_mT;
  
  }


  BUF_PdM[i] = PdM_mT;

}

//=============================================================================================================
//  B U F F E R   M A d P R
//=============================================================================================================

if( PR <= -1.0 || PR >= 1.0 )BUF_MdP[i] = MA / PR;

//-------------------------------------------------------------------------------------------------------------

if( PR > -1.0 && PR < 1.0 ){


  mT=0;// mal 10
  
  PR_T = PR;

  while( PR_T > -1.0 && PR_T < 1.0 ){

   PR_mT = PR_T * 10.0;// * 10
    
   PR_T = PR_mT;
    
   mT++;
    
  }


  MdP_T = MA / PR_mT;


  for( k=mT ; k>0 ; k-- ){
  
    MdP_T = MdP_mT * 10.0;
    
    MdP_mT = MdP_T;
  
  }


  BUF_MdP[i] = MdP_mT;

}
Angehängte Dateien
Dateityp: mq4 MAdPR_SEP_v1.mq4 (13,9 KB, 4x aufgerufen)
Dateityp: mq4 PRdPR_SEP_v1.mq4 (13,9 KB, 2x aufgerufen)
  #2 (permalink)  
Alt 10.02.22
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Code:
fPr_Hi=iHigh (NULL,NULL,i);
Wie lautet die Syntax von iHigh/Low/Open/Close
Nur das Erste, was mir ins Gesicht sprang. AVT
  #3 (permalink)  
Alt 11.02.22
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Danke für den Hinweis.

Problem wurde inzwischen gelöst. Zu Übungszwecken könnt Ihr ja mal gucken, ob Ihr den Fehler findet.

Tipp:Es war nur ein einziges Zeichen, dass den MT4 hat freezen lassen...
  #4 (permalink)  
Alt 11.02.22
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Zu früh gefreut, funktioniert doch nicht wie ich dachte. Aber das ist ja inzwischen keine grosse Überraschung mehr.

Das Problem war und ist die Kerzen-Angabe in der MA Deklaration.

Code:
MA=iMA(Symbol(),Period(),MA_Period,MA_ChartShift,MA_Method,MA_Price,0);
Vorher stand dort "i", hat wie gesagt den ganzen MT4 jedes mal abstürzen lassen. Mit ner 0 stürzt er zwar nicht mehr ab, scheint aber den ganzen Indikator nur mit dem MA auf Bar 0 zu berechnen. Weshalb er auch nie anzeigt was er muesste.

Wie macht man das jetzt?
Angehängte Dateien
Dateityp: mq4 MAdPR_SEP_v1_PRINT.mq4 (15,0 KB, 2x aufgerufen)
  #5 (permalink)  
Alt 18.02.22
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hallo.

Irgendwo in diesem Stück Code muss/muessen Fehler drin sein, die den ganzen MT4 einfrieren lassen, wenn der Indi in ein Chartfenster gezogen wird. Wenn der MA >= 1.0 ist, funktioniert das Gerät ohne Probleme. Aber wenn der folgende Teile nötig wird, also wenn der MA kleiner als 1.0 ist, friert wie gesagt der ganze MT4 sofort ein.

Kann sein, dass der untere Teil völlig überflüssig ist, vielleicht fehlt aber auch irgendwo irgendwas. Bin wie gesagt leider kein Mathe-Experte.

Ziel ist, aus dem Verhältnis von MA und Price sozusagen Trendlinien zu malen, um die man sich dann nicht weiter kümmern muss und die wie z.B. ganz normale MAs in nem MA-EA genutzt werden können.

Wenn der Indi funktioniert, schaut das für den Anfang nicht schlecht aus, aber wenn eben der MA kleiner als 1.0 ist...



Code:
//=============================================================================================================
// B U F F E R   W E N N   M A < 1
//=============================================================================================================

if( MA > -1.0 && MA < 1.0 ){

//-------------------------------------------------------------------------------------------------------------


// 1. MA mal 10 bis er nicht mehr kleiner als 1 ist.
  mt=0;
  M_t=MA;
  while( M_t > -1.0 && M_t < 1.0 ){

    M_mt = M_t * 10.0;
    
    M_t = M_mt;
    
    mt++;

  }

// 2. Price / "angepassten" MA
  PM_t = PR / M_mt;
// Müsste bis hier Alles richtig sein...
  
  for( k=mt ; k>0 ; k-- ){
  
    PM_mt = PM_t * 10.0;
    
    PM_t = PM_mt;
  
  }
  
//Wenn PMT_mt
  if( PM_mt <= -1.0 || PM_mt >= 1.0 )BUF_PRdMAdPDM[i] = PM_mt;


}

/*

//-------------------------------------------------------------------------------------------------------------


//Wenn PdM_T kleiner als 1.0 ist...
  if( PMT_mt  > -1.0 && PMT_mt  < 1.0 ){


//  ...PdM_T so oft mit 10 multipl. bis er nicht mehr kleiner als 1.0 ist:
    mt=0;// mal 10
    PdMmt_t=PdMmt;
    while( PM_t > -1.0 && PM_t < 1.0 ){

      PdMmt_mt = PdMmt_t * 10.0;// MA_T * 10
    
      PdMmt_t = PdMmt_mt;
    
      mt++;

    }
    

    MdPdM_t = MA / PdMmt_mt;


    for( j=mt ; j>0 ; j-- ){
  
      MdPdM_mt = MdPdM_t * 10.0;
    
      MdPdM_t = MdPdM_mt;
  
    }



    BUF_PRdMAdPDM[i] = MdPdM_mt;

  }

}

*/

//=============================================================================================================
// E N D E   F U N K T I O N E N
//=============================================================================================================
}// for (i=ratestotal)...
//=============================================================================================================
// E N D E   I N D I
//=============================================================================================================
return(rates_total);}// OnCalculate
Angehängte Dateien
Dateityp: mq4 PRdMAdPDM_v2.mq4 (15,5 KB, 8x aufgerufen)
Thema geschlossen

Lesezeichen


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 09:26 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.
-----------------------------------------------------------------------------------------------------------------------------