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

 
Artyom Trishkin :

정답은 아주 간단합니다...

그래서 무엇?

 
Andrey Sokolov :

그래서 무엇?

너무 간단합니다 :)

데이터가 없으면 다음 틱까지 종료합니다.

 
좋은 오후입니다. 데모 계정에서 MT4에 신호를 등록할 수 있습니까? 고맙습니다.
 
Artyom Trishkin :

너무 간단합니다 :)

데이터가 없으면 다음 틱까지 종료합니다.

아니요, 계산과 매핑이 즉시 필요하다고 썼습니다.

기존 솔루션에 문제가 있다면 옵션으로 복잡해 보이지 않는 볼린저를 계산하는 함수를 작성할 수 있다고 생각합니다. 그러나 지금까지 작동하는 것입니다.

 
안녕하세요! OBJ_TREND 그래픽 개체에서 미래의 가격을 찾는 방법은 무엇입니까? 예를 들어 오른쪽에 광선이 있고 각각의 새 막대에서 이 광선의 값을 알아야 합니다. 감사하다!
 
MakarFX :

이러한 구조는 다음과 같아야 합니다.

내가 해냈어, 효과가 있었어. 감사해요

 
Andrey Sokolov :

아니요, 계산과 매핑이 즉시 필요하다고 썼습니다.

기존 솔루션에 문제가 있다면 옵션으로 복잡해 보이지 않는 볼린저를 계산하는 함수를 작성할 수 있다고 생각합니다. 그러나 지금까지 작동하는 것입니다.

표시기가 올바르게 수행되면 항상 전체 기록을 먼저 계산합니다. 당신은 무엇을 가지고 있습니까?

 
Artyom Trishkin :

당신은 무엇을 가지고 있습니까?

질문을 이해하지 못했습니다

 
얘들아, 내가 지표에 경보를 울리도록 도와줘. 여러 지표의 조합을 테스트하고 싶지만 경고 기능이 필요합니다. 화살표가 나타날 때 경고가 1회만 표시되어야 합니다. 당신에게 어렵지 않다면 그런 기능을 작성하는 것을 도와주세요. 그렇지 않으면 저에게 작동하지 않습니다. MT4가 멈추는 만큼 1분 또는 항상 경고가 나타납니다.
 //+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---

     int limit=rates_total-prev_calculated- 2 ;
   if (limit< 1 ) return ( 0 );
   for ( int i=limit;i>= 0 ;i--)
     {
     
       // Снимем показания индикатора
     double in1b = iCustom ( NULL , 0 , "in1" , 1 ,i); // индикатор 1 стрелка вверх
     double in1s = iCustom ( NULL , 0 , "in1" , 0 ,i); // индикатор 1 стрелка вниз
      
     
     
     double in2b = iCustom ( NULL , 0 , "in2" , 0 ,i); // индикатор 2 стрелка вверх
     double in2s = iCustom ( NULL , 0 , "in2" , 1 ,i); // индикатор 2 стрелка вниз
    
     Comment ( "in1v = " + DoubleToString (in1b)+ "\n" + "in1n = " + DoubleToString (in1s)+ "\n"
    + "in2v = " + DoubleToString (in2b)+ "\n" + "in2n = " + DoubleToString (in2s));
     
     if (in1b > 2147483647 && in2b > 2147483647 ) // индикатор стрелка вверх
           {
           Sell[i]=low[i];
                      
          
           // Alert(Symbol()+"BUY";
              
           
           
           
         
           }
   
     if (in1s > 2147483647 && in2s > 2147483647 ) // индикатор стрелка вниз
           {
            Buy[i]=high[i];
            
               // Alert(Symbol()+"SELL М"+Period());
              
              
           
           }
         
   
     }
   
     
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
jarikn :
얘들아, 내가 지표에 경보를 울리도록 도와줘. 여러 지표의 조합을 테스트하고 싶지만 경고 기능이 필요합니다. 화살표가 나타날 때 경고가 1회만 표시되어야 합니다. 당신에게 어렵지 않다면 그런 기능을 작성하는 것을 도와주세요. 그렇지 않으면 저에게 작동하지 않습니다. MT4가 멈추는 만큼 1분 또는 항상 경고가 나타납니다.

이것을 시도하십시오. 작동해야합니다.

 //+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   datetime show_alert=time[1];
   int limit=rates_total-prev_calculated- 2 ;
   if (limit< 1 ) return ( 0 );
   for ( int i=limit;i>= 0 ;i--)
     {
     
       // Снимем показания индикатора
       double in1b = iCustom ( NULL , 0 , "in1" , 1 ,i); // индикатор 1 стрелка вверх
       double in1s = iCustom ( NULL , 0 , "in1" , 0 ,i); // индикатор 1 стрелка вниз
      
       double in2b = iCustom ( NULL , 0 , "in2" , 0 ,i); // индикатор 2 стрелка вверх
       double in2s = iCustom ( NULL , 0 , "in2" , 1 ,i); // индикатор 2 стрелка вниз
    
       Comment ( "in1v = " + DoubleToString (in1b)+ "\n" + "in1n = " + DoubleToString (in1s)+ "\n"
      + "in2v = " + DoubleToString (in2b)+ "\n" + "in2n = " + DoubleToString (in2s));
     
       if (in1b > 2147483647 && in2b > 2147483647 ) // индикатор стрелка вверх
        {
         Sell[i]=low[i];
         if (show_alert!=time[i])
           {
             Alert ( Symbol ()+ "BUY М" + Period ()); show_alert=time[i];
           }
        }
   
       if (in1s > 2147483647 && in2s > 2147483647 ) // индикатор стрелка вниз
        {
         Buy[i]=high[i];
         if (show_alert!=time[i])
           {
             Alert ( Symbol ()+ "SELL М" + Period ()); show_alert=time[i];
           }
        }
     }
     
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+