https://www.mql5.com/en/articles/1481
Good luck!
Someone is able to resolve the problem please?
Thanks
We see what you are trying to do in terms of splitting your order into chunks of max lotsize 80. Incidentally, I'd code this in a much more efficient manner using a simple loop.
However, we need more info in order to check your logic - you haven't actually explained how you arrive at that lotsize, by counting existing orders etc.
CB
We see what you are trying to do in terms of splitting your order into chunks of max lotsize 80. Incidentally, I'd code this in a much more efficient manner using a simple loop.
However, we need more info in order to check your logic - you haven't actually explained how you arrive at that lotsize, by counting existing orders etc.
CB
Hi cloudbreaker,
thanks for answer
As I told before i don't understand well mq4 code; I wrote something but it may be wrong.
The logic is simple: (multiplicator = 2) so the ea will open trade in this way:
0,01 | 0,02 | 0,04 | 0,08 | 0,16 | 0,32 | 0,64 | 1,28 | 2,56 | 5,12 | 10,24 | 20,48 | 40,96 | 81,92 | 163,84 | 327,68 |
or
0,03 | 0,06 | 0,12 | 0,24 | 0,48 | 0,96 | 1,92 | 3,84 | 7,68 | 15,36 | 30,72 | 61,44 | 122,88 | 245,76 | 491,52 | 983,04 |
or
0,05 | 0,1 | 0,2 | 0,4 | 0,8 | 1,60 | 3,20 | 6,4 | 12,8 | 25,6 | 51,2 | 102,4 | 204,8 | 409,6 | 819,2 | 1638,4 |
or
0,1 | 0,2 | 0,4 | 0,8 | 1,6 | 3,20 | 6,40 | 12,8 | 25,6 | 51,2 | 102,4 | 204,8 | 409,6 | 819,2 | 1638,4 | 3276,8 |
or
0,15 | 0,3 | 0,6 | 1,2 | 2,4 | 4,8 | 9,6 | 19,2 | 38,4 | 76,8 | 153,6 | 307,2 | 614,4 | 1228,8 | 2457,6 | 4915,2 |
or
0,3 | 0,6 | 1,2 | 2,4 | 4,8 | 9,6 | 19,2 | 38,4 | 76,8 | 153,6 | 307,2 | 614,4 | 1228,8 | 2457,6 | 4915,2 | 9830,4 |
it depends by the starting lot;
When the ea required a lotsize bigger than 80 lots it would just split the order in two or more orders (only because i have the limit set of my broker)
Existing order is no problem.
The ea i have posted is locked at the positions you see on the image I don't understand why.... anyway if you can compile tha ea with a code more efficet i will be glad
Thanks
/... #define maxLot=80; // or double maxLot = MarketInfo( Symbol(), MODE_MAXLOT ); while(mylotsi >= 0.01) { double lot=MathMin(mylotsi, maxLot) if(!OrderSend(...lot...)) { Print("OrderSend failed"); break; } mylotsi -= lot; refreshRates(); // Bid may change between sendsIf you'll rather have 60+60+60 than 80+80+20
//... #define maxLot=80; // or double maxLot = MarketInfo( Symbol(), MODE_MAXLOT ); for(int count=MathCeil(mylotsi/maxLot); count>0; count--) { double lot=mylotsi/count; if(!OrderSend(...lot...)) { Print("OrderSend failed"); break; } mylotsi -= lot; refreshRates(); // Bid may change between sends }
Thanks WHRoeder,
can you rebuild the ea with the modify please?
(i'm unable to insert it on the code)
please....... THANKS
try the following simple WHRoeder's loop insteed yuor long code:
#define maxLot=80; // or double maxLot = MarketInfo( Symbol(), MODE_MAXLOT );
while(mylotsi >= 0.01) {
double lot=MathMin(mylotsi, maxLot)
if(!OrderSend(Symbol(),OP_BUY,lot,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor)) {
Print("OrderSend failed");
break;
}
mylotsi -= lot;
}
}
try the following simple WHRoeder's loop insteed yuor long code:
#define maxLot=80; // or double maxLot = MarketInfo( Symbol(), MODE_MAXLOT );
while(mylotsi >= 0.01) {
double lot=MathMin(mylotsi, maxLot)
if(!OrderSend(Symbol(),OP_BUY,lot,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor)) {
Print("OrderSend failed");
break;
}
mylotsi -= lot;
}
}
Hi BoDar and thanks
Can you insert the code on the ea please? ..or someone is able to do this, please?
I'm unable to do it :(
Thank you
if you want to send the ea coded by email: x823x@email.it, or post it here.
Have you ANY willingness to learn?
CB
- 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 to all!
My name's Luca;
I've got a big problem;
HMA EA works well but I have to put it on a CENT account;
My cent account has a limit -broker limit- of 100 lots for each order, in cent account 100 lots = 1 standard lot = 100000 usd
So can you change in "hma ea.mq4" the maximun lot for each order to 80 lots and if the order need to be bigger, the ea will place an order for the difference?
Someone is able to do that?
ex.1 for order of 153,6 lots it will place:
1 order of 8 lots
and 1 order of 73,6 lots
ex.2 for order of 307,2 lots it will place:
3 orders of 80 lots
and 1 order of 67,20 lots
ex.3 for order of 1024 lots it will place:
12 orders of 80 lots
and 1 order of 64 lots
ex.4 for order of 204,80 lots it will place:
2 orders of 80 lots
and 1 order of 44,80 lots
As you can see this is the problem:
Also starting from 0.03 lots the problem is the same:
I have made a lot of attempts, but without results,
I don't understand the code, but i've tried to change it as below:
void OpenMarketOrders(){
int cnt=0;
if (myOrderType==1 && ContinueOpening) {
if ((Bid-LastPrice)>=Pips*pt || OpenOrders<1) {
SellPrice=Bid;
LastPrice=0;
if (iTakeProfit==0) { tp=0; }
else { tp=SellPrice-iTakeProfit*pt; }
if (StopLoss==0) { sl=0; }
else { sl=SellPrice+StopLoss*pt; }
if (OpenOrders!=0) {
mylotsi=lotsi;
for(cnt=0;cnt<OpenOrders;cnt++){
if (MaxTrades>12) { mylotsi=NormalizeDouble(mylotsi*multiply,2); }
else { mylotsi=NormalizeDouble(mylotsi*multiply,2); }
}
} else { mylotsi=lotsi; }
if(mylotsi<=80)OrderSend(Symbol(),OP_BUY,mylotsi,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
if(mylotsi>80 && mylotsi<=160){
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,NormalizeDouble(mylotsi-80,1),NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
}
if(mylotsi>160 && mylotsi<=240){
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,NormalizeDouble(mylotsi-160,1),NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
}
if(mylotsi>240 && mylotsi<=320){
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,NormalizeDouble(mylotsi-240,1),NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
}
if(mylotsi>320 && mylotsi<400){
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,NormalizeDouble(mylotsi-320,1),NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
}
if(mylotsi>=400 && mylotsi<480){
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,NormalizeDouble(mylotsi-400,1),NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
}
if(mylotsi>=480 && mylotsi<560){
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,NormalizeDouble(mylotsi-480,1),NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
}
if(mylotsi>=560 && mylotsi<640){
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,NormalizeDouble(mylotsi-560.2,1),NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
}
if(mylotsi>=640 && mylotsi<720){
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,NormalizeDouble(mylotsi-640.2,1),NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
}
if(mylotsi>=720 && mylotsi<800){
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,80,NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
OrderSend(Symbol(),OP_BUY,NormalizeDouble(mylotsi-720,1),NormalizeDouble(BuyPrice,Digits),slippage*mt,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,ArrowsColor);
}
return(0);
}
}
The result is below:
Someone can Help me please?
My email is:
x823x@email.it
Thanks :)