[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 8

 
TheXpert :

컴팩트함은 가독성 을 떨어뜨립니다. 사실, 정의를 위해, 당신이 논리를 무시하더라도 로마의 버전도 완전히 좋지 않습니다.

라인 절약의 요점은 무엇입니까?

각자에게 ... 모든 것이 내 눈앞에 있을 때 코드를 읽는 것이 훨씬 더 편리합니다. 동시에, 나는 라인을 저장하려고하지 않습니다. 어떻게 일어난 일인지 ...

이 모든 것이 각 개인의 중독의 본질이며 무엇이 더 편리하고 무엇이 그렇지 않은가를 결정하는 것은 공허합니다 ...

나에게 가장 중요한 것은 각 라인이 평소의 위치에 있어야 하고 더 이상 없어야 한다는 것입니다. 나머지도 마찬가지지만 내 재량에 따라야 합니다.

아시다시피 맛과 색을 위한 펠트펜은 없습니다.

 

하지만 확인하기 위해... 팬케이크는 인코더의 끔찍한 꿈입니다.

         
             if (ticket> 0 )                                               // 
                    {
                             while ( OrderSelect (ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep ( 100 );
                                 }
                                  
      
                             OrderDelete (ticket, CLR_NONE ); // и удаляете их                       
                     
                            
                    }

       
       return ( 0 );
 
artmedia70 :
예... Aleksey, Roman 스타일로 작성되었다면 방금 고객에게 준 807줄 Expert Advisor가 어떻게 생겼는지 상상할 수 있습니다 ... :))))
축하합니다! 질문에 대한 내 답변의 맥락에서, 즉 페이지의 내 마지막 게시물에서 내 게시된 코드를 고려한다면 아마도 807 라인 Expert Advisor가 어떻게 생겼는지에 대한 아이디어가 바뀔 것입니다. 특히 루프의 누락된 행, if 문 및 루프를 종료할 때 중괄호 안에 있는 많은 것들이 있는 전문가로부터 내 코드를 수정했습니다. 디버거가 제거되지 않은 것도 질문의 맥락에 있으며 이에 대한 내 대답인 IMHO는 정상입니다.
 
sergeev :

하지만 확인하기 위해... 팬케이크는 인코더의 끔찍한 꿈입니다.

저에게 이 디자인은 평범합니다. 이것은 주문하는 Expert Advisor가 아니라 질문에 대한 답변이며 OrderDelete() 대신 단어로 작성할 수도 있습니다. 여기에 주문 삭제 및 가능한 오류 처리를 위한 함수 호출을 삽입하십시오. 그 사람이 기다리고 있고, 나는 내 코드를 열고, 편집 후 공백의 존재 여부에 주의를 기울이지 않고 모든 "불필요한"을 제거하고, 그의 거래에 따라 그의 고문에게 추가로 연결할 수 있도록 작업 버전을 제공했습니다. 정황. 모든 것이 정상 범위, IMHO 내에 있다고 생각합니다.
다음은 악몽에 대한 질문에 대한 동일한 섹션입니다.

          ....
          orderProfit = OrderProfit () + OrderSwap ();       // Profit
          Price = OrderOpenTime ();                         // Цена открытия рыночного ордера
          SL =   OrderStopLoss ();                           // Значение StopLoss ордера
          TP = OrderTakeProfit ();                           // Значение TakeProfit ордера
          
             if (ticket> 0 )                                               // Если позиция открылась
                    {
                             while ( OrderSelect (ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep ( 100 );
                                 }
                                   double OpenPrice= OrderOpenPrice ();                                   
                                  
                     //---------------------Запоминаем значения сл и тп ордера
                     // При количестве итераций выше 3-х увеличиваем уровень ТР для выхода в профит. 
                         if (orderType == OP_BUY) 
                           {
                             //if (Iteration == 4 ) TakeProfitPips = 400; if (Iteration >= 5 ) TakeProfitPips = 500;                
                            V_StopLossPips = NormalizeDouble (OpenPrice  - (StopLossPips * Point ), Digits );
                            V_TakeProfitPips = NormalizeDouble (OpenPrice + (TakeProfitPips * Point ), Digits );
                           }
            
                         if (orderType == OP_SELL) 
                           {
                             //if (Iteration == 4 ) TakeProfitPips = 400; if (Iteration >= 5 ) TakeProfitPips = 500;        
                            V_StopLossPips = NormalizeDouble (OpenPrice  + (StopLossPips * Point ), Digits );
                            V_TakeProfitPips = NormalizeDouble (OpenPrice - (TakeProfitPips * Point ), Digits );
                           }                               
                   }     
    
     // Проверка на предельную просадку
      
       double loss = - ((orderProfit * 100.0 ) / AccountBalance ());
       if (loss > MaxLoss)
      {
         Print ( "MaxLoss" );
         CloseAllOrders(MagicNumber);
         IsExpertFailed = true;
         return ( 0 );
      }
    
       // Проверка на необходимость закрытия открытой позиции (ордера) по стоп-лоссу      
     
       if ( V_StopLossPips != 0 )
        {
           if (orderType == OP_BUY && Bid <=  V_StopLossPips) 
             {
               CloseAllOrders(MagicNumber); Print ( "V_StopLossPips закрываем по сл = " , V_StopLossPips);
             }
             
           if ( OrderType ()== OP_SELL && Ask >=  V_StopLossPips) 
             {
               CloseAllOrders(MagicNumber); Print ( "V_StopLossPips закрываем по сл = " , V_StopLossPips);
             }  
        }          
         // Проверка на необходимость закрытия открытой позиции (ордера) по тейку
        
         if ( V_TakeProfitPips != 0 )
        {
           if (orderType == OP_BUY && Bid >=  V_TakeProfitPips) 
             {
               CloseAllOrders(MagicNumber); Print ( "V_TakeProfitPips закрываем по ТР = " , V_TakeProfitPips);
             }
             
           if ( OrderType ()== OP_SELL && Ask <=  V_TakeProfitPips) 
             {
               CloseAllOrders(MagicNumber); Print ( "V_TakeProfitPips закрываем по ТР = " , V_TakeProfitPips);
             }  
        }      
     
       
   //-----------------------------------ВЫВОДИМ ТЕКУЩУЮ ИНФОРМАЦИЮ О ТОРГАХ НА ЭКРАН------------------------------------------------------------ 
     
       string messageLoss = "" ;
       if (orderProfit < 0.0 )
      {
         messageLoss = "Просадка = " + DoubleToStr (loss, 1 ) + "% (макс. " + MaxLoss + "%)" ;
      }
   
       // Вывод текущего состояния
       Comment ( "Прибыль = " , DoubleToStr (orderProfit, 1 ), " (лот " , orderLots, ")  " , messageLoss, " Iteration= " , Iteration, "  Sum_Loss + Delta= " , MathAbs (Sum_Loss) +  Delta_Sum_Loss * 10 * orderLots, " Ширина канала = " , StopLossPips, " Профит по рыночному ордеру =   " , orderProfit, "  k = " , k);
       return ( 0 );
   }
   
   Comment ( "" );   
 
artmedia70 :

아시다시피 맛과 색을 위한 펠트펜은 없습니다.


우리는 모두 너무 다르지만 여전히 우리는 함께입니다. ))) 우리는 하나의 공간 냄비에서 요리합니다. )))
 
tol64 :

우리는 모두 너무 다르지만 여전히 우리는 함께입니다. ))) 우리는 하나의 공간 냄비에서 요리합니다. )))
벌써부터 국물이 흘러내린다... 낮잠자러 갈게...아침까지 :)
 

그런 술이 없어졌기 때문에(나는 내가 원하는 대로 코드를 작성한다/알고 있다), 나는 마지막 오이를 잘라낼 것이다:

나는 모든 "집행" 및 "입법" 기관을 별도의(여러 번 테스트한) 기능의 형태로 작성합니다.

그 기능과 능력은 나에게 잘 알려져 있기 때문에 코드 끝의 어딘가에 넣습니다.

start() 함수에서는 무엇에 효과가 있어야 하는지만 규정합니다.

나는 start() 만 읽었으며 모든 것이 즉시 명확합니다.

편리하게.

 
DhP :

그런 술이 없어졌기 때문에(나는 내가 원하는 대로 코드를 작성한다/알고 있다), 나는 마지막 오이를 잘라낼 것이다:

나는 모든 "집행" 및 "입법" 기관을 별도의(여러 번 테스트한) 기능의 형태로 작성합니다.

그 기능과 능력은 나에게 잘 알려져 있기 때문에 코드 끝의 어딘가에 넣습니다.

start() 함수에서는 무엇에 효과가 있어야 하는지만 규정합니다.

나는 start() 만 읽었으며 모든 것이 즉시 명확합니다.

편리하게.


하지만 코드를 컴파일할 때 에러가 발생 하지 않는 것은 먼저 실행을 위한 함수를 작성하고 그 내용을 마지막에 어딘가에 작성하기 때문에 당연히 함수를 사용하지 않고 주석을 더 많이 사용하지만 그런 문제가 있습니다. 변수로
 
LazarevDenis :

하지만 코드를 컴파일할 때 에러가 나지 않는 것은 먼저 실행을 위한 함수를 작성하고 그 내용을 마지막에 어딘가에 쓰기 때문에 당연히 함수를 사용하지 않고 주석을 더 많이 사용하지만 그런 문제가 있습니다. 변수로


이 경우 오류가 있을 수 없습니다.

컴파일할 때 일부 기능이 사용되지 않는다는 표시/알림만 있을 수 있습니다.

이 경우 눈을 감거나 이 사용하지 않는 기능을 삭제합니다.

 
LazarevDenis :

하지만 코드를 컴파일할 때 에러가 나지 않는 것은 먼저 실행을 위한 함수를 작성하고 그 내용을 마지막에 어딘가에 쓰기 때문에 당연히 함수를 사용하지 않고 주석을 더 많이 사용하지만 그런 문제가 있습니다. 변수로

뭐야??? ))) 지금 농담하는 거지? 그렇다면 성공입니다.