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

 
STARIJ :
날짜, 시간, 입찰가 및 계산 결과각 틱 에 대한 파일에 쓰십시오. 그런 다음 Excel에 업로드하고 확인합니다. 프로그램의 10줄마다 조정하는 것은 거의 의미가 없습니다!

하지만 보세요, 조건 연산자의 각 분기에 반환값이 있습니다. 항상 실행됩니다. 그런 다음 조건 연산자 외부에서 가져옵니다. 우리는 다음을 얻습니다:

입찰[1] - 발생합니까?


고맙습니다. 지금 시도하겠습니다. 나는 당신의 코드의 본질을 이해했고 이것은 이미 나에게 큰 성취입니다 :) 나는 나의 결점을 보았습니다.

SRC 버튼이란?

 
STARIJ :
날짜, 시간, 입찰가 및 계산 결과각 틱 에 대한 파일에 쓰십시오. 그런 다음 Excel에 업로드하고 확인합니다. 프로그램의 10줄마다 조정하는 것은 거의 의미가 없습니다!

하지만 보세요, 조건 연산자의 각 분기에 반환값이 있습니다. 항상 실행됩니다. 그런 다음 조건 연산자 외부에서 가져옵니다. 우리는 다음을 얻습니다:

입찰[1] - 발생합니까?


사용자 지정 표시기의 "생성자"에 코드를 삽입했습니다. 컴파일됨. 컴파일러에서 경고 1개 발생: OnCalculate 2개가 정의되었습니다. OHLC 버전이 사용됩니다(내용을 이해하지 못했습니다)

컴파일된 제품을 받았습니다. 차트에 첨부합니다. 차트에 대한 별도의 창이 열렸지만 눈금이 있지만 히스토그램이 표시되지 않습니다.

뭐가 문제 야? 말하다?

 #property version    "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots    2
//--- plot Label1
#property indicator_label1    "Label1"
#property indicator_type1    DRAW_HISTOGRAM
#property indicator_color1    clrRed
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
//--- plot Label2
#property indicator_label2    "Label2"
#property indicator_type2    DRAW_HISTOGRAM
#property indicator_color2    clrDarkTurquoise
#property indicator_style2    STYLE_SOLID
#property indicator_width2    1

//- local variables
int Tick, Tick2;       // Для вставки программы используйте кнопку SRC
double Bid1;

//--- indicator buffers
double          Label1Buffer[];
double          Label2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,Label1Buffer);
   SetIndexBuffer ( 1 ,Label2Buffer);
   Bid1= Bid ;
//---
   return ( INIT_SUCCEEDED );
  }
  
 
     void start()   // Вместо start более модно писать OnTick
{
     if ( Bid > Bid1) Tick++;                             
     else Tick2++;
    Bid1= Bid ;                      
}
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+

 
YarTrade :

사용자 지정 표시기의 "생성자"에 코드를 삽입했습니다. 컴파일됨. 컴파일러에서 경고 1개 발생: OnCalculate 2개가 정의되었습니다. OHLC 버전이 사용됩니다(내용을 이해하지 못했습니다)

컴파일된 제품을 받았습니다. 차트에 첨부합니다. 차트에 대한 별도의 창이 열렸지만 눈금이 있지만 히스토그램이 표시되지 않습니다.

뭐가 문제 야? 말하다?

여기에 코드를 붙여넣을 때 SRC 메시지 편집기 버튼을 사용하십시오. 메시지 입력 필드 상단에는 메시지 서식 패널에 유용한 흥미로운 것들이 많이 있습니다.

입력하는 글보다 조금 더 눈을 뜨기 어렵지 않으신가요? 그리고 신발장 말고 일반 코드로 보는게 훨씬 편하지 않나요?

귀하의 메시지에 귀하의 코드를 올바르게 삽입했습니다(SRC).

 
Artyom Trishkin :

여기에 코드를 붙여넣을 때 SRC 메시지 편집기 버튼을 사용하십시오. 메시지 입력 필드 상단에는 메시지 서식 패널에 유용한 흥미로운 것들이 많이 있습니다.

입력하는 글보다 조금 더 눈을 뜨기 어렵지 않으신가요? 그리고 신발장 말고 일반 코드로 보는게 훨씬 편하지 않나요?

귀하의 메시지에 귀하의 코드를 올바르게 삽입했습니다(SRC).


네. 고맙습니다. 몰랐다

 
YarTrade :

컴파일러에서 경고 1개 발생: OnCalculate 2개가 정의되었습니다. OHLC 버전이 사용됩니다(내용을 이해하지 못했습니다)

컴파일된 제품을 받았습니다. 차트에 첨부합니다. 차트에 대한 별도의 창이 열렸지만 눈금이 있지만 히스토그램이 표시되지 않습니다.

뭐가 문제 야? 말하다?

이전에는 이 기능을 Start라고 불렀으나 이제는 Expert Advisor에서 OnTick , 표시기에서 OnCalculate라고 합니다. 컴파일러는 경고합니다: 같은 함수가 다른 이름으로 두 번 있습니다. Start의 내용을 OnCalculate로 옮기고 Start를 삭제합니다. 그래도 프로그램에서 무엇을 어떻게 표시해야 하는지 설명해야 합니다. 첫째, 스스로 결정하십시오 - 어떤 종류의 사진을 얻어야합니까? 스크립트를 작성하여 MQL 언어 학습을 시작하는 것이 좋습니다. Expert Advisor가 더 어렵고 지표가 훨씬 더 어렵습니다.

 
STARIJ :

이전에는 이 기능을 Start라고 불렀으나 이제는 Expert Advisor에서 OnTick, 표시기에서 OnCalculate라고 합니다. 컴파일러는 다음과 같이 경고합니다. 동일한 함수가 다른 이름으로 두 번 있습니다. Start의 내용을 OnCalculate로 옮기고 Start를 삭제합니다. 그래도 프로그램에서 무엇을 어떻게 표시해야 하는지 설명해야 합니다. 첫째, 스스로 결정하십시오 - 어떤 종류의 사진을 얻어야합니까? 스크립트를 작성하여 MQL 언어 학습을 시작하는 것이 좋습니다. Expert Advisor가 더 어렵고 지표가 훨씬 더 어렵습니다.


Start의 내용을 OnCalculate 에 삽입하는 데 문제가 발생하면 많은 오류가 발생합니다.

 
YarTrade : Start의 내용을 OnCalculate에 삽입하는 데 문제가 발생하여 많은 오류가 발생합니다.


표시기는 출시 순간의 정보만 표시합니다. 데이터 창(Ctrl-D)은 커서가 가리키는 양초의 데이터를 표시합니다.

 //+------------------------------------------------------------------+
//|                                                     -Тики-07.mq4 |
//+------------------------------------------------------------------+
#property version    "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 2
//  #property indicator_plots   2        в MQL-4 такое отсутствует
#property indicator_label1    "Вверх"
#property indicator_type1    DRAW_HISTOGRAM
#property indicator_color1   Salmon
#property indicator_style1    STYLE_SOLID
#property indicator_width1    2

#property indicator_label2    "Вниз"
#property indicator_type2    DRAW_HISTOGRAM
#property indicator_color2    clrDarkTurquoise
#property indicator_style2    STYLE_SOLID
#property indicator_width2    2

datetime Время= 0 ;   // Время прошлого бара
double Bid1;

double    Buf_1[], Buf_2[]; // 2 буфера

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit ()
{
   IndicatorDigits ( 0 );
   SetIndexBuffer ( 0 ,Buf_1);
   SetIndexBuffer ( 1 ,Buf_2);
   Bid1= Bid ;
}
 
 
//+------------------------------------------------------------------+
//| 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 Вр= Time [ 0 ];   // Время текущего бара
   if (Вр>Время)           // Если новый бар
   {
      Время=Вр;           // Запомнить
      Buf_1[ 0 ]= 0 ;         // и обнулить последний элемент буфера
      Buf_2[ 0 ]= 0 ;
   }

   if ( Bid > Bid1) Buf_1[ 0 ]++;                             
   else Buf_2[ 0 ]--;
   Bid1= Bid ;                      

   return (rates_total);
}
 
Alexey Kozitsyn :

:)

그리고 함수의 이름으로 생성된 위치를 어떻게 공식화할 것인가?
 
STARIJ :
그리고 함수의 이름으로 생성된 위치를 어떻게 공식화할 것인가?

start는 더 이상 사용되지 않는 이름입니다. OnTick() - 틱 처리 함수의 실제 이름입니다.

그래서 어떻게 정의를 내리든 '패셔너블하다'는 말만 미소를 지었다.

 
Alexey Kozitsyn :

start는 더 이상 사용되지 않는 이름입니다. OnTick() - 틱 처리 함수의 실제 이름입니다.

그래서 어떻게 정의를 내리든 '패셔너블하다'는 말만 미소를 지었다.

Deprecated는 더 이상 사용되지 않습니다. 그리고 삶을 시작하고 살 것이다...