Expert Advisor Programming by Andrew R. Young
Expert Advisor Programming by Andrew R. Young
Expert Advisor Programming by Andrew R. Young
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Appendix B<br />
// Lot size calculation<br />
if(DynamicLotSize == true)<br />
{<br />
double RiskAmount = AccountEquity() * (EquityPercent / 100);<br />
double TickValue = MarketInfo(Symbol(),MODE_TICKVALUE);<br />
if(Point == 0.001 || Point == 0.00001) TickValue *= 10;<br />
double CalcLots = (RiskAmount / StopLoss) / TickValue;<br />
double LotSize = CalcLots;<br />
}<br />
else LotSize = FixedLotSize;<br />
// Lot size verification<br />
if(LotSize < MarketInfo(Symbol(),MODE_MINLOT))<br />
{<br />
LotSize = MarketInfo(Symbol(),MODE_MINLOT);<br />
}<br />
else if(LotSize > MarketInfo(Symbol(),MODE_MAXLOT))<br />
{<br />
LotSize = MarketInfo(Symbol(),MODE_MAXLOT);<br />
}<br />
if(MarketInfo(Symbol(),MODE_LOTSTEP) == 0.1)<br />
{<br />
LotSize = NormalizeDouble(LotSize,1);<br />
}<br />
else LotSize = NormalizeDouble(LotSize,2);<br />
// Buy Order<br />
if(FastMA > SlowMA && BuyTicket == 0)<br />
{<br />
// Close Order<br />
OrderSelect(SellTicket,SELECT_BY_TICKET);<br />
if(OrderCloseTime() == 0 && SellTicket > 0)<br />
{<br />
double CloseLots = OrderLots();<br />
while(IsTradeContextBusy()) Sleep(10);<br />
RefreshRates();<br />
double ClosePrice = Ask;<br />
bool Closed = OrderClose(SellTicket,CloseLots,ClosePrice,UseSlippage,Red);<br />
// Error handling<br />
if(Closed == false)<br />
{<br />
ErrorCode = GetLastError();<br />
string ErrDesc = ErrorDescription(ErrorCode);<br />
161