why err = Position doesnt exist. - page 2

 
Alain Verleyen:
Please post all the relevant code if you want help.

solved it..

now another new err

tested on roboforex MT5 is okay

but on fxchoice have err - unsupported filling mode

so... 

 

 
//+------------------------------------------------------------------+
//| Checks if the specified filling mode is allowed                  |
//+------------------------------------------------------------------+
bool IsFillingTypeAllowed(string symbol,int fill_type)
  {
//--- Obtain the value of the property that describes allowed filling modes
   int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- Return true, if mode fill_type is allowed
   return((filling & fill_type)==fill_type);
  }
??
 
forextime8:

solved it..


Really ?

The forum is not just dedicated to help you, please post the solution, it could help other people.

 
Alain Verleyen:

Really ?

The forum is not just dedicated to help you, please post the solution, it could help other people.

here it is.

input bool           For_AllSymbol                                = false ;

 

   for (int i = PositionsTotal() - 1; i >= 0; i--)
   {
   if (For_AllSymbol || PositionGetSymbol(i) == Symbol())
   {
      ulong  Order_Ticket = OrderGetTicket(i);
      ulong  Position_Ticket = PositionGetTicket(i);
      string Position_Symbol = PositionGetString(POSITION_SYMBOL);
      int    Position_Digits = (int)SymbolInfoInteger(Position_Symbol, SYMBOL_DIGITS);
      ulong  Position_Magic = PositionGetInteger(POSITION_MAGIC);
      double Position_Volume = PositionGetDouble(POSITION_VOLUME);
      double Position_SL = PositionGetDouble(POSITION_SL);
      double Position_TP = PositionGetDouble(POSITION_TP);
      ENUM_POSITION_TYPE Position_Type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
      
      if (Position_Type == POSITION_TYPE_BUY)
      {
         if ((SymbolInfoDouble(_Symbol, SYMBOL_BID) - PositionGetDouble(POSITION_PRICE_OPEN)) > 0)
         {
            MqlTradeRequest request = {0};
            MqlTradeResult result = {0};
            ZeroMemory(request);
            ZeroMemory(result);
            request.action = TRADE_ACTION_DEAL;
            request.position = Position_Ticket;
            request.symbol = Position_Symbol;
            request.magic = Position_Magic;
            request.volume = Position_Volume;
            request.sl = 0;
            request.tp = 0;      
            request.comment = "Close Buy";
            request.deviation = 3;      
            request.type = ORDER_TYPE_SELL;
            request.price = SymbolInfoDouble(Position_Symbol, SYMBOL_BID);      
            if (!OrderSend(request, result))
            PrintFormat("ButtonCloseProfit : ", GetLastError());        
            else PrintFormat("ButtonCloseProfit : ", PositionGetDouble(POSITION_PRICE_CURRENT));
         }
      }
      
      if (Position_Type == POSITION_TYPE_SELL)
      {
         if((PositionGetDouble(POSITION_PRICE_OPEN) - SymbolInfoDouble(_Symbol, SYMBOL_ASK)) > 0)
         {
            MqlTradeRequest request = {0};
            MqlTradeResult result = {0};
            ZeroMemory(request);
            ZeroMemory(result);
            request.action = TRADE_ACTION_DEAL;
            request.position = Position_Ticket;
            request.symbol = Position_Symbol;
            request.magic = Position_Magic;
            request.volume = Position_Volume;
            request.sl = 0;
            request.tp = 0;      
            request.comment = "Close Sell";
            request.deviation = 3;      
            request.type = ORDER_TYPE_BUY;
            request.price = SymbolInfoDouble(Position_Symbol, SYMBOL_ASK);      
            if (!OrderSend(request, result))
            PrintFormat("ButtonCloseProfit : ", GetLastError());        
            else PrintFormat("ButtonCloseProfit : ", PositionGetDouble(POSITION_PRICE_CURRENT));
         }
      }
   }
   }
Reason: