초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 440 1...433434435436437438439440441442443444445446447...1503 새 코멘트 Николай Никитюк 2015.09.17 16:37 #4391 안녕하세요! 2015.09.17_19:07 GMT+3. EA 프로그램에서 동적 배열의 크기를 설정합니다. 그리고 컴파일러는 "쉼표가 필요합니다"라는 오류를 생성합니다. 그리고 프로그램 텍스트에서 변수가 발견되면 "변수 등은 전역 수준에서 변수 선언을 숨깁니다."라는 경고를 표시합니다. 난 이해가 안 돼요. 설명서와 같이 모든 것이 올바른 것 같습니다. 코드 스니펫을 첨부합니다. //--- 최대 바 가격 배열 bool ArraySetAsSeries(더블 &High[],bool); //--- bool ArraySetAsSeries(더블 &Low[],bool); //--- 예비(reserve)를 사용하여 배열의 크기를 설정합니다. int ArrayResize(더블 &mrate[],int 16,int 9); int ArrayResize(더블 &maVal[],int 16,int 9); int ArrayResize(더블 &fVal[],int 3,int 2); int ArrayResize(더블 &zVal[],int 3,int 0); int ArrayResize(더블 & 하이[],int 1,int 0); int ArrayResize(더블 &Low[],int 1,int 0); //+----------------------------------------------- --------------------+ //| 전문적인 초기화 해제 기능 | //+----------------------------------------------- --------------------+ 무효 OnDeinit(const int 이유) //--- массив максимальных цен баров bool ArraySetAsSeries ( double &High[], bool ); //--- bool ArraySetAsSeries ( double &Low[], bool ); //--- устанавливаю размеры массивов с запасом (reserve) int ArrayResize ( double &mrate[], int 16 , int 9 ); int ArrayResize ( double &maVal[], int 16 , int 9 ); int ArrayResize ( double &fVal[], int 3 , int 2 ); int ArrayResize ( double &zVal[], int 3 , int 0 ); int ArrayResize ( double &High[], int 1 , int 0 ); int ArrayResize ( double &Low[], int 1 , int 0 ); //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { { Questions from Beginners MQL5 포럼을 어지럽히 지 않도록 찻주전자의 질문 Vladimir Karputov 2015.09.17 16:46 #4392 Николай Никитюк : 안녕하세요! 2015.09.17_19:07 GMT+3. EA 프로그램에서 동적 배열의 크기를 설정합니다. 그리고 컴파일러는 "쉼표가 필요합니다"라는 오류를 생성합니다. 그리고 프로그램의 텍스트에서 그것이 발생하면 High[] 및 Low[]라는 배열은 시계열 배열에 대해 예약된 시스템 이름이므로 선언할 수 없습니다. ArrayResize 철자가 잘못되었습니다. 다음과 같아야 합니다. //--- устанавливаю размеры массивов с запасом (reserve) ArrayResize (mrate, 16 , 9 ); ArrayResize (maVal, 16 , 9 ); ArrayResize (fVal, 3 , 2 ); ArrayResize (zVal, 3 ); 배열에 대한 시계열 플래그를 설정하면 다음과 같습니다. //--- массив максимальных цен баров ArraySetAsSeries (High, true ); //--- ArraySetAsSeries (Low, true ); Николай Никитюк 2015.09.17 16:47 #4393 2015.09.17_19:45 GMT+3. 만일을 대비하여 .png 파일을 첨부합니다: 파일: srtdaietpv_0hs8ag_vx918u.png 114 kb Николай Никитюк 2015.09.17 16:54 #4394 Karputov Vladimir : High[] 및 Low[]라는 배열은 시계열 배열에 대해 예약된 시스템 이름이므로 선언할 수 없습니다. ArrayResize 철자가 잘못되었습니다. 다음과 같아야 합니다. 고맙습니다! 당신은 너무 빨리 응답했습니다. 모스크바 시간 20시에 나는 불을 끕니다. 나머지는 나중에 볼게요. 19:54 모스크바 시간. Aleksey Vyazmikin 2015.09.17 17:43 #4395 Karputov Vladimir : 내 코드를 의미한다면 예, 내 코드는 새 막대를 확인하는 것입니다. 내가 첨부한 코드에 관심이 있습니다. 코드가 무엇을 하는지 이해하고 싶습니다. Vladimir Karputov 2015.09.17 19:30 #4396 -Aleks- : 첨부한 코드에 관심이 있습니다. 코드가 무엇을 하는지 알고 싶습니다. 제공한 코드는 아무 작업도 수행하지 않거나 작동하지 않습니다. 실수: if (TimeN== 0 ) TimeN=TimeC; 이 조건은 프로그램을 처음 시작할 때 한 번만 작동합니다. 이 시점에서 정적 변수 가 초기화됩니다. 코드에서 TimeN 변수는 영원한 0(더 정확하게는 1970년 1월 1일)과 같을 것이고 이 영원한 0을 TimeC 변수와 비교하는 것이 제안되기 때문에 아래 조건을 확인하는 것은 무의미합니다. , 현재 막대의 여는 시간과 동일): if (TimeN==TimeC) return ; Aleksey Vyazmikin 2015.09.17 21:04 #4397 Karputov Vladimir : 제공한 코드는 아무 작업도 수행하지 않거나 작동하지 않습니다. 실수: 이 조건은 프로그램을 처음 시작할 때 한 번만 작동합니다. 이 시점에서 정적 변수 가 초기화됩니다. 코드에서 TimeN 변수는 영원한 0(더 정확하게는 1970년 1월 1일이 됨)과 같을 것이고 이 영원한 0을 TimeC 변수와 비교하는 것이 제안되기 때문에 아래 조건을 확인하는 것은 무의미합니다. , 현재 막대의 여는 시간과 동일): 이제 나는 이것을 고문에게 써야 했던 이유를 생각하고 있습니다. 명확하게 해 주셔서 감사합니다! Aleksey Vyazmikin 2015.09.17 22:24 #4398 Karputov Vladimir : 새 막대가 M1 기간에 있으면 다음 메시지를 인쇄하십시오. 전체 코드를 제공하지 않은 것으로 나타났습니다. 다음과 같이 정확했습니다. int init() { static datetime TimeN=0; return(INIT_SUCCEEDED); } int start() { datetime TimeC=iTime(NULL,TF,0); if(TimeN==0)TimeN=TimeC; if(TimeN==TimeC) return(0); TimeN=TimeC; // Код программы исполняется при появлении нового бара return(INIT_SUCCEEDED); } 그렇다면, 그는 노동자, 그렇지? Vladimir Karputov 2015.09.18 03:45 #4399 -Aleks- : 전체 코드를 제공하지 않은 것으로 나타났습니다. 다음과 같이 정확했습니다. int init() { static datetime TimeN=0; return(INIT_SUCCEEDED); } int start() { datetime TimeC=iTime(NULL,TF,0); if(TimeN==0)TimeN=TimeC; if(TimeN==TimeC) return(0); TimeN=TimeC; // Код программы исполняется при появлении нового бара return(INIT_SUCCEEDED); } 그렇다면, 그는 노동자, 그렇지? 이 코드를 컴파일해 보셨습니까? 여기에 오류가 있습니다. TimeN 변수는 OnInit()에서 선언되었으며 이 변수는 OnInit()이 종료될 때 소멸됩니다. 따라서 OnTick() 함수 에서 오류가 발생합니다. 'TimeN' - undeclared identifier 작업 코드는 다음과 같습니다. //+------------------------------------------------------------------+ //| Test.mq4 | //| Copyright 2015, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { //--- //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { //--- static datetime TimeN; datetime TimeC=iTime( NULL , PERIOD_M1 , 0 ); if (TimeN==TimeC) return ; TimeN=TimeC; // новый бар, выполняем код Print ( "New bar" ); return ; } //+------------------------------------------------------------------+ Aleksey Vyazmikin 2015.09.18 05:47 #4400 Karputov Vladimir : 이 코드를 컴파일해 보셨습니까? 여기에 오류가 있습니다. TimeN 변수는 OnInit()에서 선언되었으며 이 변수는 OnInit()이 종료될 때 소멸됩니다. 따라서 OnTick() 함수 에서 오류가 발생합니다. 작업 코드는 다음과 같습니다. 나는 이것을 잘못 썼습니다. static datetime TimeN=0; int 이전 영역에서 OnInit () - 외부 및 기타 변수가 선언되는 곳입니다. 1...433434435436437438439440441442443444445446447...1503 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
안녕하세요! 2015.09.17_19:07 GMT+3. EA 프로그램에서 동적 배열의 크기를 설정합니다. 그리고 컴파일러는 "쉼표가 필요합니다"라는 오류를 생성합니다. 그리고 프로그램 텍스트에서 변수가 발견되면 "변수 등은 전역 수준에서 변수 선언을 숨깁니다."라는 경고를 표시합니다. 난 이해가 안 돼요. 설명서와 같이 모든 것이 올바른 것 같습니다. 코드 스니펫을 첨부합니다.
//--- 최대 바 가격 배열
bool ArraySetAsSeries(더블 &High[],bool);
//---
bool ArraySetAsSeries(더블 &Low[],bool);
//--- 예비(reserve)를 사용하여 배열의 크기를 설정합니다.
int ArrayResize(더블 &mrate[],int 16,int 9);
int ArrayResize(더블 &maVal[],int 16,int 9);
int ArrayResize(더블 &fVal[],int 3,int 2);
int ArrayResize(더블 &zVal[],int 3,int 0);
int ArrayResize(더블 & 하이[],int 1,int 0);
int ArrayResize(더블 &Low[],int 1,int 0);
//+----------------------------------------------- --------------------+
//| 전문적인 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
무효 OnDeinit(const int 이유)
{
안녕하세요! 2015.09.17_19:07 GMT+3. EA 프로그램에서 동적 배열의 크기를 설정합니다. 그리고 컴파일러는 "쉼표가 필요합니다"라는 오류를 생성합니다. 그리고 프로그램의 텍스트에서 그것이 발생하면
내 코드를 의미한다면 예, 내 코드는 새 막대를 확인하는 것입니다.
첨부한 코드에 관심이 있습니다. 코드가 무엇을 하는지 알고 싶습니다.
제공한 코드는 아무 작업도 수행하지 않거나 작동하지 않습니다. 실수:
이 조건은 프로그램을 처음 시작할 때 한 번만 작동합니다. 이 시점에서 정적 변수 가 초기화됩니다.
코드에서 TimeN 변수는 영원한 0(더 정확하게는 1970년 1월 1일)과 같을 것이고 이 영원한 0을 TimeC 변수와 비교하는 것이 제안되기 때문에 아래 조건을 확인하는 것은 무의미합니다. , 현재 막대의 여는 시간과 동일):
제공한 코드는 아무 작업도 수행하지 않거나 작동하지 않습니다. 실수:
이 조건은 프로그램을 처음 시작할 때 한 번만 작동합니다. 이 시점에서 정적 변수 가 초기화됩니다.
코드에서 TimeN 변수는 영원한 0(더 정확하게는 1970년 1월 1일이 됨)과 같을 것이고 이 영원한 0을 TimeC 변수와 비교하는 것이 제안되기 때문에 아래 조건을 확인하는 것은 무의미합니다. , 현재 막대의 여는 시간과 동일):
이제 나는 이것을 고문에게 써야 했던 이유를 생각하고 있습니다.
명확하게 해 주셔서 감사합니다!
새 막대가 M1 기간에 있으면 다음 메시지를 인쇄하십시오.
전체 코드를 제공하지 않은 것으로 나타났습니다. 다음과 같이 정확했습니다.
int init()
{
static datetime TimeN=0;
return(INIT_SUCCEEDED);
}
int start()
{
datetime TimeC=iTime(NULL,TF,0);
if(TimeN==0)TimeN=TimeC;
if(TimeN==TimeC) return(0);
TimeN=TimeC;
// Код программы исполняется при появлении нового бара
return(INIT_SUCCEEDED);
}
전체 코드를 제공하지 않은 것으로 나타났습니다. 다음과 같이 정확했습니다.
int init()
{
static datetime TimeN=0;
return(INIT_SUCCEEDED);
}
int start()
{
datetime TimeC=iTime(NULL,TF,0);
if(TimeN==0)TimeN=TimeC;
if(TimeN==TimeC) return(0);
TimeN=TimeC;
// Код программы исполняется при появлении нового бара
return(INIT_SUCCEEDED);
}
작업 코드는 다음과 같습니다.
이 코드를 컴파일해 보셨습니까? 여기에 오류가 있습니다. TimeN 변수는 OnInit()에서 선언되었으며 이 변수는 OnInit()이 종료될 때 소멸됩니다. 따라서 OnTick() 함수 에서 오류가 발생합니다.
작업 코드는 다음과 같습니다.
나는 이것을 잘못 썼습니다. static datetime TimeN=0; int 이전 영역에서 OnInit () - 외부 및 기타 변수가 선언되는 곳입니다.