포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 349

 
Pyro :

초기화는 전역 변수를 제외한 모든 것을 재설정합니다.
그리고 당신이 컴퓨터를 끄거나 서버가 충돌한다면 어떤 조언자에게?
 
artmedia70 :
그리고 여기서 GV는 어드바이저가 아니라 최종 변수라는 점을 명확히 할 필요가 있습니다.

읽고 공부하기 시작했습니다. 이제 저는 전역 변수 와 전역 변수가 다른 것임을 압니다.

그건 그렇고, 당신이 너무 자주 묻는 오류 129를 희생하여. 사실 저는 5자리 DC를 가지고 있고,

그리고 고문 수면 2, 아마도 그것이 고문이 가격을 따라가지 못한 이유일 것입니다. 이제 15점을 드리겠습니다.

 
artmedia70 :
그리고 여기서 GV는 어드바이저가 아니라 최종 변수라는 점을 명확히 할 필요가 있습니다.


글쎄, 내 말은 고문이 초기화 (포함) 동안 값을 저장하기 위해 그들과 함께 일할 수 있다는 것을 의미합니다.
 
Forexman77 :
그리고 당신이 컴퓨터를 끄거나 서버가 충돌한다면 어떤 조언자에게?


흥미롭네요. 전역 변수는 특정 상황에서 캐시되어 파일에 기록됩니다. 일정 시간이 지난 후 또는 초기화 중이 아닌 것 같습니다. 실제 작업을 하다 보면 갑자기 컴퓨터를 재부팅 하는 과정에서 gvariables.dat(글로벌 변수 값을 저장하는 파일)가 그냥 사라지는 경우가 있었습니다. 작업할 때 이를 고려해야 합니다. 글쎄, 아니면 단순히 캐시에서 디스크에 등록할 시간이 없었습니다. 즉, 캐시가 아닌 디스크에 이미 있다는 보장이 없습니다. 틀 렸으면 고쳐줘.


Forexman77 :

읽고 공부하기 시작했습니다. 이제 저는 전역 변수와 전역 변수가 다른 것임을 압니다.

그건 그렇고, 당신이 너무 자주 묻는 오류 129에 대해. 사실 저는 5자리 DC를 가지고 있고,

그리고 고문 수면 2, 아마도 그것이 고문이 가격을 따라가지 못한 이유일 것입니다. 이제 15점을 드리겠습니다.


이것 때문에 거의. 다섯 자리 값이 3입니다. 모든 것이 정상적으로 열립니다. 내가 기억하는 한, 브로커들은 핍이 여전히 모든 곳에서 허용되는 기본 핍(0 뒤의 4번째 숫자)이고 핍 분수가 분수라는 데 동의했습니다. 그래야 나중에 6.7과 8자리를 입력할 때마다 "포인트"라는 개념의 의미가 바뀌지 않습니다.
 
Pyro :

흥미롭네요. 전역 변수는 특정 상황에서 캐시되어 파일에 기록됩니다. 일정 시간이 지난 후처럼. 실제 작업을 하다 보면 갑자기 컴퓨터를 재부팅 하는 과정에서 gvariables.dat(글로벌 변수 값을 저장하는 파일)가 그냥 사라지는 경우가 있었습니다. 작업할 때 이를 고려해야 합니다. 글쎄, 아니면 단순히 캐시에서 디스크에 등록할 시간이 없었습니다. 즉, 캐시가 아닌 디스크에 이미 있다는 보장이 없습니다. 틀 렸으면 고쳐줘.
녹음을 시도한 다음 컴퓨터를 끌 수도 있습니다. 그리고 그것을 켤 때 가용성을 위해 전화를 걸도록 경고를 시도하십시오. 거짓말은 하지 않겠지만 지금은 정적 변수 와 플래그만 사용하고 전역 변수에 대해 확실히 말할 수는 없습니다.
 
Forexman77 :
녹음을 시도한 다음 컴퓨터를 끌 수도 있습니다. 그리고 그것을 켤 때 가용성을 위해 전화를 걸도록 경고를 시도하십시오. 거짓말은 하지 않겠지만 지금은 정적 변수와 플래그만 사용하고 전역 변수에 대해 확실히 말할 수는 없습니다.


메뉴 -> 도구 -> 전역 변수 에서 볼 수 있습니다. 거기에 목록이 있습니다. 글쎄, 또는 GlobalVariableCheck. 하지만 모든 것을 실제 파일에 저장하는 것이 더 낫다는 것을 경험을 통해 배웠습니다.
 
안녕하세요!
제 추론에서 오류를 찾아주세요.

두 번째 날은 표시기를 만들기 위해 애쓰면서, 즉 기본 창에 연결된 추가 창에 선을 표시하기 위해 애쓰면서 끝납니다. 제 생각에는 카운트되지 않은 막대에 대한 계산을 수행하고 계산 결과의 값을 버퍼에 제공해야합니다. 이번에는 더 복잡한 코드를 예로 사용합니다(저는 비교적 큰 코드로 작업하는 것을 즐깁니다). 다음은 "창의력 제거"입니다.

 //+--------------------------------------------+
#property indicator_separate_window
#property indicator_minimum - 10
#property indicator_maximum 10
#property indicator_buffers 1
#property indicator_color1 Blue
extern double N = 1 ;
//+--------------------------------------------+
//Deklaration                                  |
//+--------------------------------------------+
double A; double C;       
double M; double D;
double L; double I;
double B; double F;
double K; double Buf_0[];
double G; 
//+--------------------------------------------+
int init(){
SetIndexBuffer ( 0 ,Buf_0);
SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 2 );
return ; }
//+--------------------------------------------+
int start() {
//Level 1
A = iRSI ( Symbol (), 0 , 10 , 0 , 0 );
M = iRSI ( Symbol (), 0 , 20 , 0 , 0 );
L = iRSI ( Symbol (), 0 , 15 , 0 , 0 );
B = iStochastic ( Symbol (), 0 , 10 , 6 , 6 , 0 , 0 , 0 , 0 );
K = iStochastic ( Symbol (), 0 , 10 , 6 , 6 , 0 , 0 , 1 , 0 );
C = iADX ( Symbol (), 0 , 10 , 0 , 0 , 0 );
D = iADX ( Symbol (), 0 , 10 , 0 , 1 , 0 );
I = iADX ( Symbol (), 0 , 10 , 0 , 2 , 0 );
F = iRVI ( Symbol (), 0 , 10 , 0 , 0 );
   //Level 2
  Buf_0[ 0 ] = N *(((B + F) / K) - ((D + I) / C) + ((A + M) / L));
   return ; } 
//+-------------------------------------------+ 

.

"이 지우기에서" 버퍼의 값이 "0"인 것을 분명히 알 수 있습니다. 이 표시기는 거래 플랫폼이 시작된 순간부터 선을 그을 것입니다. 그리고 유효한 데이터 외에도 과거 데이터가 필요합니다.

이 코드(MQ4 자습서에서 가져옴)에 설명된 정보를 사용했습니다.

 //--------------------------------------------------------------------
// separatewindow.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
#property indicator_separate_window // Отображение в отдельном окне
#property indicator_buffers 1        // Количество буферов
#property indicator_color1 Blue     // Цвет первой линии
#property indicator_color2 Red       // Цвет второй линии
 
extern int History  = 50 ;             // Колич.баров в расчётной истории
extern int Aver_Bars= 5 ;             // Количество баров для расчёта
 
double Buf_0[];                     // Объявление индикаторного массива
//--------------------------------------------------------------------
int init()                           // Специальная функция init()
  {
   SetIndexBuffer ( 0 ,Buf_0);         // Назначение массива буферу
   SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 2 ); // Стиль линии
   return ;                           // Выход из спец. ф-ии init()
  }
//--------------------------------------------------------------------
int start()                         // Специальная функция start()
  {
   int i,                           // Индекс бара
   n,                               // Формальный параметр
   Counted_bars;                     // Количество просчитанных баров 
   double
   Sum_H,                           // Сумма значений High за период
   Sum_L;                           // Сумма значений Low  за период
//--------------------------------------------------------------------
   Counted_bars= IndicatorCounted (); // Количество просчитанных баров 
   i= Bars -Counted_bars- 1 ;           // Индекс первого непосчитанного
   if (i>History- 1 )                 // Если много баров то ..
      i=History- 1 ;                   // ..рассчитывать заданное колич.
   while (i>= 0 )                       // Цикл по непосчитанным барам
     {
      Sum_H= 0 ;                       // Обнуление в начале цикла
      Sum_L= 0 ;                       // Обнуление в начале цикла
       for (n=i;n<=i+Aver_Bars- 1 ;n++) // Цикл суммирования значений 
        {
         Sum_H=Sum_H + High [n];     // Накопление суммы макс.значений
         Sum_L=Sum_L + Low [n];       // Накопление суммы мин. значений
        }
      Buf_0[i]=(Sum_H-Sum_L)/Aver_Bars; // Знач. 0 буфера на i-ом баре
      i--;                           // Расчёт индекса следующего бара
     }
//--------------------------------------------------------------------
   return ;                           // Выход из спец. ф-ии start()
  }
//--------------------------------------------------------------------
내가 필요한 것만 골라서 가져갈게...
 extern int History  = 50 ;             // Колич.баров в расчётной истории
extern int Aver_Bars= 5 ;             // Количество баров для расчёта
double Buf_0[];                     // Объявление индикаторного массива
int start()                         // Специальная функция start()
  {
   int i,                           // Индекс бара
   n,                               // Формальный параметр
   Counted_bars;                     // Количество просчитанных баров 
   Counted_bars= IndicatorCounted (); // Количество просчитанных баров 
   i= Bars -Counted_bars- 1 ;           // Индекс первого непосчитанного
   if (i>History- 1 )                 // Если много баров то ..
      i=History- 1 ;                   // ..рассчитывать заданное колич.
      Buf_0[i]=(Sum_H-Sum_L)/Aver_Bars; // Знач. 0 буфера на i-ом баре
      i--;  

그런 다음 "정면 보기"로 가져와 주석을 제거하고 논리적으로 나누면 다음을 얻습니다.

 //|+--------------------------------------+
//|Inputs                                 |
//|+--------------------------------------+
extern int History  = 50 ;
//|+--------------------------------------+
//|Declaration                            |
//|+--------------------------------------+
double Buf_0[];
int i;
int n;
int Counted_bars;
//|+--------------------------------------+
//| Start?                                |
//| Yes, babe!                            |
//|+--------------------------------------+
int start(){
//+-----------+
//Level 1 
//+-----------+
Counted_bars= IndicatorCounted ();
i= Bars -Counted_bars- 1 ;
   //+-----------+
   //Level 2
   //+-----------+
   if (i>History- 1 ) i=History- 1 ;
     //+------------+
     //Level 3 
     //+------------+
    Buf_0[i]= 
    i--;  
//+---------------------------------------+

그래서 "메인" 코드로 합성해야 하는 개체만 남았습니다. 병합 후 다음 코드를 얻습니다.

 //+--------------------------------------------+
#property indicator_separate_window
#property indicator_minimum - 10
#property indicator_maximum 10
#property indicator_buffers 1
#property indicator_color1 Blue
//|+--------------------------------------------+
//|Inputs                                       |
//|+--------------------------------------------+
extern double N = 1 ;
extern int History  = 50 ;
//|+--------------------------------------------+
//|Deklaration                                  |
//|+--------------------------------------------+
double A; double C;       int i;
double M; double D;
double L; double I;       int Counted_bars;
double B; double F;
double K; double Buf_0[];
double G; 
//|+--------------------------------------------+
int init(){
SetIndexBuffer ( 0 ,Buf_0);
SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 2 );
return ; }
//|+--------------------------------------------+
int start() {
       //|+-----------+
       //|Level 1     |
       //|+-----------+
       A = iRSI ( Symbol (), 0 , 10 , 0 , 0 );
       M = iRSI ( Symbol (), 0 , 20 , 0 , 0 );
       L = iRSI ( Symbol (), 0 , 15 , 0 , 0 );
B = iStochastic ( Symbol (), 0 , 10 , 6 , 6 , 0 , 0 , 0 , 0 );
K = iStochastic ( Symbol (), 0 , 10 , 6 , 6 , 0 , 0 , 1 , 0 );
       C = iADX ( Symbol (), 0 , 10 , 0 , 0 , 0 );
       D = iADX ( Symbol (), 0 , 10 , 0 , 1 , 0 );
       I = iADX ( Symbol (), 0 , 10 , 0 , 2 , 0 );
       F = iRVI ( Symbol (), 0 , 10 , 0 , 0 );
   Counted_bars= IndicatorCounted ();
              i= Bars -Counted_bars- 1 ;
         //+-----------+
         //Level 2     |
         //+-----------+
         if (i>History- 1 ) i=History- 1 ;
         Buf_0[i] = N *(((B + F) / K) - ((D + I) / C) + ((A + M) / L));
         return ; } 
//+-------------------------------------------+
프로그래밍하는 동안 "주"코드를 장식적으로 변경하고 "하위"에서 일부 값을 제거했습니다. 코드를 실행한 후 추론 과정에서 오류를 나타내는 수평선을 발견했습니다. 사용자 지정 지표 에 사용된 기술 지표는 오랜 기간 동안 "y" 함수를 플롯한 값을 제공할 수 없기 때문입니다. = x ".

참조.
제 이름은 존(유진이지만 미국식으로)입니다.

저는 15세이고 5일 동안 거래를 했으며 통화 거래, 즉 지표 분석 및 그래픽 분석(즉, 즉 :) ) 분야를 연구하는 데 큰 진전을 느낍니다.
나는 "수동 거래"가 점점 덜 유망해지고 있다고 생각하여 즉시 "자동 거래"로 전환하기로 결정했습니다.

모든 부적절한 판단을 "따르십시오"! 더 알고 싶고 귀하의 의견이 도움이 될 것입니다.

 
Link_x :
안녕하세요!
제 추론에서 오류를 찾아주세요.

두 번째 날은 표시기를 만들기 위해 애쓰면서, 즉 기본 창에 연결된 추가 창에 선을 표시하기 위해 애쓰면서 끝납니다. 제 생각에는 카운트되지 않은 막대에 대한 계산을 수행하고 계산 결과의 값을 버퍼에 제공해야합니다. 이번에는 더 복잡한 코드를 예로 사용합니다(저는 비교적 큰 코드로 작업하는 것을 즐깁니다). 다음은 "창의력 제거"입니다.

.

"이 지우기에서" 버퍼의 값이 "0"인 것을 분명히 알 수 있습니다. 이 표시기는 거래 플랫폼이 시작된 순간부터 선을 그을 것입니다. 그리고 유효한 데이터 외에도 과거 데이터가 필요합니다.

이 코드(MQ4 자습서에서 가져옴)에 설명된 정보를 사용했습니다.

내가 필요한 것만 골라서 가져갈게...

그런 다음 "정면 보기"로 가져와 주석을 제거하고 논리적으로 나누면 다음을 얻습니다.

그래서 "메인" 코드로 합성해야 하는 개체만 남았습니다. 병합 후 다음 코드를 얻습니다.

프로그래밍하는 동안 "주"코드를 장식적으로 변경하고 "하위"에서 일부 값을 제거했습니다. 코드를 실행한 후 추론 과정에서 오류를 나타내는 수평선을 발견했습니다. 사용자 지정 지표에 사용된 기술 지표는 장기간에 걸쳐 함수를 플롯한 값을 제공할 수 없기 때문입니다. " y = x ".

참조.
제 이름은 존(유진이지만 미국식으로)입니다.

저는 15세이고 5일 동안 거래를 했으며 통화 거래, 즉 지표 분석 및 그래픽 분석(즉, 즉 :) ) 분야를 연구하는 데 큰 진전을 느낍니다.
나는 "수동 거래"가 점점 덜 유망해지고 있다고 생각하여 즉시 "자동 거래"로 전환하기로 결정했습니다.

모든 부적절한 판단을 "따르십시오"! 더 알고 싶고 귀하의 의견이 도움이 될 것입니다.

잘 시작했습니다.

변수 History에 주의하고 다른 값으로 대체해 보십시오.

//                Джон(Евгений).mq4 

//+--------------------------------------------+
#property indicator_separate_window
//#property indicator_minimum -10
//#property indicator_maximum 10
#property indicator_buffers 1
#property indicator_color1 Blue
//|+--------------------------------------------+
//|Inputs                                       |
//|+--------------------------------------------+
extern double N = 1 ;
extern int History  = 50 ;
//|+--------------------------------------------+
//|Deklaration                                  |
//|+--------------------------------------------+
double A; double C;       int i;
double M; double D;
double L; double I;       int Counted_bars;
double B; double F;
double K; double Buf_0[];
double G; 
//|+--------------------------------------------+
int init(){
SetIndexBuffer ( 0 ,Buf_0);
SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 2 );
return ; }
//|+--------------------------------------------+
int start()
{
       //|+-----------+
       //|Level 1     |
       //|+-----------+
 for ( i= 0 ; i<History; i++)
    {    
       A = iRSI ( Symbol (), 0 , 10 , 0 ,i);
       M = iRSI ( Symbol (), 0 , 20 , 0 ,i);
       L = iRSI ( Symbol (), 0 , 15 , 0 , 0 );
       B = iStochastic ( Symbol (), 0 , 10 , 6 , 6 , 0 , 0 , 0 ,i);
       K = iStochastic ( Symbol (), 0 , 10 , 6 , 6 , 0 , 0 , 1 ,i);
       C = iADX ( Symbol (), 0 , 10 , 0 , 0 ,i);
       D = iADX ( Symbol (), 0 , 10 , 0 , 1 ,i);
       I = iADX ( Symbol (), 0 , 10 , 0 , 2 ,i);
       F = iRVI ( Symbol (), 0 , 10 , 0 ,i);
    Buf_0[i] = N *(((B + F) / K) - ((D + I) / C) + ((A + M) / L));
   }
 return ;
} 
//+-------------------------------------------+
 
Link_x :
안녕하세요!
제 추론에서 오류를 찾아주세요.

두 번째 날은 표시기를 만들기 위해 애쓰면서, 즉 기본 창에 연결된 추가 창에 선을 표시하기 위해 애쓰면서 끝납니다. 제 생각에는 카운트되지 않은 막대에 대한 계산을 수행하고 계산 결과의 값을 버퍼에 제공해야합니다. 이번에는 더 복잡한 코드를 예로 사용합니다(저는 비교적 큰 코드로 작업하는 것을 즐깁니다). 다음은 "창의력 제거"입니다.

.

"이 지우기에서" 버퍼의 값이 "0"인 것을 분명히 알 수 있습니다. 이 표시기는 거래 플랫폼이 시작된 순간부터 선을 그을 것입니다. 그리고 유효한 데이터 외에도 과거 데이터가 필요합니다.

이 코드(MQ4 자습서에서 가져옴)에 설명된 정보를 사용했습니다.

내가 필요한 것만 골라서 가져갈게...

그런 다음 "정면 보기"로 가져와 주석을 제거하고 논리적으로 나누면 다음을 얻습니다.

그래서 "메인" 코드로 합성해야 하는 개체만 남았습니다. 병합 후 다음 코드를 얻습니다.

프로그래밍하는 동안 "주"코드를 장식적으로 변경하고 "하위"에서 일부 값을 제거했습니다. 코드를 실행한 후 추론 과정에서 오류를 나타내는 수평선을 발견했습니다. 사용자 지정 지표에 사용된 기술 지표는 장기간에 걸쳐 함수를 플롯한 값을 제공할 수 없기 때문입니다. " y = x ".

참조.
제 이름은 존(유진이지만 미국식으로)입니다.

저는 15세이고 5일 동안 거래를 했으며 통화 거래, 즉 지표 분석 및 그래픽 분석(즉, 즉 :) ) 분야를 연구하는 데 큰 진전을 느낍니다.
나는 "수동 거래"가 점점 덜 유망해지고 있다고 생각하여 즉시 "자동 거래"로 전환하기로 결정했습니다.

모든 부적절한 판단을 "따르십시오"! 더 알고 싶고 귀하의 의견이 도움이 될 것입니다.


마지막으로 필요한 이유에 대한 주제에 대해 순환 방향(for, wile, while do)으로 파기 시작)))


과거 데이터에 대한 값이 필요한 경우 루프에서 바로 이러한 데이터를 반복하지 않고는 방법이 없습니다.)

위에서 우리는 인디케이터에 의해 처리될 히스토리 바의 수를 설정하는 히스토리의 예를 제시했으며, 여기서 댄스가 시작됩니다.

 


사진에서 출구가 있어야 할 곳을 화살표로 표시해 두었습니다. 무슨 일인지 이해가 안 돼요. 들어가, 시간을 기억해

그런 다음 한 기간 동안 교대로 시간이 입구보다 많고 가격이 3일 MA min 미만일 때 종료합니다.

코드는 다음과 같습니다.

signal =   MA_6_t - iClose ( Symbol (), Period (), 0 );
MA_2_t= iMA ( NULL , 0 , 3 , 0 , MODE_EMA , PRICE_LOW , 0 ); 
static datetime t;

if   (signal > 0.006 ) 
          {                                          
          Opn_S= true ; 
          t= Time [ 0 ];                      
          }
if   ( Bid <= MA_2_t)
      {
       if ( Time [ 1 ]>t)
          {                                      
          Cls_S= true ;         
          }
      }
당신은 무엇을 제안합니까?