Is this the wrong place for such requests?
kilian13:
Is this the wrong place for such requests?
Is this the wrong place for such requests?
No, just ... either lazy or busy ... being lazy to reply.
I haven't check the code, but you may want to assign the return of iClose, iHigh, iLOw, and especially iOpen function to a variable. That way if those function fails and give return value of -1, you don't have to process it.
Forget one thing if do get -1 return value, find out what error is that.
kilian13:
the function already returns -1 if it fails. It hasn't done it yet but it just gives me back wrong values.
Since you said that this is a migrating from mql4 code, can you attach (not insert) the ml4 codes ?
the function already returns -1 if it fails. It hasn't done it yet but it just gives me back wrong values.
Migrating from MQL4 to MQL5
- 2010.05.17
- Sergey Pavlov
- www.mql5.com
This article is a quick guide to MQL4 language functions, it will help you to migrate your programs from MQL4 to MQL5. For each MQL4 function (except trading functions) the description and MQL5 implementation are presented, it allows you to reduce the conversion time significantly. For convenience, the MQL4 functions are divided into groups, similar to MQL4 Reference.
It is not a migrated code from mql4. I am just migrating from mt5 ;). But I can write it pretty quickly. It draws a red bar when the candle open < the close and vice versa of multiple currency pairs.
//+------------------------------------------------------------------+ //| HEDGE.mq4 | //| | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "xxx" #property link "http://www.metaquotes.net" #property indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 110 #property indicator_level1 0 #property indicator_buffers 8 extern string Pair1 = "EURUSD"; //extern bool Mirror1 = false; extern string Pair2 = "USDCHF"; extern bool Mirror2 = true; extern string Pair3 = "EURJPY"; //extern bool Mirror3 = false; extern string Pair4 = "GBPUSD"; //extern bool Mirror4 = false; double Pair1Up[],Pair1Down[],Pair2Up[],Pair2Down[],Pair3Up[],Pair3Down[],Pair4Up[],Pair4Down[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { int arrowCode = 110; SetIndexBuffer(0,Pair1Up); SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3,Lime); SetIndexArrow(0,110); SetIndexLabel(0,Pair1); SetIndexBuffer(1,Pair1Down); SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3,Green); SetIndexArrow(1,110); SetIndexLabel(1,Pair1); SetIndexBuffer(2,Pair2Up); SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,3,DarkOrange); SetIndexArrow(2,110); SetIndexLabel(2,Pair2); SetIndexBuffer(3,Pair2Down); SetIndexStyle(3,DRAW_ARROW,STYLE_SOLID,3,OrangeRed); SetIndexArrow(3,110); SetIndexLabel(3,Pair2); SetIndexBuffer(4,Pair3Up); SetIndexStyle(4,DRAW_ARROW,STYLE_SOLID,3,DodgerBlue); SetIndexArrow(4,110); SetIndexLabel(4,Pair3); SetIndexBuffer(5,Pair3Down); SetIndexStyle(5,DRAW_ARROW,STYLE_SOLID,3,Blue); SetIndexArrow(5,110); SetIndexLabel(5,Pair3); SetIndexBuffer(6,Pair4Up); SetIndexStyle(6,DRAW_ARROW,STYLE_SOLID,3,Gold); SetIndexArrow(6,110); SetIndexLabel(6,Pair4); SetIndexBuffer(7,Pair4Down); SetIndexStyle(7,DRAW_ARROW,STYLE_SOLID,3,SaddleBrown); SetIndexArrow(7,110); SetIndexLabel(7,Pair4); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(),i,shift,Swing; //---- TODO: add your code here i=(Bars-counted_bars)-1; //---- for(shift=i; shift>=0;shift--) { if(iClose(Pair1,0,shift) > iOpen(Pair1,0,shift)){Pair1Up[shift] = 5; Pair1Down[shift] = EMPTY_VALUE;} else{Pair1Up[shift] = EMPTY_VALUE; Pair1Down[shift] = 5;} if(iClose(Pair2,0,shift) > iOpen(Pair2,0,shift)) { if(Mirror2) {Pair2Up[shift] = EMPTY_VALUE; Pair2Down[shift] = 38;} else {Pair2Up[shift] = 38; Pair2Down[shift] = EMPTY_VALUE;} } else { if(Mirror2) {Pair2Up[shift] = 38; Pair2Down[shift] = EMPTY_VALUE;} else {Pair2Up[shift] = EMPTY_VALUE; Pair2Down[shift] = 38;} } if(iClose(Pair3,0,shift) > iOpen(Pair3,0,shift)){Pair3Up[shift] = 71; Pair3Down[shift] = EMPTY_VALUE;} else{Pair3Up[shift] = EMPTY_VALUE; Pair3Down[shift] = 71;} if(iClose(Pair4,0,shift) > iOpen(Pair4,0,shift)){Pair4Up[shift] = 105; Pair4Down[shift] = EMPTY_VALUE;} else{Pair4Up[shift] = EMPTY_VALUE; Pair4Down[shift] = 105;} } return(0); } //+------------------------------------------------------------------+
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
This is my first attempt to write a code in mql5 and there are a few issues I am facing.
I wanted to write a simple indicator that displays a red block if Pair1 bar is bullish and a green block if it is bearish.
Problem #1: the label and arrow settings are not applied to the 2nd pair buffer. it shows a little circle instead of a square.
#2 : my iClose and iOpen return wrong values.
I must have made some rudimentary mistakes but I am not able to find them myself. Can someone please help me out here.