MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 726

 
Igor Petrov :

정말 감사합니다 !!!

알려주세요, 어드바이저를 테스트 할 때 이것을(CHARTEVENT_CLICK) 사용할 수 있습니까?
 
Yuriy Vins :
알려주세요, 어드바이저를 테스트 할 때 이것을(CHARTEVENT_CLICK) 사용할 수 있습니까?

아아, 아니.

 
ukrop1203 :

"History Center" 메뉴의 MetaQuotes Software Corp에서 데이터를 다운로드했는데, 여기 브로커의 데이터가 있습니다.

터미널이 다운로드 한 사람은 거기에서 MT4로 가져옵니다. 더 정확하고 가장 가능성이 높습니다. 로딩 당시의 계정이 거기에서 로그인되어 스토리를 가져옵니다.

 
Vladimir Baskakov :
무슨 얘기를 하는 건가요?

당신과 같은 사람들이 판매자의 지위를 박탈당해야한다는 사실에 대해. 하수도의 견습생에게 가십시오.

 
Andrei Novichkov :

당신과 같은 사람들이 판매자의 지위를 박탈당해야한다는 사실에 대해. 하수도의 견습생에게 가십시오.

좋은 하루 보내세요
 

여보세요,

어드바이저에 주문 마감 버튼을 넣고 터미널의 모든 주문을 마감합니다. 그리고 현재 차트에서만 필요합니다. 도와줘, 플리즈

 //----------------------------------------------------------------------
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
  {
//---            
   if (sparam== "CloseButton" )
      {
      CloseAllOpenPositions(MaxSlippage); 
       ObjectSetInteger ( 0 , "CloseButton" , OBJPROP_STATE , false );    
      }   
       if (sparam== "CloseBuy" )
      {
      CloseAllBuy(MaxSlippage); 
       ObjectSetInteger ( 0 , "CloseBuy" , OBJPROP_STATE , false );    
      }         
         if (sparam== "CloseSell" )
      {
      CloseAllSell(MaxSlippage); 
       ObjectSetInteger ( 0 , "CloseSell" , OBJPROP_STATE , false );    
      }         
//---      
  }
  
//+------------------------------------------------------------------+
void CloseAllOpenPositions( int intMaxSlippage)
  {
   bool checkOrderClose = true ;        
   int index = OrdersTotal ()- 1 ;   
   while (index >= 0 && OrderSelect (index, SELECT_BY_POS , MODE_TRADES )== true )
      {
         
       if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
         {         
         checkOrderClose = OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), MaxSlippage, CLR_NONE); 
         
         if (checkOrderClose == false )
            {
             int errorCode = GetLastError ();
            
             if (errorCode == 1 || errorCode == 2 || errorCode == 5 || errorCode == 6 || errorCode == 64 || errorCode == 65 || errorCode == 132 || errorCode == 133 || errorCode == 139 ) break ;
             else continue ;        
            }          
         }           
      index--;
     }     
  }
   //----------------------------------------------------------------------------
 
Carcass77 :

여보세요,

어드바이저에 주문 마감 버튼을 놓으면 터미널의 모든 주문이 마감됩니다. 그리고 현재 차트에서만 필요합니다. 도와줘, 플리즈

닫기 기능 교체

 //+------------------------------------------------------------------+
void CloseAllOpenPositions( int intMaxSlippage)
  {
   bool checkOrderClose= true ;
   int index= OrdersTotal ()- 1 ;
   while (index>= 0 && OrderSelect (index, SELECT_BY_POS , MODE_TRADES )== true )
     {
       if ( OrderSymbol ()== Symbol ())   //Добавил   
        {

         if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
           {
            checkOrderClose= OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (),intMaxSlippage,CLR_NONE);

             if (checkOrderClose== false )
              {
               int errorCode= GetLastError ();

               if (errorCode== 1 || errorCode== 2 || errorCode== 5 || errorCode== 6 || errorCode== 64 || errorCode== 65 || errorCode== 132 || 
                errorCode== 133 ||errorCode== 139 ) break ;
               else continue ;
              }
           }

        }
      index--;
     }
  }
//+------------------------------------------------------------------+
 
Alekseu Fedotov :

닫기 기능 교체

벌었다. 내 마음의 바닥에서 감사합니다

 
또한 각 거래를 스테핑하기 위한 승수 기능을 추가하고 싶었습니다. 말씀해 주시겠어요?
 
Carcass77 :
또한 각 거래를 스테핑하기 위한 승수 기능을 추가하고 싶었습니다. 말씀해 주시겠어요?

이미 열려 있는 주문의 최대 로트에 대해 새 주문의 로트를 늘리는 것에 대해 이야기하는 경우 주문을 계산할 때 주문 로트의 최대 값을 기억하십시오

다음과 같이 다소:

 //_______________________________________________________________________
//возвращает суммарное кол-во открытых рыночных ордеров, в переменных
// lotmaxbuy_ и lotmaxsell_ вернет максимальные лоты по типам ордеров
int NumberOfOrders( int magic_, double &lotmaxbuy_, double &lotmaxsell_)
  {
   int i,ot,buy_= 0 ,sell_= 0 ,k= OrdersTotal ();
   lotmaxbuy_= 0.0 ; lotmaxsell_= 0.0 ;
   for (i= 0 ; i<k; i++)
     {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
        {
         ot= OrderType ();
         if (( OrderMagicNumber ()==magic_) && ( OrderSymbol ()== _Symbol ))
           {
             if (ot== OP_BUY ) { buy_++;  lotmaxbuy_  = fmax (lotmaxbuy_, OrderLots ());  }
             if (ot== OP_SELL ){ sell_++; lotmaxsell_ = fmax (lotmaxsell_, OrderLots ()); }
           }
        }
     }
   return (buy_+sell_);
  }
//+------------------------------------------------------------------+