double Lots(double risk) { double lot; if(Auto_Lots){ double Min_Lot = MarketInfo(Symbol(), MODE_MINLOT); double Max_Lot = MarketInfo(Symbol(), MODE_MAXLOT); double lot_step= MarketInfo(Symbol(), MODE_LOTSTEP); lot=NormalizeDouble(AccountFreeMargin()*MaxRisk/100/1000,2); lot=NormalizeDouble(lot,2); lot=NormalizeDouble(lot/lot_step,0)*lot_step; if (lot < Min_Lot) lot = Min_Lot; if (lot > Max_Lot) lot = Max_Lot; } else lot=Lots; return (lot); }
void MoveTrailingStop() { bool select,modify; for(int cnt=0;cnt<OrdersTotal();cnt++) { select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber) { if(OrderType()==OP_BUY) { if((NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(mlow,Digits))||(OrderStopLoss()==0)) { modify=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(mlow,Digits),OrderTakeProfit(),0,Blue); } } else { if((NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(mhigh,Digits)))||(OrderStopLoss()==0)) { modify=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(mhigh,Digits),OrderTakeProfit(),0,Red); } } } } }
if(TrailingStop>0)MoveTrailingStop();
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;} if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*point;} OrderSend(Symbol(),OP_BUY,Lots(MaxRisk),NormalizeDouble(Ask,digits),Slippage*Q,SL,TP,"long",MagicNumber,0,Blue);
أدوات الموضوع | |
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
طلبي موجه لكل المبرمجين و خصوصا الاستاد سمير | SAMIRMFS | منتدى المؤشرات و الاكسبرتات | 5 | 23 - 12 - 2014 04:13 PM |
طلب تعديل على اكسبيرت / لاستاذ سمير | زياد99 | منتدى المؤشرات و الاكسبرتات | 16 | 23 - 02 - 2013 06:35 PM |