Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 326

 
mzk_3om6u:

Eh bien, chaque tick, de nouvelles informations passent, chaque tick le signal d'achat passe, mais le serveur essaie de se connecter à ce moment-là (pendant les ticks).


Alors, laissez faire, où est le mal ?

Mais en tout cas, il existe une fonction IsConnected() ;

 
Integer:


Alors, laissez-vous faire, où est le problème ?

Mais il y a aussi la fonction IsConnected() ;


la pire chose qui soit arrivée est que le commerce positif ne s'est pas ouvert :)

Mais je voudrais savoir ce qui s'est réellement passé - si le courtier a fait des bêtises ou s'il y a eu un problème de ma part.

 
mzk_3om6u:


1. eh bien, la pire chose qui soit arrivée est qu'un échange positif ne s'est pas ouvert :)

Mais je voudrais savoir ce qui s'est réellement passé - si le courtier a fait des bêtises ou s'il y a eu un problème de ma part.


1. C'est une sorte de phénomène normal et naturel.

Il n'y a aucun moyen de le savoir. Vous perdez souvent la connexion pendant quelques secondes.

 
Integer:


1. Il s'agit en quelque sorte d'un phénomène normal et naturel.

2. il n'y a aucun moyen de savoir. Très souvent, la connexion est perdue pendant quelques secondes.


En un mois de test avec ce courtier, c'est la première fois que cela se produit, bien que j'aie déjà remarqué 4 problèmes avec eux - il est probablement temps d'en chercher un autre :)

Merci pour vos réponses)

 
TarasBY:
Est-ce que vous regardez parfois ce que vous avez écrit ? !

Quelque chose me dit que "c'est ici que le chien se trouve" :


Merci. Je l'ai.
 
artmedia70:
Vous n'avez pas besoin de drapeau. Le drapeau peut être perdu dans des situations anormales. Il est préférable de vérifier - s'il y a une position ouverte et, si c'est le cas - d'aller plus loin.

Oh, je crois que je l'ai. J'ai compris la logique, alors voici ce que j'ai fait. Cependant, lorsque je le compile, j'obtiens une erreur ')'. - L'affectation attend D:\Alpari\experts\Sp.mq4 (160, 92). J'ai vérifié toutes les parenthèses dix fois - je ne trouve pas l'erreur. Une sorte de putain de poltergeist. artmedia70, si ça ne vous dérange pas de me dire où se trouve l'erreur.

extern double  Lots             = 0.1;
extern string Сomment           = "Pattern_1";
extern int TakeProfit           = 0;     
extern int StopLoss             = 0;   
extern int Step                 = 0;   

extern int BULevel              = 200;
extern int   NotBULevel         = 20;         // Уровень безубытка в пунктах

extern int Slippage             = 2; // проскальзывание 
extern int Magic                = 111;

int ticket, otype;
double TP, price;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
      if (Digits ==3 || Digits ==5) // для пятизначного брокера
         {
            TakeProfit *= 10;
            StopLoss *= 10;
            Slippage *= 10;
            Step *= 10;
         }
      return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   if (CountTrades()==0 && Open[1]>Close[1] && Open[2]<Close[2] && High[1]>High[2] && Low[1]<Low[2])  // продажа
   {
      ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"Pattern_1",111,0,Red);
      if (OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES))
      {
         TP=NormalizeDouble(Bid - TakeProfit * Point, Digits);
         OrderModify(ticket, OrderOpenPrice(),0,TP,0);
      }
   }
   else
   if (CountTrades()==0 && Open[1]<Close[1] && Open[2]>Close[2] && High[1]>High[2] && Low[1]<Low[2]) // покупка
    {
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Pattern_1",111,0,Blue);   
      if (OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES))
      {
         TP=NormalizeDouble(Ask + TakeProfit * Point, Digits);
         OrderModify(ticket, OrderOpenPrice(),0,TP,0);
      }
    }
   if (CountTrades()>0)
      {
      otype = FindLastOrderType();
      if (otype == OP_BUY)
         { // ценапоследнего ордера на покупку
         price = FindLastBayPrice();
         
         if ((Bid - price) / Point >= Step)
            {
               ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid,Slippage,0,0,"Pattern_1",111,0,Red);  
            }
         }
      else if (otype == OP_SELL)
         { // цена последнего ордера на продажу
         price = FindLastSellPrice()
         
          if ((price - Ask) / Point >= Step)
            {
               ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask,Slippage,0,0,"Pattern_1",111,0,Blue);  
            }
         }
      }
   
    
   return(0);
  }
     
 //+------------------------------------------------------------------+
int CountTrades() // количество открытых ордеров
   {
      int count=0;
      for(int i=OrdersTotal()-1; i>=0; i--) 
      {
         if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
         {
            if (OrderSymbol()==Symbol() && OrderMagicNumber()==111)
            {
               if (OrderType()==OP_BUY || OrderType()==OP_SELL)
               count++;
            }
         }
      }
    return(count);  
   }
 //+------------------------------------------------------------------+
int FindLastOrderType() // вычисляем тип последнего ордера
   {
      int oticket, ticketnumber=0, OType;
      for(int i=OrdersTotal()-1; i>=0; i--)   
      {
         if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
         {
            if (OrderSymbol()==Symbol() && OrderMagicNumber()==111)
            {
              oticket=OrderTicket();
              if (oticket > ticketnumber) 
              {
               ticketnumber = oticket;
               OType = OrderType(); // самый последний тикет
              }               
            }
         }
      }
    return(OType);    
   }
       
       
  //+------------------------------------------------------------------+
double FindLastBayPrice() // находим цену последнего ордера на покупку
   {
      int oticket, ticketnumber=0;
      double oprice;
      for(int i=OrdersTotal()-1; i>=0; i--)   
      {
         if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
         {
            if (OrderSymbol()==Symbol() && OrderMagicNumber()==111 && OrderType() = OP_BUY)
            {
              oticket=OrderTicket();
              if (oticket > ticketnumber) 
              {
               ticketnumber = oticket;
               oprice = OrderType(); // самый последний тикет
              }               
            }
         }
      }
    return(oprice);    
   }      
  //+------------------------------------------------------------------+
double FindLastSellPrice() // находим цену последнего ордера на продажу
   {
      int oticket, ticketnumber=0;
      double oprice;
      for(int i=OrdersTotal()-1; i>=0; i--)   
      {
         if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
         {
            if (OrderSymbol()==Symbol() && OrderMagicNumber()==111 && OrderType() = OP_SELL)
            {
              oticket=OrderTicket();
              if (oticket > ticketnumber) 
              {
               ticketnumber = oticket;
               oprice = OrderType(); // самый последний тикет
              }               
            }
         }
      }
    return(oprice);    
   }        

 //+------------------------------------------------------------------+

void BU()
{
   for(int a=0; a<OrdersTotal(); a++) 
  {
       if (OrderSelect(a, SELECT_BY_POS)) 
        {      
         if(OrderMagicNumber()!=111  || OrderSymbol()!=Symbol()) continue;
         if(OrderType()==OP_BUY) 
          {
           if(OrderOpenPrice()<=(Bid-BULevel*Point-NotBULevel*Point)&& OrderOpenPrice()>OrderStopLoss())// последнеее условие БУ + 20 пипсов
            {      
             OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+NotBULevel*Point,OrderTakeProfit(),0,Green);
            }
          }       
 
         if(OrderType() == OP_SELL) 
           {
            if(OrderOpenPrice()>=(Ask+BULevel*Point+NotBULevel*Point)&& (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss() == 0 ))// последнеее условие БУ + 20 пипсов
             {
              OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NotBULevel*Point,OrderTakeProfit(),0,Red);
             }
           } 
         }
   }
 return(0);
 }

 
 if (Digits ==3 || Digits ==3) // для пятизначного брокера
C'est un peu bizarre.
 
ALXIMIKS:
c'est unpeu bizarre.
Corrigé, ALXIMIKS, s'il vous plaît vérifiez les erreurs et la logique.
 
Vous devez lire les instructions avant l'installation - les 15 premières pages.
Dossiers :
kod.txt  7 kb
 

Veuillez me dire si cette fonction est écrite correctement.

double GetLastUpperFractal()
{
double LastUpperFractalPrice = 0 ;
for (int i = 0 ; i<=Bars ; i++)
{
double FractalUp = iFractals(Symbol(),PERIOD_M5,MODE_UPPER,i) ;
if (FractalUp != 0) LastUpperFractalPrice = FractalUp ;
}
retourner (LastUpperFractalPrice) ;
}
//+------------------------------------------------------------------+
double GetLastLowerFractal()
{
double LastLowerFractalPrice = 0 ;
for (int i = 0 ; i<=Bars ; i++)
{
double FractalDown = iFractals(Symbol(),PERIOD_M5,MODE_LOWER,i) ;
if (FractalDown != 0) LastLowerFractalPrice = FractalDown ;
}
retourner (LastLowerFractalPrice) ;
}