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

 
환영합니다! HELP PLEASE 정보원이 있습니다. 수정해야 합니다... 스왑, 커미션을 제외하고 순이익을 계산할 수 있습니까? 여전히 비문의 색상을 변경해야합니다 ... 미리 대단히 감사합니다
파일:
 
ANDREY :

모두에게 좋은 하루!
mql4의 for() 루프 연산자에 대한 질문입니다. 이 연산자의 헤더에서 일부 변수의 값이 순차적으로 감소 또는 증가합니다.

for(int A=14; A>=0;A--) 또는 for(int A=0; A<14;A++) 또는 for(int A=0; A<14;A=+2)   이 경우, 변수 A의 증가 또는 감소의 차원은 주어진 예 1 또는 2에서 항상 동일한 것으로 가정됩니다.

문제. 그리고 변수 A가 기간의 값 (1(분), 5,15,30,60,240,1440)이라면 이 변수를 늘리거나 줄이는 차원이 같을 수 없다는 것은 자명합니다. 이 경우 에 대한 헤더를 배열 하여 변수 A가 1에서 시작하여 필요한 시간(분)만큼 각 반복에서 고르지 않게 증가하도록 하는 방법.

변수 A가 있는 예는 특별한 경우입니다. 주기 헤더의 변수 변경이 내가 필요한 간격으로 고르지 않게 수행되어야 하는 경우 주기는 일반적으로 어떻게 설계됩니까?
아니면 이러한 경우에 다른 연산자가 사용됩니까? 그러나 다른 연산자는 for에 비해 매우 성가신 것 같습니다. for 연산자의 도움으로 정확하게 헤더의 도움으로 내 문제를 해결할 수 있도록 도와주세요. for 문의 본문 내에서 내 문제를 해결하기 위해 물론 if 문을 사용할 수 있지만 이것은 매우 성가신 구성과 연산자가 될 것입니다   for 는 7개의 올바른 값을 필터링하기 위해 1440번의 반복을 수행해야 합니다.
고맙습니다.

오류가 있습니다. for(int A=0; A<14;A += 2)

마음에 오는 가장 간단한 것은 마침표를 배열로 채우는 것입니다.

 ENUM_TIMEFRAMES per[] = { PERIOD_M1 , PERIOD_M5 , PERIOD_M15 , PERIOD_M30 , PERIOD_H1 , PERIOD_H4 , PERIOD_D1 , PERIOD_W1 };
/********************Script program start function*******************/
void OnStart ()
 {
   for ( int i = 0 ; i < ArraySize (per); i++)
   {
     Print ( EnumToString (per[i]));
   }
 } /******************************************************************/

/*****************************End program****************************/


 
Alexey Viktorov :

마음에 오는 가장 간단한 것은 마침표를 배열로 채우는 것입니다.

감사합니다 저에게도 유용하겠습니다

 
Alexey Viktorov :

오류가 있습니다. for(int A=0; A<14;A += 2)

마음에 오는 가장 간단한 것은 마침표를 배열로 채우는 것입니다.


힌트를 주셔서 감사합니다. 모든 것이 내가 생각했던 것보다 훨씬 쉽게 밝혀졌습니다.
나는 한 순간도 이해하지 못했다. 어레이 이름당 그리고 ENUM_TIMEFRAMES는 변수 유형 식별자입니까? mql4 참조에서 정확히 그러한 식별자를 찾지 못했습니다. 만 있다

Перечисления - Целые типы - Типы данных - Основы языка - Справочник MQL4
Перечисления - Целые типы - Типы данных - Основы языка - Справочник MQL4
  • docs.mql4.com
Перечисления - Целые типы - Типы данных - Основы языка - Справочник MQL4
 
ANDREY :

팁을 주셔서 감사합니다. 모든 것이 내가 생각했던 것보다 훨씬 쉽게 밝혀졌습니다.
나는 한 순간도 이해하지 못했다. 어레이 이름당 그리고 ENUM_TIMEFRAMES는 변수 유형 식별자입니까? mql4 참조에서 정확히 그러한 식별자를 찾지 못했습니다. 만 있다

여기

Периоды графиков - Константы графиков - Константы, перечисления и структуры - Справочник MQL4
Периоды графиков - Константы графиков - Константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Периоды графиков - Константы графиков - Константы, перечисления и структуры - Справочник MQL4
 
MakarFX :

여기

당신이 나에게 mql 5에 관한 정보를 보낸 것을 올바르게 이해했습니까? 또는 이 정보가 다음에 해당합니까?   mql4?

 
ANDREY :

당신이 나에게 mql 5에 관한 정보를 보낸 것을 올바르게 이해했습니까? 또는 이 정보가 다음에도 적용됩니까?   mql4?

수정했습니다
 
MakarFX :
수정했습니다

고맙습니다.

 
ANDREY :

고맙습니다.

작은 권장 사항: ENUM_TIMEFRAMES에 즉시 익숙해지고 숫자 표현을 분 단위로 잊어버리십시오.

첫 번째 PERIOD_W1 10080보다 더 많은 정보를 제공하므로 이것이 일주일이라는 것이 더 분명합니다.

둘째, mql5에서는 주기가 분 수와 일치하지 않으며 mql5로 전환할 때 별도의 문제가 발생하지 않으며 이는 불가피합니다.

글쎄, 당신이 정말로 그 기간에 몇 분이 필요하다면, 그것은 당신을 도울 것입니다.

 int    PeriodSeconds ( 
   ENUM_TIMEFRAMES   period= PERIOD_CURRENT        // период графика 
   );
 Print ( PeriodSeconds ( PERIOD_W1 )/ 60 ); // = 10080
 
얘들아. 표시기에 경고를 고정하는 데 도움이 됩니다.
 #property copyright "Subu"
#property link        "http://www.google.com"
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_width1 2
#property indicator_width2 2
#property indicator_chart_window

double UpArrow[];
double DownArrow[];
extern int ShiftArrow = - 2 ;
extern bool FilterBullBearCandle = false ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle( 0 , DRAW_ARROW , EMPTY, 2 );
   SetIndexArrow( 0 , 233 );
   SetIndexBuffer ( 0 , UpArrow);
   SetIndexEmptyValue( 0 , 0.0 );
   SetIndexShift( 0 ,ShiftArrow);
   SetIndexStyle( 1 , DRAW_ARROW , EMPTY, 2 );
   SetIndexArrow( 1 , 234 );
   SetIndexBuffer ( 1 , DownArrow);
   SetIndexEmptyValue( 1 , 0.0 );
   SetIndexShift( 1 ,ShiftArrow);
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int     counted_bars=IndicatorCounted();
   int limit, i, counter;
   if (counted_bars< 0 ) return (- 1 );
//---- last counted bar will be recounted
   if (counted_bars> 0 ) counted_bars--;

   limit= Bars -counted_bars;
//----
     for (i = 0 ; i <= limit; i++) {
      DownArrow[i] = 0 ;
      UpArrow[i] = 0 ;
   if (High[i+ 2 ]>High[i+ 1 ] && Low[i+ 2 ]>Low[i+ 1 ] && High[i+ 2 ]>High[i+ 3 ] && Low[i+ 2 ]>Low[i+ 3 ])
       if ( Open[i+ 1 ]>Close[i+ 1 ] && Close[i+ 2 ] > Close[i+ 1 ])
         if (FilterBullBearCandle)
            {
               if ( Open[i+ 2 ]>Close[i+ 2 ])
                  DownArrow[i] = High[i+ 2 ] + 0.0003 ; //Low[i+2] + (High[i+2]-Low[i+2]);
             }
         else
             DownArrow[i] = High[i+ 2 ] + 0.0003 ; //Low[i+2] + (High[i+2]-Low[i+2]);
   if (High[i+ 2 ]<High[i+ 1 ] && Low[i+ 2 ]<Low[i+ 1 ] && High[i+ 2 ]<High[i+ 3 ] && Low[i+ 2 ]<Low[i+ 3 ])
       if ( Open[i+ 1 ]<Close[i+ 1 ] && Close[i+ 2 ] < Close[i+ 1 ])
           if (FilterBullBearCandle)
            {
               if ( Open[i+ 2 ]<Close[i+ 2 ] ) 
                  UpArrow[i] = Low[i+ 2 ] - 0.0003 ; //High[i+2] - (High[i+2]-Low[i+2]);
                  
            }
         else
            UpArrow[i] = Low[i+ 2 ] - 0.0003 ; //High[i+2] - (High[i+2]-Low[i+2]);
            
      }
//----
   return ( 0 );
  }