- 100% CPU USAGE ?!
- Global Variables from custom indicator in EA
- About computing load of indicators in EA
I haven't tested this in MT but from other programming situations I'd expect that calling other executables at run-time adds overhead.
If an MT app developer can write and say that all MT4 indicators are memory resident, multi-instance & free-threaded that would change things :)
You can save CPU by only evaluating what & when you need to, typically I evaluate close options every tick but evaluate open options once per bar.
Also rem out any calls you are not using (unused complete functions are left out by the compiler anyway)
Good Luck
BB
//+------------------------------------------------------------------+ //| Test.mq4 | //| Copyright © 2007, MetaQuotes Software Corp. | //| https://www.metaquotes.net/ru/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, MetaQuotes Software Corp." #property link "https://www.metaquotes.net/ru/" #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Red extern int val=5; //---- buffers double ExtMapBuffer1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- int res_int=0,i; double res_double=0; //---- for(i=0;i<=10000000;i++) { res_int+=i*i; res_int++; res_double+=i*i; res_double++; } ExtMapBuffer1[0]=res_double; //---- return(0); } //+------------------------------------------------------------------+
//+------------------------------------------------------------------+ //| CheckCustomSpeed.mq4 | //| Copyright © 2007, MetaQuotes Software Corp. | //| https://www.metaquotes.net/ru/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, MetaQuotes Software Corp." #property link "https://www.metaquotes.net/ru/" #property show_inputs //+------------------------------------------------------------------+ //| implemented Test functiom | //+------------------------------------------------------------------+ double test() { int res_int=0,i; double res_double=0; //---- for(i=0;i<=10000000;i++) { res_int+=i*i; res_int++; res_double+=i*i; res_double++; } return(res_double); } //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { double Impl=test(); double Custom=iCustom(NULL,0,"Test",5,0,0); //---- Print("Implemented retuns ",Impl,", iCustom returns ",Custom,", diiff=",Impl-Custom); //---- int i,start,stop; //Measuring time for test function start=GetTickCount(); for (i=0;i<100;i++) test(); stop=GetTickCount(); int testTime=(stop-start)/1000.0; //Measuring time for Custom function start=GetTickCount(); for (i=0;i<100;i++) Custom=iCustom(NULL,0,"Test",i,0,0); stop=GetTickCount(); int customTime=(stop-start)/1000.0; string text=StringConcatenate("Time for implemented function test() is ",testTime," seconds"); text=StringConcatenate(text,"\n Time for custom function iCustom(\"test\") is ",customTime," seconds"); Comment(text); //---- return(0); } //+------------------------------------------------------------------+
Rosh
Good practical example thanks :)
Shows that calls to Custom Indicators are efficient & can be made without extra overhead - which
a) Simplifies coding no end
b) Shows how well MT4 is put together under the bonnet!
BB
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use