포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 326

 
mzk_3om6u :

음, 매 틱, 새로운 정보가 전달되고, 매 틱마다 신호가 매수로 이동하지만, 서버는 그 순간에 로그인을 시도합니다.(틱 동안)


그럼 뭐가 그렇게 끔찍해?

하지만 IsConnected() 함수가 있습니다.

 
Integer :


그럼 뭐가 그렇게 끔찍해?

하지만 IsConnected() 함수가 있습니다.


글쎄, 일어난 최악의 일 - 긍정적 인 거래가 열리지 않았습니다 :)

그래서 저는 실제로 무슨 일이 일어났는지 알고 싶습니다. 중개인이 뭔가를 일으키거나 제 입장에서 문제가 발생한 것입니다.

 
mzk_3om6u :


1. 글쎄, 일어난 최악의 일 - 긍정적 인 거래가 열리지 않았습니다 :)

2. 그래서, 나는 실제로 무슨 일이 일어났는지 알고 싶습니다. 중개인이 무언가를 선동했거나 나에게 문제가 있었습니다.


1. 이것은 말 그대로 정상적이고 자연스러운 현상입니다.

2. 알 수 있는 방법이 없습니다. 매우 자주 몇 초 동안 연결이 끊어집니다.

 
Integer :


1. 이것은 말 그대로 정상적이고 자연스러운 현상입니다.

2. 알 수 있는 방법이 없습니다. 매우 자주 몇 초 동안 연결이 끊어집니다.


이 브로커에 대한 테스트의 한 달 동안, 이것은 처음으로 발생했습니다. 비록 이미 4개의 잼을 발견했지만 다른 하나를 찾아야 할 때인 것 같습니다. :)

답변 감사합니다!)

 
TarasBY :
당신이 쓴 것을 본 적이 있습니까?!

"여기 개가 뒤졌다"는 말이 있습니다.


파시브) 알겠습니다.
 
artmedia70 :
깃발이 필요하지 않습니다. 깃발은 비상 상황에서 분실될 수 있습니다. 열려 있는 위치가 있는지 확인하는 것이 좋으며, 그렇다면 추가로

아, 깨달은 것 같습니다. 나는 논리를 이해했다, 그것이 내가 얻은 것이다. 그러나 컴파일할 때 ')' 오류가 발생합니다. 할당 예상 D:\Àëïiaðè\experts\Sp.mq4 (160, 92). 모든 대괄호를 열 번 확인했는데 오류를 찾을 수 없습니다. 폴터가이스트는 일종의 괴물입니다. artmedia70 , 어렵지 않다면 어디 오류인지 알려주세요.

 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 ) // для пятизначного брокера
이상한 종류.
 
ALXIMIKS :
이상한 종류.
수정했습니다, ALXIMIKS , 보세요. 오류와 논리를 위해.
 
컴파일하도록 수정하고 555 빌드 mt4 편집기를 사용하면 문제를 빠르게 찾는 데 정말 도움이 됩니다. 설치하기 전에 지침을 읽으십시오 - 처음 15페이지.
파일:
kod.txt  7 kb
 

함수가 올바르게 작성되었는지 알려주십시오.

더블 GetLastUpperFractal()
{
이중 LastUpperFractalPrice = 0;
(int i = 0, i<=막대, i++)
{
이중 FractalUp = iFractals(Symbol(), PERIOD_M5 , MODE_UPPER, i);
if (FractalUp != 0) LastUpperFractalPrice = FractalUp;
}
반환(LastUpperFractalPrice);
}
//+----------------------------------------------- --------------------+
더블 GetLastLowerFractal()
{
이중 LastLowerFractalPrice = 0;
(int i = 0, i<=막대, i++)
{
이중 FractalDown = iFractals(Symbol(),PERIOD_M5,MODE_LOWER,i);
if (FractalDown != 0) LastLowerFractalPrice = FractalDown;
}
반환(LastLowerFractalPrice);
}

사유: