Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 326

 
mzk_3om6u :

Eh, her tik, yeni bilgi geçer, her tik bir sinyal satın almaya gider ama o anda server giriş yapmaya çalışıyor.(tikler sırasında)


Peki o zaman, bunda bu kadar korkunç olan ne?

Ama bir şey varsa, IsConnected();

 
Integer :


Peki o zaman, bunda bu kadar korkunç olan ne?

Ama bir şey varsa, IsConnected();


Eh, olan en kötü şey - olumlu bir anlaşma açılmadı :)

Ve böylece, gerçekte ne olduğunu bilmek istiyorum - komisyoncu bir şeyi karıştırıyor veya benim açımdan bir sorun var.

 
mzk_3om6u :


1. peki, olan en kötü şey - olumlu bir anlaşma açılmadı :)

2. Ve böylece, gerçekte ne olduğunu bilmek istiyorum - komisyoncu bir şeyi karıştırıyor veya benim açımdan bir sorun var.


1. Bu, deyim yerindeyse normal, doğal bir fenomendir.

2. Öğrenmenin bir yolu yok. Çoğu zaman bağlantı birkaç saniyeliğine kesilir.

 
Integer :


1. Bu, deyim yerindeyse normal, doğal bir fenomendir.

2. Öğrenmenin bir yolu yok. Çoğu zaman bağlantı birkaç saniyeliğine kesilir.


Bu komisyoncu üzerinde bir aylık test için, bu ilk kez oldu, ancak arkalarında 4 pervaz fark ettim - görünüşe göre başka bir tane aramanın zamanı geldi :)

Cevaplar için teşekkürler!)

 
TarasBY :
Ne yazdığını hiç izledin mi?!

Bir şey bana "burada köpeğin altını üstüne getirdiğini" söylüyor:


Pasib) Anlaşıldı.
 
artmedia70 :
Bayrağa ihtiyacın yok. Bayrak acil durumlarda kaybolabilir. Açık bir pozisyon olup olmadığını kontrol etmek daha iyidir ve eğer öyleyse, daha fazla

Oh, bir şekilde anladım. Mantığını anladım, anladığım bu. Ancak, derleme sırasında ')' - atama bekleniyor D:\Àëïïàðè\experts\Sp.mq4 (160, 92) hatasını veriyor. Tüm parantezleri on kez kontrol ettim - hatayı bulamıyorum. Poltergeist bir tür ucubedir. artmedia70 , zor değilse hatanın nerede olduğunu söyleyin.

 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 ) // для пятизначного брокера
biraz tuhaf.
 
ALXIMIKS :
biraz tuhaf.
Düzeltildi, ALXIMIKS , bak. hatalar ve mantık için.
 
derlemek için düzeltildi - ve 555 build mt4 düzenleyicisini kullanın - sorunları hızlı bir şekilde bulmaya gerçekten yardımcı olur. sadece kurulumdan önce talimatları okuyun - ilk 15 sayfa.
Dosyalar:
kod.txt  7 kb
 

Lütfen işlevlerin doğru yazılıp yazılmadığını bana bildirin.

çift GetLastUpperFractal()
{
double LastUpperFractalPrice = 0;
for (int i = 0; i<=Barlar; i++)
{
double FractalUp = iFractals(Symbol(), PERIOD_M5 ,MODE_UPPER,i);
if (FractalUp != 0) LastUpperFractalPrice = FractalUp;
}
dönüş(LastUpperFractalPrice);
}
//+------------------------------------------- --------------------+
çift GetLastLowerFractal()
{
double LastLowerFractalPrice = 0;
for (int i = 0; i<=Barlar; i++)
{
double FractalDown = iFractals(Symbol(),PERIOD_M5,MODE_LOWER,i);
if (FractalDown != 0) LastLowerFractalPrice = FractalDown;
}
dönüş(LastLowerFractalPrice);
}