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

 
nlp2311 :

양해 해 주셔서 감사합니다!):

글쎄요... 두 개의 스크립트를 만드십시오 - 필요한 키에 걸어두십시오 - 그리고 거기에 터미널의 전역 변수 를 추가하거나 빼십시오 - 귀하의 고문이 주기적으로 읽을 것입니다 - 그리고 그것에 의해 Barshift를 변경하십시오... :-)

또한 할 수 있는 경우 - 그래픽 개체를 통해 동일한 작업을 수행할 수 있습니다... 예를 들어, 어드바이저를 초기화할 때 두 개의 텍스트 레이블이 표시됩니다. - 그리고 그 중 하나가 사라지면 (어드바이저가 실행되는 동안 마우스로 그 중 하나를 선택하십시오 - Del 키를 누름) - 카운터에서 barshift가 어떤 식으로든 기소됩니다 :-) - 화면에서 삭제된 표시를 복원합니다....

 
Aleksander :

글쎄요... 두 개의 스크립트를 만드십시오 - 필요한 키에 걸어두십시오 - 그리고 거기에 터미널의 전역 변수를 추가하거나 빼십시오 - 귀하의 고문이 주기적으로 읽을 것입니다 - 그리고 그것에 의해 Barshift를 변경하십시오... :-)

또한 할 수 있는 경우 - 그래픽 개체를 통해 동일한 작업을 수행할 수 있습니다... 예를 들어, 어드바이저를 초기화할 때 두 개의 텍스트 레이블이 표시됩니다. - 그리고 그 중 하나가 사라지면 (어드바이저가 실행되는 동안 마우스로 그 중 하나를 선택하십시오 - Del 키를 누름) - 카운터에서 barshift가 어떤 식으로든 기소됩니다 :-) - 화면에서 삭제된 표시를 복원합니다....


그런 다음 이미 차트에서 수직을 운전하고 상대적으로 탐색하십시오.
 
alsu :

그런데 MT가 후크를 원하지 않는 이유는 무엇입니까?

보호. 하위 분류가 작동합니다.
 
Zhunko :
보호. 하위 분류가 작동합니다.
그런 다음 창을 WindowProc로 바꿉니다))
 

안녕하세요. 코드에서 오류를 찾도록 도와주세요. 더 이상 힘이 없습니다. 아무 것도 할 수 없습니다.

아마도 마지막 부분에서.

 #define MagicNum   700283
//-----
ObjectSetText
extern double   Percent        = 0.8 ;
extern double   TakeProfit     = 55 ;
extern bool     UseMM          = true;
extern int      PercentMM      = 1 ;
extern double   Lots           = 0.1 ;
//+------------------------------------------------------------------+
double GetLots()
 { 
   if (UseMM)
    {
       double a;
      a = NormalizeDouble ((PercentMM * AccountFreeMargin () / 100000 ), 2 );      
       if (a > 49.99 ) return ( 49.99 );
       else if (a < 0.01 )
       {
         return ( 0 );
       }
       else return (a);
    }    
   else return (Lots);
 }
//+------------------------------------------------------------------+ 
int CalculateCurrentOrders()
 {
   int orderT = OrdersTotal (), buys = 0 , sells = 0 ;
   //----
   for ( int i = 0 ; i < orderT; i++)
    {
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == false) break ;
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNum)
       {
         if ( OrderType () == OP_BUY)  buys++;
         if ( OrderType () == OP_SELL) sells++;
       }
    }
   if (buys > 0 ) return (buys);
   else if (sells > 0 ) return (-sells);
   else return ( 0 );
 }
//+------------------------------------------------------------------+  
int start()
 {
         //==============
   int   ticket;
   //-----
   if (CalculateCurrentOrders() == 0 ) 
    {
       if ( AccountFreeMargin () < ( 1000 * GetLots())) 
         {
             return ( 0 );  
         }
       if (High[ 1 ]<High[ 2 ] && Low[ 1 ]>Low[ 2 ] && (High[ 1 ]-Low[ 1 ])/(High[ 2 ]-Low[ 2 ])<Percent)
       {
         ticket= OrderSend ( Symbol (), OP_BUYSTOP, GetLots(), High[ 1 ], 3 , Low[ 2 ], High[ 1 ] + TakeProfit * Point , "iB" , MagicNum, 0 , Green );
         ticket= OrderSend ( Symbol (), OP_SELLSTOP, GetLots(), Low[ 1 ], 3 , High[ 2 ], Low[ 1 ] - TakeProfit * Point , "iB" , MagicNum, 0 , Red );
       }
    }
 }
 
SkinnerDE :

안녕하세요. 코드에서 오류를 찾도록 도와주세요. 더 이상 힘이 없습니다. 아무 것도 할 수 없습니다.

아마도 마지막 부분에서.


뭐가 문제야, 컴파일이 안 돼?
 
그건 그렇고, 당신은 레버리지로 제비를 곱하는 것을 잊었습니다. 따라서 GetLots() 함수의 변수 a는 0일 가능성이 높습니다(물론 계정에 백만 개의 자금이 있는 경우 제외).
 

'{' - 왼쪽 괄호가 필요함 C:\DOCUME~1\9226~1\0016~1\Forex\MACD_N~1.MQ4 (11, 2)

'{' - 세미콜론이 필요함 C:\DOCUME~1\9226~1\0016~1\Forex\MACD_N~1.MQ4 (11, 2)

여기

 
//+------------------------------------------------------------------+
double GetLots()
 { 
   if (UseMM) {
       double a;
      a = NormalizeDouble ((PercentMM * AccountFreeMargin () / 100000 ), 2 );      
       if (a > 49.99 ) return ( 49.99 );
       if (a < 0.01 )   return ( 0 );
       return (a);
    }    
 return (Lots);
 }
어떤 이유로 박제 대괄호와 elzev :-)
 
아무것도 변경되지 않았습니다, 동일한 오류