funktija dlja position paritet

 

Привет, форум!

кто мог бы помогать funktion Haписat kotoraja orders добавило бы

(controlliert) и заботится для order paritet.

Масса Buy=Buy, масса Sell=Sell, Pos_Dif=Buy-Sell.

Если бы Buy+ Sell>=max (максимально)-Nichewo ne delat

Если бы Pos_Dif == 0 Nichewo ne delat

Если бы Pos_Dif < 0 покупал тогда Buy

Если бы Pos_Dif > 0 покупал тогда Sell

С приветами

pansa

 
Функцию частичного закрытия?
 
LockAllOrders - частичное перекрытие
CloseLock - закрытие лока
void LockAllOrders(double PercentClose)
{
   double Digits_=MarketInfo(Symbol_,MODE_DIGITS);
   double LotBUY_GBPUSD=0.0;
   double LotBUY_EURUSD=0.0;
   double LotSELL_GBPUSD=0.0;
   double LotSELL_EURUSD=0.0;
   for (int k=OrdersTotal()-1;k>=0;k--)
   {
      //RefreshRates();
      if (OrderSelect(k,SELECT_BY_POS)==true&&OrderMagicNumber()==Magik)
      {
         int cmd=OrderType();
         string OrderSymbol_=OrderSymbol();
         if (cmd==OP_BUY)
         {
            if(OrderSymbol_==Symbol_)
            {
               LotBUY_EURUSD=LotBUY_EURUSD+OrderLots();
            }
         }
         if (cmd==OP_SELL)
         {
            if(OrderSymbol_==Symbol_)
            {
               LotSELL_EURUSD=LotSELL_EURUSD+OrderLots();
            }
         }
      }
   }
   int res=(-1);
   if(LotBUY_EURUSD>0)
   {
      while(res<0&&!IsStopped())
      {
         res=OrderSend(Symbol_,OP_SELL,NormalizeLots(LotBUY_EURUSD*PercentClose,MarketInfo(Symbol_,MODE_LOTSTEP)),NormalizeDouble(MarketInfo(Symbol_,MODE_BID),Digits_),3,0,0,NULL,(0-Magik));
         RefreshRates();
      }
      res=(-1);
   }
   if(LotSELL_EURUSD>0)
   {
      while(res<0&&!IsStopped())
      {
         res=OrderSend(Symbol_,OP_BUY,NormalizeLots(LotSELL_EURUSD*PercentClose,MarketInfo(Symbol_,MODE_LOTSTEP)),NormalizeDouble(MarketInfo(Symbol_,MODE_ASK),Digits_),3,0,0,NULL,(0-Magik));
         RefreshRates();
      }
   }
}
void CloseLock()
{
   while(true)
   {
      for(int i=OrdersTotal()-1;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS)==false)continue;
         if(OrderMagicNumber()==(0-Magik))
         {
            break;
         }
      }
      int i1=0;
      if(i>=0)
      {
         if(OrderMagicNumber()==(0-Magik))
         {
            int cmd=OrderType();
            int res=OrderTicket();
            string Symbol_=OrderSymbol();
            if(cmd==OP_BUY)
            {
               for(i1=OrdersTotal()-1;i1>=0;i1--)
               {
                  if(OrderSelect(i1,SELECT_BY_POS)==false)continue;
                  {
                     if(OrderMagicNumber()==Magik&&OrderType()==OP_SELL&&Symbol_==OrderSymbol())
                     {
                        if(OrderCloseBy(res,OrderTicket()))break;
                     }
                  }
               }
            }
            if(cmd==OP_SELL)
            {
               for(i1=OrdersTotal()-1;i1>=0;i1--)
               {
                  if(OrderSelect(i1,SELECT_BY_POS)==false)continue;
                  {
                     if(OrderMagicNumber()==Magik&&OrderType()==OP_BUY&&Symbol_==OrderSymbol())
                     {
                        if(OrderCloseBy(res,OrderTicket()))break;
                     }
                  }
               }
            }
         }
      }
      else
      {
         break;
      }
   }
}
 
sanyooooook:
Функцию частичного закрытия?


sanyooooook,spasibo!

Wy oshiblis nushno ne sakrytie a naoborot otkrytie-open Buy ili open Sell

po logike! Eto nushno pri bolshich dvishenijach kursa-dolivatj do pariteta!

Esli kurs idet naverch to ostajutsa toljko Sell positii.Poetomu nado dolivatj

Buy positions!

privet

pansa