Discussion of article "Step-by-Step Guide to Writing an Expert Advisor in MQL5 for Beginners" - page 5

 

Hi Samuel,

Congrats for the article!

It's plain and simple for beginners! Just right to the point.

 

Best regards,

Bruno Dias

 
Could you give the final layout to see how the progressive steps have come together, thanks. 
 
With all the changes to the MQL5 programming an updated version of this step by step code is needed, if i copy this code it no longer compiles - is there a version with the latest changes  - many thanks.
 
michael sedgley:
With all the changes to the MQL5 programming an updated version of this step by step code is needed, if i copy this code it no longer compiles - is there a version with the latest changes  - many thanks.

Hello Michael,

Thanks for your comment. I will look into your suggestion and if any update to the codes are necessary, it will be made available soon.

 

why output error code :10030 ?

Files:
2.png  74 kb
 

help, Is anybody here ?


why output error code :10030 ?

 

First of all thanks for the article, It's helping me with getting started on mql5 programming.

I've tried your code and there's a bit of code on the OnInit() that I don't understand the purpose of it:

 

//--- Let us handle currency pairs with 5 or 3 digit prices instead of 4

   STP = StopLoss;

   TKP = TakeProfit;

   if(_Digits==5 || _Digits==3)

     {

      STP = STP*10;

      TKP = TKP*10;

     } 

 

This part modifies the values of take profit and stop loss pibs causing a difference between your input values and the ones really being used.

However, if I remove the two lines inside the if, then I often receive error 10016 (invalid stops) when sending the order to the server. The first attempt to place an order goes well and I get the 10009, but then most of the following times I get a 10016. I've debugged the EA, and all stop loses and take profits seem to be alright with the difference of being stop loss 30 or 300 and take profit 100 or 1000 pibs above or below the current price.

I cannot find the reason why the server gives me an error 10016 when the STP and TKP are not multiplied by 10.

Anyone can explain me why the error happens or the purpose of multiplying by 10 when  _Digits are 5 or 3?

 Thanks for your help. 

 
an you please guguqiaqia:

help, Is anybody here ?


why output error code :10030 ?

Hello,

Can you let us know how you get the error? 

 

eshelios.sr:

 


First of all thanks for the article, It's helping me with getting started on mql5 programming.

I've tried your code and there's a bit of code on the OnInit() that I don't understand the purpose of it:

 

//--- Let us handle currency pairs with 5 or 3 digit prices instead of 4

   STP = StopLoss;

   TKP = TakeProfit;

   if(_Digits==5 || _Digits==3)

     {

      STP = STP*10;

      TKP = TKP*10;

     } 

 

This part modifies the values of take profit and stop loss pibs causing a difference between your input values and the ones really being used.

However, if I remove the two lines inside the if, then I often receive error 10016 (invalid stops) when sending the order to the server. The first attempt to place an order goes well and I get the 10009, but then most of the following times I get a 10016. I've debugged the EA, and all stop loses and take profits seem to be alright with the difference of being stop loss 30 or 300 and take profit 100 or 1000 pibs above or below the current price.

I cannot find the reason why the server gives me an error 10016 when the STP and TKP are not multiplied by 10.

Anyone can explain me why the error happens or the purpose of multiplying by 10 when  _Digits are 5 or 3?

 Thanks for your help. 

Hello,

First from your explanation, when you removed those lines of code, you get an error and when you did not multiply the stoploss/takeprofit values by 10, you get an error? This I believe has explained that those lines of code are very important.

Back to the article, it explained those lines of code are necessary if you are using a chart with 5 decimal digits (0.XXXXX) or 3 decimal digits (0.XXX) currency pairs.

 So here we want to make sure that our EA works very well with all brokers. Digits or Digits() returns the number of decimal digits determining the accuracy of price of the current chart symbol. For a 5-digit or 3-digit price chart, we multiply both the Stop Loss and the Take Profit by 10. 

See examples below: 

5-Decimal Digits price 

 5 - Decimal Digits price

 3 - Decimal Digits price

3 - Decimal Digits price 

I hope this has answered your question.

 
Samuel Olowoyo:

Hello,

Can you let us know how you get the error? 

step 1: download your this sample code.

step 2: compile it in mql5 .

step 3:in mt5,open chart eurusd 1m, then ,click "auto trading"

step 4:set break symbol in code line 223,224 etc...

step 5:click start debugging button in mt5, then,show this error.

Reason: