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

 
isaev-av :

고맙습니다. 그리고 Digits는 DC에 따라 4 또는 5로 변경되어야 합니까?

변경해서는 안되며 통화에 따라 취합니다. 시장 정보
[삭제]  
isaev-av :

고맙습니다. 그리고 Digits는 DC에 따라 4 또는 5로 변경되어야 합니까?

Digits 만 남겨두면 모든 것이 스스로 대체됩니다.
[Deleted]  
동지 여러분, 저는 아주 간단한 시스템을 고려하고 있습니다... MACD가 5분 이상 그 영역에 있지 않으면 엽니다. 어떤 이유로 거래가 열리지 않습니다 .... 말해주세요 plz ...
 //+------------------------------------------------------------------+ 
   //| MACD ^^^.mq4 | 
   //| Copyright © 2011, MetaQuotes Software Corp. | 
   //| http://www.metaquotes.net | 
   //+------------------------------------------------------------------+ 
   #property copyright "Copyright © 2011, MetaQuotes Software Corp." 
   #property link "http://www.metaquotes.net" 

   extern int TP = 100 ; 
   extern int TS = 100 ; 
   extern int TF = 1 ; 
   extern double lots = 0.1 ; 
   int fast_ema = 5 ; 
   int slow_ema = 34 ; 
   int signal_period = 5 ; 
   int slip = 3 ; 
   int Magic = 1 ; 

 int total; 
 int ticket; //объявил тотал и тикет 

 //+------------------------------------------------------------------+ 
   //| expert initialization function | 
   //+------------------------------------------------------------------+ 
   int init() 
    { 
   //---- 

 //---- 
     return ( 0 ); 
    } 
   //+------------------------------------------------------------------+ 
   //| expert deinitialization function | 
   //+------------------------------------------------------------------+ 
   int deinit() 
    { 
   //---- 

 //---- 
     return ( 0 ); 
    } 
   //+------------------------------------------------------------------+ 
   //| expert start function | 
   //+------------------------------------------------------------------+ 
   int start() 
    { 
   //---- 

 bool signal = signal_MACD(); 
  AnalyzeSignal(signal); 

 //---- 
     return ( 0 ); 
    } 
   //+------------------------------------------------------------------+ 

 bool signal_MACD() 
  { 
     bool signal_MACD = false; 
     double tmp = iMACD ( Symbol (),TF,fast_ema,slow_ema,signal_period, PRICE_CLOSE ,MODE_MAIN, 0 ); 
     for ( int i= 1 ;i<= 5 ;i++) 
    { 
       if ( NormalizeDouble ( iMACD ( Symbol (),TF,fast_ema,slow_ema,signal_period, PRICE_CLOSE ,MODE_MAIN,i)*tmp, 4 )< 0.0 ) 
       { 
          signal_MACD = true; 
           break ; 
       } 
    } 
  } 

 void AnalyzeSignal( bool signal) 
  { 
     total = OrdersTotal ();
     double MACD = iMACD ( Symbol (),TF,fast_ema,slow_ema,signal_period, PRICE_CLOSE ,MODE_MAIN, 0 ); 
     if (total < 1 )
     {
     if (signal == true)
     {
         if (MACD > 0 )
         {
            ticket = OrderSend ( Symbol (),OP_BUY,lots,Ask,slip,Bid-TS* Point ,Bid+TP* Point , "Покупаем" ,Magic, 0 , Green ); 
             if (ticket> 0 ) 
            { 
             OrderSelect (ticket,SELECT_BY_TICKET); 
             Print ( "открылись на покупку по цене:" , OrderOpenPrice ()); 
            } 
             else 
            { 
             Print ( "открыться не удалось по причине:" , GetLastError ()); 
             return ( 0 ); 
            } 
         }
         if (MACD < 0 )
         {
             ticket = OrderSend ( Symbol (),OP_SELL,lots,Bid,slip,Ask+TS* Point ,Ask-TP* Point , "Продаем" ,Magic, 0 , Red ); 
             if (ticket> 0 ) 
             { 
             OrderSelect (ticket,SELECT_BY_TICKET); 
             Print ( "открылись на продажу по цене:" , OrderOpenPrice ()); 
             } 
             else 
             { 
             Print ( "открыться не удалось по причине:" , GetLastError ()); 
             return ( 0 ); 
             } 
         }
         else
             return ( 0 );
     }
     }
  }
  
  
  
  
  
 
돕다! 모든 사람은 MACD 샘플을 가지고 있으며 여기에 많은 계산을 추가하려고 합니다. 내 변경 후 컴파일되지 않습니다 :( 도움말!
 double Lots()
  {
   double Lots;
   Lots= AccountFreeMargin ()/ 10000 * 5 ;
   Lots= MathMin ( 15 , MathMax ( 0.1 ,Lots));
   if (Lots< 0.1 ) 
     Lots= NormalizeDouble (Lots, 2 );
   else
     {
     if (Lots< 1 ) Lots= NormalizeDouble (Lots, 1 );
     else        Lots= NormalizeDouble (Lots, 0 );
     }
     return (Lots);
  }
 

여기요

((Bid-OrderOpenPrice(),Digits) >= -60) 코드 130이 각각의 새로운 틱을 제공하고 서버를 매우 많이 로드하는 경우 어드바이저는 오류를 제공합니다.

if ((pBid- NormalizeDouble (OrderOpenPrice(),Digits)) == -60)로 변경하면 표시되지 않습니다.

나는 정확히 >=가 필요하며 어떻게 해야 합니까?

내가 그것을 알아낼 수 있도록 도와주세요

미리 감사합니다!!

 

거래에 포함된 통화 쌍의 수를 프로그래밍 방식으로 계산하는 방법은 무엇입니까?

열린 주문의 열거를 통해 시도했습니다. 3개의 통화 쌍에 대한 어드바이저를 출시했습니다. 각각 다른 결과가 있습니다.

하나 - 3 (정확), 두 번째 - 2, 세 번째 - 1.

2개의 통화 쌍에서 시도:

1번 - 2번(맞음), 2번 - 1번. 감소 패턴이 아니었다면 실수했다고 생각했을 것입니다.

 int val() 
{
   int kp= 1 ;
   string x1= "0" ,x2= "0" , x3= "0" , x4= "0" , x5= "0" , x6= "0" , x7= "0" , x8= "0" , x9= "0" , x10= "0" , x11= "0" , x12= "0" , x13= "0" , x14= "0" ,       x15= "0" ,
          x16= "0" , x17= "0" , x18= "0" ,  x19= "0" ,  x20= "0" ,  x21= "0" ,  x22= "0" , x23= "0" ,  x24= "0" ;
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {
     if (! OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) break ;
     if ( OrderSymbol ()== Symbol ())   break ;
       if (x9!= "0" &&  x1!= OrderSymbol () && x2!= OrderSymbol () &&  x3!= OrderSymbol ()  &&  x4!= OrderSymbol () &&  x5!= OrderSymbol ()  &&  x6!= OrderSymbol ()   &&  x7!= OrderSymbol ()  &&  x8!= OrderSymbol ()   &&  x9!= OrderSymbol () && x10== "0" ) {x10= OrderSymbol (); kp= 11 ;}      
       if (x8!= "0" &&  x1!= OrderSymbol () && x2!= OrderSymbol () &&  x3!= OrderSymbol ()  &&  x4!= OrderSymbol () &&  x5!= OrderSymbol ()  &&  x6!= OrderSymbol ()   &&  x7!= OrderSymbol ()  &&  x8!= OrderSymbol () && x9== "0" ) {x9= OrderSymbol (); kp= 10 ;}      
       if (x7!= "0" &&  x1!= OrderSymbol () && x2!= OrderSymbol () &&  x3!= OrderSymbol ()  &&  x4!= OrderSymbol () &&  x5!= OrderSymbol ()  &&  x6!= OrderSymbol ()   &&  x7!= OrderSymbol () && x8== "0" ) {x8= OrderSymbol (); kp= 9 ;}      
       if (x6!= "0" &&  x1!= OrderSymbol () && x2!= OrderSymbol () &&  x3!= OrderSymbol ()  &&  x4!= OrderSymbol () &&  x5!= OrderSymbol ()  &&  x6!= OrderSymbol () && x7== "0" ) {x7= OrderSymbol (); kp= 8 ;}      
       if (x5!= "0" &&  x1!= OrderSymbol () && x2!= OrderSymbol () &&  x3!= OrderSymbol ()  &&  x4!= OrderSymbol () &&  x5!= OrderSymbol () && x6== "0" ) {x6= OrderSymbol (); kp= 7 ;}      
       if (x4!= "0" &&  x1!= OrderSymbol () && x2!= OrderSymbol () &&  x3!= OrderSymbol ()  &&  x4!= OrderSymbol () && x5== "0" ) {x5= OrderSymbol (); kp= 6 ;}      
       if (x3!= "0" &&  x1!= OrderSymbol () && x2!= OrderSymbol () &&  x3!= OrderSymbol () && x4== "0" ) {x4= OrderSymbol (); kp= 5 ;}      
       if (x2!= "0" &&  x1!= OrderSymbol () && x2!= OrderSymbol () && x3== "0" ) {x3= OrderSymbol (); kp= 4 ;}      
       if (x1!= "0" &&  x1!= OrderSymbol () && x2== "0" ) {x2= OrderSymbol (); kp= 3 ;}      
       if (x1== "0" ) {x1= OrderSymbol (); kp= 2 ;}
   }
   return (kp);
}
[삭제]  
skyjet :
내 변경 후 컴파일되지 않습니다 :(

글쎄, 그는 무엇을 쓰는가?
 
Figar0 :

글쎄, 그는 무엇을 쓰는가?
12개의 오류, 12개의 경고. 로트 계산을 잘못 입력하고 있습니까?
 
forexnew :

거래에 포함된 통화 쌍의 수를 프로그래밍 방식으로 계산하는 방법은 무엇입니까?

열린 주문의 열거를 통해 시도했습니다. 3개의 통화 쌍에 대한 어드바이저를 출시했습니다. 각각 다른 결과가 있습니다.

하나 - 3 (정확), 두 번째 - 2, 세 번째 - 1.

2개의 통화 쌍에서 시도:

1번 - 2번(맞음), 2번 - 1번. 감소 패턴이 아니었다면 실수했다고 생각했을 것입니다.


또는 고문의 도움을 받아 활성 도구 목록을 만들 수도 있습니다. 접근 방식이 다소 복잡합니다. 해결이 더 쉬울까요
[삭제]  
skyjet :
12개의 오류, 12개의 경고. 로트 계산을 잘못 입력하고 있습니까?

함수 자체에는 오류가 없으며 사용하려고 하면 오류가 발생할 수 있지만 이를 표시하지 않습니다. 파일로 직접 컴파일되지 않은 것을 퍼뜨리면 추측할 필요가 없습니다.