as inscribe shows,my ea is an trend strategy,I wanna it could increase position when profiting,but now it doesn't work like that.pls gurus check my code,and point out how to deal with the problem. I know the line" if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();" may stop the second position's open but I donn't know how to modify it.i am appreciation for guys help. |
- MQL4 Learning
- Position modifying and partial close
- pls help me with is code line fix
For others on the forum - interesting solution to the opening of a newbar in this code.
//---- go trading only for first tiks of new bar if(Volume[0]>1) return;
I thinik that all you have to do is change the magic number to get it to work as it used to as it trys to use only the profit makes to determine the number of lots it uses
I thinik that all you have to do is change the magic number to get it to work as it used to as it trys to use only the profit makes to determine the number of lots it uses
I am an newbie,could you show me how to deal with it?TKS!
One of the decisions to send order is
if (m1<m3-0.0003) { ticket1=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,5,Ask+105*Point,0,"SELL#1",MAGICMA,0,Red); return; }
But the program decides how many Lots to use with the function LotsOptimized()
//+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots; int orders=HistoryTotal(); // history orders total int losses=0; // number of losses orders without a break //---- select lot size lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/500.0,1); Print(MarketInfo(Symbol(), MODE_LOTSIZE)); Print(MarketInfo(Symbol(), MODE_MINLOT)); Print(MarketInfo(Symbol(), MODE_LOTSTEP)); Print(MarketInfo(Symbol(), MODE_MAXLOT)); //---- calculate number of losses orders without a break if(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; //---- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); //this is an smart technical design,but losses stands lossing profit,not money may cause problems. //modify them follow as:accountfreemargin()-orderprofit() } //---- return lot size if(lot<1) lot=1; return(lot); }
Which defaults to 1 if the lot size is less than 1 (Silly me did not spot that when it checks your order history it does not check for its magic number!)
However the above bit of code is where your problem lies. The logic of it (for the moment) confuses me.
I don't know what it is that you want the EA to do with the size of lots it uses when placeing order.
I also don't know what stratergy you want for increasing or decreasing the lot size of the orders which is what you must be asking to be solved.
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use