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

 
psyman :

내 주제에서 나온 귀하의 서신을 읽었습니다. 물론 모두 재미있습니다 :-) 하지만 이 들끓는 질문은 어떻습니까?

SetIndexBuffer(1, tmp1)를 통해 배열을 선언하면 아무 작업도 수행되지 않습니다. 물론 같은 루프에서 배열 차원을 늘릴 수도 있지만 더 간단하고 효율적인 방법을 알고 싶습니다.

코드 전체를 보여주세요 - 당신이 그곳에서 무엇을 했는지, 무엇을 원했고 무슨 일이 일어났는지.

 

변동성을 살펴보고 싶습니다. 우선, SMA를 사용하여 기간에 대한 평균을 열고 닫습니다.


 //+------------------------------------------------------------------+
//|                                                        _null.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property version    "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots    1
//--- plot OC
#property indicator_label1    "O-C"
#property indicator_type1    DRAW_LINE
#property indicator_color1    clrSteelBlue
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
//--- indicator buffers
double          ip1Buf[];

input int ip1= 100 ;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
  
string s_name1;

s_name1= "O-C (" + IntegerToString (ip1) + ")" ;

IndicatorShortName (s_name1);
SetIndexLabel ( 0 , s_name1);


//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,ip1Buf);
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| 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 i;
double tmp1[];

SetIndexBuffer ( 1 , tmp1);


       Print ( "rates_total = " ,rates_total);
       for (i= 1 ; i<rates_total- 1 ; i++)
      {
      tmp1[i]=close[i];      
      ip1Buf[i]=iMA(NULL,0,100,0,0,tmp1[i],0);
      
      }
   
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
psyman :

변동성을 살펴보고 싶습니다. 우선, SMA를 사용하여 기간에 대한 평균을 열고 닫습니다.


SetIndexBuffer(1, tmp1) 왜 OnInit() 에 없나요?

IndicatorBuffers(2)가 없는 이유는 무엇입니까?

왜 최적으로 계산하지 않습니까? 각 틱 에서 - 전체주기.

iMAOnArray()가 아닌 iMA()가 필요한 이유는 무엇입니까?

 

= IndicatorBuffers(2)가 없는 이유는 무엇입니까?


#property strict는 이에 대해 맹세하지 않습니다. 아마도 이것이 등록되지 않은 이유일 것입니다.


= iMAOnArray()가 아닌 iMA()가 필요한 이유는 무엇입니까?


제가 알기로는 글을 쓰고 있는데 지식이 부족하고 교과서에 그에 대한 내용이 전혀 나와있지 않습니다.

시스템 지식의 부족은 매우 제한적입니다.


= 각 틱마다 - 전체 주기 .


나는 이것에 대해 아무것도 이해하지 못했습니다. 씹거나 그것이 완료된 링크를 제공하십시오.

시간당 최소 TF가 있습니다.

 
= 각 틱마다 - 전체 주기 На


나는 이것에 대해 아무것도 이해하지 못했습니다. 씹거나 그것이 완료된 링크를 제공하십시오.

시간당 최소 TF가 있습니다.

OnCalculate를 호출할 때마다 for 루프는 1에서 Rates_total까지의 데이터에 대해 침묵을 유지합니다. 같은 일을 합니다. 이것은 물론 나쁜 것입니다.

 
psyman :

= IndicatorBuffers(2)가 없는 이유는 무엇입니까?


#property strict는 이에 대해 맹세하지 않습니다. 이것이 아마도 등록되지 않은 이유일 것입니다.


= iMAOnArray()가 아닌 iMA()가 필요한 이유는 무엇입니까?


제가 알기로는 글을 쓰고 있는데 지식이 부족하고 교과서에 그에 대한 내용이 전혀 나와있지 않습니다.

시스템 지식의 부족은 매우 제한적입니다.


= 각 틱마다 - 전체 주기 .


나는 이것에 대해 아무것도 이해하지 못했습니다. 씹거나 그것이 완료된 링크를 제공하십시오.

시간당 최소 TF가 있습니다.

알다시피, 저는 이 스레드에 있습니다. 그 중간 어딘가에 표시기 템플릿을 첨부했습니다. 찾을 수 있고 이 스레드에서 직접 원하는 모든 작업을 수행할 수 있습니다. 바라보다. 그래서 사람들이 무엇을, 어떻게 궁금해하는지 여러 번 적어서 지표 템플릿을 만들어 이 스레드에 담기로 했습니다.

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MQL4에 대한 모든 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론

안드레이 노비치코프 , 2018.10.17 22:06

OnCalculate를 호출할 때마다 for 루프는 1에서 Rates_total까지의 데이터에 대해 침묵을 유지합니다. 같은 일을 합니다. 이것은 물론 나쁜 것입니다.


나쁘다고 하면 어떻게 하면 잘할 수 있는지 알려주세요. 계산을 OnInit로 이동하시겠습니까?

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MQL4에 대한 모든 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론

Artyom Trishkin , 2018.10.17 22:10

알다시피, 저는 이 스레드에 있습니다. 그 중간 어딘가에 표시기 템플릿을 첨부했습니다. 찾을 수 있고 이 스레드에서 직접 원하는 모든 작업을 수행할 수 있습니다. 바라보다. 그래서 사람들이 무엇을, 어떻게 궁금해하는지 여러 번 적어서 지표 템플릿을 만들어 이 스레드에 담기로 했습니다.


"지표 템플릿"이라는 단어와 귀하의 이름에 따르면 검색은 아무 것도 찾지 못하지만 그들은 이미 전쟁과 평화의 책에 여기에 썼습니다.

게시물의 단어 조합을 기억하십시오.

 
클래스 인스턴스의 배열을 만드는 방법은 무엇입니까?
ClassName* className[] , ArrayResize 를 만들었지만 유효하지 않은 포인터 액세스 방법 에 대한 액세스 권한을 부여하지 않습니다.
 
Roman Sharanov :
클래스 인스턴스의 배열을 만드는 방법은 무엇입니까?
ClassName* className[] , ArrayResize 를 만들었지만 유효하지 않은 포인터 액세스 방법 에 대한 액세스 권한을 부여하지 않습니다.

예는 CArrayObj 에 있습니다.