Download MetaTrader 5

what should I modify to tie be counted as lost?

To add comments, please log in or register
Do you know that MQL5 can create custom graphical tools?
David Araujo Magalhaes
218
David Araujo Magalhaes 2015.06.13 05:50 
int SetOrder(int type)
{
  double price = 0;
  color col = clrNONE;
  if (type == OP_BUY) { price = Ask; col = clrBlue; }
  if (type == OP_SELL) { price = Bid; col = clrRed; }
  double lot = Invest;
  if (Martingale)
  {
    int lossCount = GetLossCount(); if (lossCount > MaxMartingaleLevels) lossCount = MaxMartingaleLevels;
    lot = NormalizeDouble(MathPow(MartingaleMultiplier, lossCount)*Invest, InvestDecimalPoints);
    if (NormalizeDouble(lot, 2)>NormalizeDouble(MaxInvestment, InvestDecimalPoints)) lot = MaxInvestment;
    if (lossCount > 0) GlobalVariableSet(gbl+"Martingale", 1);
    else GlobalVariableSet(gbl+"Martingale", 0);
  }
  else GlobalVariableSet(gbl+"Martingale", 0);
  string com = "BO exp: "+IntegerToString(expiry);
  int ticket = -1;
  if (NormalizeDouble(lot, 2) > NormalizeDouble(SplitInvestIfMoreThan, 2))
  {
    int count = 0, retries = 0;
    while (count < 2 && retries < 10)
    {
      if (IsTradeContextBusy()) { Sleep(200); continue; }
      RefreshRates();
      if (type == OP_BUY) { price = Ask; col = clrBlue; }
      if (type == OP_SELL) { price = Bid; col = clrRed; }
      if (count == 0) ticket = OrderSend(Symbol(), type, SplitInvestIfMoreThan, price, 0, 0, 0, com, MagicNumber, 0, col);
      else ticket = OrderSend(Symbol(), type, MathMin(lot-SplitInvestIfMoreThan, SplitInvestIfMoreThan), price, 0, 0, 0, com, MagicNumber, 0, col);
      if (count == 0 && ticket != -1) { GlobalVariableSet(gbl+"LastEntry1", ticket); count = 1; }
      else if (count == 1 && ticket != -1) { GlobalVariableSet(gbl+"LastEntry2", ticket); count = 2; }
      retries ++;
    }
  }
  else
  {
    ticket = OrderSend(Symbol(), type, lot, price, 0, 0, 0, com, MagicNumber, 0, col);
    if (ticket != -1) GlobalVariableSet(gbl+"LastEntry1", ticket);
  }
  int err = GetLastError();
  if (ticket == -1 && err > 0)
    Print("err=", IntegerToString(err), ", type=" + IntegerToString(type), ", price=", DoubleToStr(price, _Digits), ", lot=", DoubleToStr(lot, InvestDecimalPoints), ", comment=", com, ", ", ErrorDescription(err));
  else
  {
    GlobalVariableSet(gbl+"LastEntry", ticket);
    string file = "TmaBBBinary_" + Symbol() + "_" + IntegerToString(Period()) + "_" + IntegerToString(TimeCurrent()) + ".png";
    if (MakeScreenshot) WindowScreenShot(file, 800, 600);
  }
  return (ticket);
}
//+------------------------------------------------------------------+
int GetLossCount()
{
  int count = 0;
  for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
      {
        if (StringFind(OrderComment(), "/LOSS/")!=-1) count++; else break;
      }
  return (count);
}
//+------------------------------------------------------------------+
int DoesSignalCatched(int type, datetime from)
{
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == type)
        return (OrderTicket());
  for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == type && OrderOpenTime() >= from)
        return (OrderTicket());
  return (-1);

}

 

 

Thanks!

 Best Regards! 

data46
27
data46 2015.06.13 07:02  
int SetOrder(int type)
{
  double price = 0;
  color col = clrNONE;
  if (type == OP_BUY) { price = Ask; col = clrBlue; }
  if (type == OP_SELL) { price = Bid; col = clrRed; }
  double lot = Invest;
  if (Martingale)
  {
    int lossCount = GetLossCount(); if (lossCount > MaxMartingaleLevels) lossCount = MaxMartingaleLevels;
    lot = NormalizeDouble(MathPow(MartingaleMultiplier, lossCount)*Invest, InvestDecimalPoints);
    if (NormalizeDouble(lot, 2)>NormalizeDouble(MaxInvestment, InvestDecimalPoints)) lot = MaxInvestment;
    if (lossCount > 0) GlobalVariableSet(gbl+"Martingale", 1);
    else GlobalVariableSet(gbl+"Martingale", 0);
  }
  else GlobalVariableSet(gbl+"Martingale", 0);
  string com = "BO exp: "+IntegerToString(expiry);
  int ticket = -1;
  if (NormalizeDouble(lot, 2) > NormalizeDouble(SplitInvestIfMoreThan, 2))
  {
    int count = 0, retries = 0;
    while (count < 2 && retries < 10)
    {
      if (IsTradeContextBusy()) { Sleep(200); continue; }
      RefreshRates();
      if (type == OP_BUY) { price = Ask; col = clrBlue; }
      if (type == OP_SELL) { price = Bid; col = clrRed; }
      if (count == 0) ticket = OrderSend(Symbol(), type, SplitInvestIfMoreThan, price, 0, 0, 0, com, MagicNumber, 0, col);
      else ticket = OrderSend(Symbol(), type, MathMin(lot-SplitInvestIfMoreThan, SplitInvestIfMoreThan), price, 0, 0, 0, com, MagicNumber, 0, col);
      if (count == 0 && ticket != -1) { GlobalVariableSet(gbl+"LastEntry1", ticket); count = 1; }
      else if (count == 1 && ticket != -1) { GlobalVariableSet(gbl+"LastEntry2", ticket); count = 2; }
      retries ++;
    }
  }
  else
  {
    ticket = OrderSend(Symbol(), type, lot, price, 0, 0, 0, com, MagicNumber, 0, col);
    if (ticket != -1) GlobalVariableSet(gbl+"LastEntry1", ticket);
  }
  int err = GetLastError();
  if (ticket == -1 && err > 0)
    Print("err=", IntegerToString(err), ", type=" + IntegerToString(type), ", price=", DoubleToStr(price, _Digits), ", lot=", DoubleToStr(lot, InvestDecimalPoints), ", comment=", com, ", ", ErrorDescription(err));
  else
  {
    GlobalVariableSet(gbl+"LastEntry", ticket);
    string file = "TmaBBBinary_" + Symbol() + "_" + IntegerToString(Period()) + "_" + IntegerToString(TimeCurrent()) + ".png";
    if (MakeScreenshot) WindowScreenShot(file, 800, 600);
  }
  return (ticket);
}
//+------------------------------------------------------------------+
int GetLossCount()
{
  int count = 0;
  for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
      {
        if (StringFind(OrderComment(), "/LOSS/")!=-1) count++; else break;
      }
  return (count);
}
//+------------------------------------------------------------------+
int DoesSignalCatched(int type, datetime from)
{
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == type)
        return (OrderTicket());
  for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == type && OrderOpenTime() >= from)
        return (OrderTicket());
  return (-1);
}

Click the [SRC] button when posting code.

I don't understand the question; its brevity is obscure to say the least.

To add comments, please log in or register