Hi All,
I'm trying to learn MT5 programing & am having a few teething issues. This is the latest one:
The following simple routine is what I'm working with:
<CODE REMOVED>
Thanks for looking & would certainly appreciate any constructive suggestion or advise on this
RaptorUK:
Please edit your post above . . . please use the SRC button to post code: How to use the SRC button.
Thanks for your suggestion RaptorUK.
Chinkou is shifted to the past with kijun period. So if you get value from index 0 (current bar), the value of Chinkou is an empty value. By default EMPTY_VALUE is DBL_MAX, which is the value you get for ich5.
You are using this kind of code :
if(CopyBuffer(h_ich,0,0,3,ich1_buffer)<3) {Print("err<3");} else {Print("ich1:",ich1_buffer[0]);}
and later you set
ArraySetAsSeries(ich1_buffer,true)
So when you print your value ich1_buffer is probably index by default. In MT5 it's indexed from oldest data (index=0) to newest (index=count-1).
You are printing ichi1_buffer[0], which is value of buffer 0 for second closed candle in the past. Of course this value don't change.
If you want value for the current candle, either use ArraySetAsSeries(...true) before printing values. Or print like this :
{Print("ich1:",ich1_buffer[2]);}
- www.mql5.com
Thanks for your suggestion RaptorUK.
Chinkou is shifted to the past with kijun period. So if you get value from index 0 (current bar), the value of Chinkou is an empty value. By default EMPTY_VALUE is DBL_MAX, which is the value you get for ich5.
You are using this kind of code :
and later you set
So when you print your value ich1_buffer is probably index by default. In MT5 it's indexed from oldest data (index=0) to newest (index=count-1).
You are printing ichi1_buffer[0], which is value of buffer 0 for second closed candle in the past. Of course this value don't change.
If you want value for the current candle, either use ArraySetAsSeries(...true) before printing values. Or print like this :
Hello Angevoyageur,
Many thanks for your explanation & suggestion. I have just tried the mod & it works very well. However, please note that ich5 buffer is still
printing out the same large no. as shown below:
HP 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:00 ich5:1.797693134862316e+308 DI 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:20 ich1:1.49418 CG 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:20 ich2:1.4937 HM 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:20 ich3:1.48792 QI 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:20 ich4:1.489475 FM 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:20 ich5:1.797693134862316e+308 NM 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:40 ich1:1.49418 MK 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:40 ich2:1.4937 JR 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:40 ich3:1.48792 GJ 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:40 ich4:1.489475 LJ 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:40 ich5:1.797693134862316e+308 JR 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:59 ich1:1.49418 IH 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:59 ich2:1.4937 FF 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:59 ich3:1.48792 KO 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:59 ich4:1.489475 HG 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:11:59 ich5:1.797693134862316e+308 GG 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:12:00 ich1:1.49418 HM 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:12:00 ich2:1.4937 KK 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:12:00 ich3:1.48792 NS 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:12:00 ich4:1.489475 IS 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:12:00 ich5:1.797693134862316e+308 ED 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:12:20 ich1:1.49418 FR 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:12:20 ich2:1.4937 IH 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:12:20 ich3:1.48792 PD 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:12:20 ich4:1.489475 CP 0 12:38:36 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:12:20 ich5:1.797693134862316e+308
Is there any reason why the ich5 buffer is not initializing?
Many thanks for your help.
Best Regards
Kishor
Hello Angevoyageur,
Many thanks for your explanation & suggestion. I have just tried the mod & it works very well. However, please note that ich5 buffer is still
printing out the same large no. as shown below:
Is there any reason why the ich5 buffer is not initializing?
Many thanks for your help.
Best Regards
Kishor
Did you change your code for ich5 as suggested above ?
if(CopyBuffer(h_ich,4,0+26,3,ich5_buffer)<3) {Print("err<3");} else {Print("ich5:",ich5_buffer[2]);}
Did you change your code for ich5 as suggested above ?
Hello Angevoyageur,
Yes - I just tried it. I now get some reasonable returns. That's great.
Much appreciate your kind help. Thank you very much.
Best Regards
Kishor
Hello Angevoyageur,
Yes - I just tried it. I now get some reasonable returns. That's great.
Much appreciate your kind help. Thank you very much.
Best Regards
Kishor
Hello everybody,
I'm using iIchimoku function to create a handle for ichimoku.
After filling buffer arrays the gathered values are logical but they differ with the value shown in chart by hovering the mouse on them.
for example for kijun sen the value of Kijun_sen_Buffer[0] is:0.94392499999999 but in the same time in the chart the value is: 0.97932
and the code is :
bool TradeAnalyzer::FillArraysFromBuffers(void) { // if(type==Call_iIchimoku) ichimokuHandle=iIchimoku("AUDCAD.m",PERIOD_M1,9,26,52); //else // { // //--- fill the structure with parameters of the indicator // MqlParam pars[3]; // //--- periods and shifts of the Alligator lines // pars[0].type=TYPE_INT; // pars[0].integer_value=9; // pars[1].type=TYPE_INT; // pars[1].integer_value=26; // pars[2].type=TYPE_INT; // pars[2].integer_value=52; // //--- create handle // ichimokuHandle=IndicatorCreate(_Symbol,_Period,IND_ICHIMOKU,3,pars); // } //--- if the handle is not created amount = Bars("AUDCAD.m",PERIOD_M1); if(ichimokuHandle==INVALID_HANDLE) { //--- tell about the failure and output the error code PrintFormat(_Symbol,EnumToString(_Period),GetLastError()); //--- the indicator is stopped early return(INIT_FAILED); } //--- show the symbol/timeframe the Ichimoku Kinko Hyo indicator is calculated for short_name=StringFormat("iIchimoku(%s/%s, %d, %d ,%d)",_Symbol,EnumToString(_Period),9,26,52); IndicatorSetString(INDICATOR_SHORTNAME,short_name); //--- normal initialization of the indicator if(CopyBuffer(ichimokuHandle,0,0,amount,Tenkan_sen_Buffer)<0) { //--- if the copying fails, tell the error code PrintFormat("1.Failed to copy data from the iIchimoku indicator, error code %d",GetLastError()); //--- quit with zero result - it means that the indicator is considered as not calculated return(false); } //--- fill a part of the Kijun_sen_Buffer array with values from the indicator buffer that has index 1 if(CopyBuffer(ichimokuHandle,1,0,amount,Kijun_sen_Buffer)<0) { //--- if the copying fails, tell the error code PrintFormat("2.Failed to copy data from the iIchimoku indicator, error code %d",GetLastError()); //--- quit with zero result - it means that the indicator is considered as not calculated return(false); } //--- fill a part of the Chinkou_Span_Buffer array with values from the indicator buffer that has index 2 //--- if senkou_span_shift>0, the line is shifted in the future direction by senkou_span_shift bars if(CopyBuffer(ichimokuHandle,2,-senkou_span_shift,amount,Senkou_Span_A_Buffer)<0) { //--- if the copying fails, tell the error code PrintFormat("3.Failed to copy data from the iIchimoku indicator, error code %d",GetLastError()); //--- quit with zero result - it means that the indicator is considered as not calculated return(false); } //--- fill a part of the Senkou_Span_A_Buffer array with values from the indicator buffer that has index 3 //--- if senkou_span_shift>0, the line is shifted in the future direction by senkou_span_shift bars if(CopyBuffer(ichimokuHandle,3,-senkou_span_shift,amount,Senkou_Span_B_Buffer)<0) { //--- if the copying fails, tell the error code PrintFormat("4.Failed to copy data from the iIchimoku indicator, error code %d",GetLastError()); //--- quit with zero result - it means that the indicator is considered as not calculated return(false); } //--- fill a part of the Senkou_Span_B_Buffer array with values from the indicator buffer that has 0 index //--- when copying Chinkou Span, we don't need to consider the shift, since the Chinkou Span data //--- is already stored with a shift in iIchimoku if(CopyBuffer(ichimokuHandle,4,0,amount,Chinkou_Span_Buffer)<0) { //--- if the copying fails, tell the error code PrintFormat("5.Failed to copy data from the iIchimoku indicator, error code %d",GetLastError()); //--- quit with zero result - it means that the indicator is considered as not calculated return(false); } return true;
Hello everybody,
I'm using iIchimoku function to create a handle for ichimoku.
After filling buffer arrays the gathered values are logical but they differ with the value shown in chart by hovering the mouse on them.
for example for kijun sen the value of Kijun_sen_Buffer[0] is:0.94392499999999 but in the same time in the chart the value is: 0.97932
and the code is :
You have to use ArraySetAsSeries() with your buffers, otherwise index 0 is the oldest value on your chart.
Or try to print value like Kijun_sen_Buffer[amount-1] for current bar and Kijun_sen_Buffer[amount-2] for last closed bar.
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hi All,
I'm trying to learn MT5 programing & am having a few teething issues. This is the latest one:
Here is a short debug print out:
KN 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:06:40 ich1:1.492075
FJ 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:06:40 ich2:1.4937
OP 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:06:40 ich3:1.4883175
PM 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:06:40 ich4:1.48894
EI 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:06:40 ich5:1.797693134862316e+308
KS 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:06:59 ich1:1.492075
FO 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:06:59 ich2:1.4937
OD 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:06:59 ich3:1.4883175
PP 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:06:59 ich4:1.48894
EE 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:06:59 ich5:1.797693134862316e+308
PG 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:07:00 ich1:1.492075
IS 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:07:00 ich2:1.4937
LK 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:07:00 ich3:1.4883175
KD 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:07:00 ich4:1.48894
JR 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:07:00 ich5:1.797693134862316e+308
JH 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:07:20 ich1:1.492075
OP 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:07:20 ich2:1.4937
FO 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:07:20 ich3:1.4883175
EG 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:07:20 ich4:1.48894
PN 0 11:15:22 k_orders_demo_04 (GBPUSD,H1) 2013.03.14 00:07:20 ich5:1.797693134862316e+308
The value if ich5 - Chinkou - is reported as a very large no. & is not consistent with what I observe on the
plotted screen. Why? Also, ich1,2,3,4 - Tenkan, Kijun, Senkou Span A & B, although bear some correlation
to the observed screen plot, remain the same from tick to tick in the print out? Why should this be?
The following simple routine is what I'm working with:
Thanks for looking & would certainly appreciate any constructive suggestion or advise on this
trivial but troublesome issue.
Best Regards
Kishor