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

 

여러분, 코드에서 TF d1 \ 주를 다른 것으로 변경하도록 도와주세요.

H1 또는 분으로 변경하는 방법을 알고 있습니다.

m30, m15, m5로 변경하는 방법에 관심이 있으십니까?

 //|                                               For__red_r2005.mq4 |
//|                                       Copyright © 2010, PapaYozh |
//|                                                                * |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, PapaYozh"
#property link       "*"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Coral
#property indicator_color2 CornflowerBlue
#property indicator_width1 2
#property indicator_width2 2

// ---- buffers ----
double BuffD[];
double BuffM[];
//+------------------------------------------------------------------+
int init()
{
   SetIndexBuffer ( 0 ,BuffD);
   SetIndexEmptyValue( 0 , EMPTY_VALUE );
   SetIndexStyle( 0 , DRAW_SECTION ,EMPTY,EMPTY);

   SetIndexBuffer ( 1 ,BuffM);
   SetIndexEmptyValue( 1 , EMPTY_VALUE );
   SetIndexStyle( 1 , DRAW_SECTION ,EMPTY,EMPTY);
   
   return ( 0 );
} // init()
//+------------------------------------------------------------------+
int deinit()
{
   return ( 0 );
} // deinit()
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
int start()
{
   int     shift;

   shift = Bars - 1 - IndicatorCounted();
   for ( ; shift> 0 ; shift-- )
   {
       if ( TimeDayOfYear(Time[shift]) != TimeDayOfYear(Time[shift- 1 ]) )
      {
         BuffD[shift]   = Close[shift];
         if ( TimeDayOfWeek(Time[shift- 1 ]) == 1 )
            BuffM[shift]   = Close[shift];
         else
            BuffM[shift]   = EMPTY_VALUE ;
      }
       else
      {
         BuffD[shift]   = EMPTY_VALUE ;
         BuffM[shift]   = EMPTY_VALUE ;
      }
   }
   return ( 0 );
} // start()
//+------------------------------------------------------------------+
 
인디케이터를 잠시 멈춰야 하는데 도움말에 나와 있는 것처럼 Sleep() 함수 는 커스텀 인디케이터에서 불러올 수 없습니다... 다른 방법이 없을까요?
 
Yevhenii Levchenko :
인디케이터를 잠시 멈춰야 하는데 도움말에 나와 있는 것처럼 Sleep() 함수 는 커스텀 인디케이터에서 불러올 수 없습니다... 다른 방법이 없을까요?

표시기 값을 계산하지 않고 OnCalculate()에서 조건별 종료 - 가장 간단한 것은 틱 카운터이며 타이머를 사용하는 것이 조금 더 어렵고 표시기에서 작동합니다.

 
Igor Makanu :

표시기 값을 계산하지 않고 OnCalculate()에서 조건별 종료 - 가장 간단한 것은 틱 카운터이며 타이머를 사용하는 것이 조금 더 어렵고 표시기에서 작동합니다.

고맙습니다!

타이머로 했어요. 이게 더 쉬울 것 같았는데...

 
Yevhenii Levchenko :

고맙습니다!

타이머로 했어요. 이게 더 쉬울 것 같았는데...

 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[])
  {
//---
   static int TickCount = 0 ;
   TickCount--;
   if (TickCount> 0 ) return (rates_total);
   TickCount= 10 ;
 
Igor Makanu :

정적 변수 에 대해 완전히 잊어 버린 것 ... 감사합니다 :)

그리고 일반 변수를 전역으로 선언하면 실제로 어떤 의미에서 정적 변수와 같습니까? 내 말은, 프로그램의 모든 위치에서 변경할 수 있습니까?

 

안녕하세요.

제발, 구조 유형의 동적 배열 을 참조로 함수에 전달할 수 있습니까?

예를 들어 여기에서 struct_name_array[] 배열을 Func()에 전달하여 처리하고 채우십시오.

 struct StructName { int x;
                   int y;} struct_name_array[];

void Func ( int &x[],
           int &y[])
        {
        }

가능하다면 이전이 어떻게 공식화됩니까? 함수 매개변수의 형식을 지정하는 방법은 무엇입니까? C ++ 가이드에 따르면 무언가가 작동하지 않습니다.

고맙습니다.

 
Mikhail Sobolev :

예를 들어 여기에서 struct_name_array[] 배열을 Func()에 전달하여 처리하고 채우십시오.

 //+------------------------------------------------------------------+
struct StructName
  {
   int                x;
   int                y;
  }
struct_name_array[];
//+------------------------------------------------------------------+
void OnStart ()
  {
   ArrayResize (struct_name_array, 5 );
   for ( int i= 0 ;i< 5 ;i++)
     {
      struct_name_array[i].x = i;
      struct_name_array[i].y = i* 100 ;
     }
   Func(struct_name_array);
   for ( int i= 0 ;i< 5 ;i++)
     {
       printf ( "%s : s[%d].x = %d , s[%d].y = %d" , __FUNCTION__ ,i,struct_name_array[i].x,i,struct_name_array[i].y);
     }
  }
//+------------------------------------------------------------------+
void Func(StructName &s[])
  {
   for ( int i= 0 ;i< ArraySize (s);i++)
     {
       printf ( "%s : s[%d].x = %d , s[%d].y = %d" , __FUNCTION__ ,i,s[i].x,i,s[i].y);
      s[i].x*= 33 ;
      s[i].y*= 12 ;
     }
  }
//+------------------------------------------------------------------+
 

안녕하세요!

나는 여기에 내 어리석은 질문으로 이미 많은 것이 있음을 이해합니다. 다음을 관대하게 처리하고 여기에 무엇이 잘못되었는지 설명하십시오.

         if ((op1-lo1)> 50 && (cl1-lo1)< 10 )
        {   Alert ( "VertLine" );
         string obj_name= "VertLine" ;
         datetime time=Time[ 0 ];
         color col = clrGreen ; 
         ObjectCreate ( 0 ,obj_name, OBJ_VLINE , 0 ,time, 0 , 0 , 0 );
         ObjectSetInteger ( 0 ,obj_name, OBJPROP_COLOR ,col);
        }

경보가 발령되었지만 수직선 이 없습니다. 이유는 무엇입니까?

 
novichok2018 :

안녕하세요!

나는 여기에 내 어리석은 질문으로 이미 많은 것이 있음을 이해합니다. 다음을 관대하게 처리하고 여기에 무엇이 잘못되었는지 설명하십시오.

경보가 발령되었지만 수직선 이 없습니다. 이유는 무엇입니까?

그럼에도 불구하고 포럼에 대한 바로 그 호소조차도 이미 이해에 자극을 줍니다. 그것은 이해 한 것 같습니다 - 선은 그려졌지만 단 하나입니다. 다른 사람을 그리려면 이것을 지워야 합니다.