간단한 질문 - 페이지 2

 
Ais :

"Dist" 값을 확인하십시오

확인하다? 어떻게? MQL4 책에서 코드(거리 변수가 있는 부분)를 복사했습니다.

 int start ( )                                      // Special function 'start'
   {
   string Symb = Symbol ( ) ;                          // Symbol
   double Dist = 1000000.0 ;                        // Presetting
   int Real_Order = - 1 ;                            // No market orders yet
   double Win_Price = WindowPriceOnDropped ( ) ;      // The script is dropped here
//-------------------------------------------------------------------------------- 2 --
   for ( int i = 1 ; i < = OrdersTotal ( ) ; i + + )            // Order searching cycle
     {
       if ( OrderSelect ( i - 1 , SELECT_BY_POS ) = = true ) // If the next is available
         {                                        // Order analysis:
         //----------------------------------------------------------------------- 3 --
         if ( OrderSymbol ( ) ! = Symb ) continue ;      // Symbol is not ours
         int Tip = OrderType ( ) ;                    // Order type
         if ( Tip > 1 ) continue ;                    // Pending order  
         //----------------------------------------------------------------------- 4 --
         double Price = OrderOpenPrice ( ) ;          // Order price
         if ( NormalizeDouble ( MathAbs ( Price - Win_Price ) , Digits ) < //Selection
             NormalizeDouble ( Dist , Digits ) )        // of the closest order       
           {
            Dist = MathAbs ( Price - Win_Price ) ;        // New value
            Real_Order = Tip ;                      // Market order available
             int Ticket = OrderTicket ( ) ;            // Order ticket
             double Lot = OrderLots ( ) ;              // Amount of lots
           }
         //----------------------------------------------------------------------- 5 --
         }                                        //End of order analysis
     }                                            //End of order searching
//-------------------------------------------------------------------------------- 6 --
   while ( true )                                    // Order closing cycle
     {
       if ( Real_Order = = - 1 )                        // If no market orders available
         {
         Alert ( "For " , Symb , " no market orders available" ) ;
         break ;                                  // Exit closing cycle        
         }
       //-------------------------------------------------------------------------- 7 --
       switch ( Real_Order )                          // By order type
         {
         case 0 : double Price_Cls = Bid ;            // Order Buy
             string Text = "Buy " ;                  // Text for Buy
             break ;                                // Из switch
         case 1 : Price_Cls = Ask ;                  // Order Sell
            Text = "Sell " ;                        // Text for Sell
         }
       Alert ( "Attempt to close " , Text , " " , Ticket , ". Awaiting response.." ) ;
       bool Ans = OrderClose ( Ticket , Lot , Price_Cls , 2 ) ; // Order closing 
see also: https://book.mql4.com/trading/orderclose
 
Ais :

1. "Dist"의 초기 값이 올바른지 확인하십시오.

2. 주기 시작 시 "Dist" 값을 확인하기 위해 경고 삽입: "Alert ( " Dist = ", Dist ) ; "

변수 "dist"를 사용하지 않고 올바른 순서를 선택하는 방법이 있습니까?

 
Ais :

답변 1

샘플의 ">" 및 "<" 기호는 동일한 표현식에 대해 다른 방향입니다.

closeorder.mq4 의 22행과 이전 샘플의 6행을 참조하십시오.

제 생각에는 두 번째 샘플에서는 실수가 틀림없다고 생각합니다... 어떻게 생각하세요?

 
Ais :

답변 2

"올바른 순서"의 의미에 따라 다릅니다.

오픈 가격이 더 낮은 OP_BUY 주문을 선택(및 마감)해야 하며 이 선택은 2개의 주문이 있을 때 시작해야 합니다. 난 너무 혼란 스러워요...

 
Ais :

평범한 일

그래서 내가 뭘 잘못하고 있니? 오픈프라이스가 낮은 OP_BUY를 어떻게 선택하시겠습니까? "Dist" 없이도 시도했습니다 ...


 if ( CheckFirstOP ( OP_BUY ) > 1 ) {       
       for ( int i = OrdersTotal ( ) - 1 ; i > = 0 ; i - - ) {
           OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) ;
           if ( OrderSymbol ( ) ! = Symbol ( ) | | OrderMagicNumber ( ) ! = MagicNumber | | OrderType ( ) ! = OP_BUY ) continue ;      
           double Price = OrderOpenPrice ( ) ;
           if ( Price < Price ) , Digits ) {                                             
             int Ticket = OrderTicket ( ) ;            
             double Lot = OrderLots ( ) ;                           
             OrderClose ( Ticket , Lot , OrderClosePrice ( ) , 3 ) ; 
         }     
       }    
   } 
without any results
 

" if (Price < Price), Digits) " 행의 의도는 무엇입니까 ??

내가 보기엔 미쳤어.


CB

 
cloudbreaker :

" if (Price < Price), Digits) " 행의 의도는 무엇입니까 ??

내가 보기엔 미쳤어.

그 뿐만이 아닙니다.

왼쪽 대괄호가 누락된 상태에서 어떻게 오류 없이 컴파일할 수 있습니까?

나는 이 코드를 잡아먹는 헛된 인사이트와 완전한 바보, 그리고 완전한 와시쿠스에 지쳤습니다.

 
Ais :

모든 인간은 실수를 한다

if (a_human_made_a_mistake==true)

{human_learn_next_lesson();}

또 다른

{reincarnate_as_plant=true;}

 
meikel :

{human_learn_next_lesson();}

MT5만 있었다면. 그런 다음 우리는 대신 human->learnNextLesson()을 수행할 수 있습니다.

 
jjc :

MT5만 있었다면. 그런 다음 우리는 대신 human->learnNextLesson()을 수행할 수 있습니다.

나는 OOP에 익숙하지 않습니다.

난 그게 싫어. 아무것도에 대한 너무 많은 번거 로움.

그런 경우에는 배우기를 거부합니다... ;-)

이것->반복->이것->반복->이것->반복->이것->반복->이것->반복->이것->반복->이것->반복->이것;