당사 팬 페이지에 가입하십시오
- 조회수:
- 209
- 평가:
- 게시됨:
- 업데이트됨:
-
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
문자열로 주어진 수학 및 논리 식을 해결하는 클래스가 포함된 스크립트입니다.
이 스크립트에는 cTokenBase 클래스와 cTokenBase 클래스의 멤버인 cToken 클래스 두 개가 있습니다. 실제 적용을 위해 cTokenBase 클래스에 몇 가지 변경 사항을 적용해야 하므로(이에 대해서는 아래에서 설명합니다), 클래스들은 별도의 파일로 분리되어 있지 않습니다.
MQL5 언어의 모든 수학 함수 ( abs, arccos, arcsin, arctan, ceil, cos, exp, floor, log, log10, max, min, mod, pow, rand, round, sin, sqrt, tan)를 지원합니다.
산술 및 논리 연산도 지원됩니다: ;/, %, *, +, -, >, <, >=, <=, ==, !=, &&, ||.
표현식의 인자로는 소수점(점)이 포함된 숫자를 비롯해 사용자 정의 변수 및 사용자 정의 배열을 사용할 수 있습니다. 사용자 정의 변수 및 배열을 사용할 경우, 해당 변수 및 배열의 값을 반환하는 함수를 추가로 작성해야 합니다.
사용자 정의 변수 및 배열의 값을 반환하는 함수는 cTokenBase 클래스에 추가됩니다. 사실 이러한 목적을 위해 두 개의 클래스로 분리되었으며, cToken 클래스는 변경 없이 사용되고, cTokenBase 클래스에는 변수 및 배열의 값을 반환하는 함수들이 포함되어 있습니다.
변수와 배열의 이름은 문자로 구성되며(대소문자는 구분되지 않으며, 전체 표현식의 대소문자도 구분되지 않음), 배열의 요소는 대괄호 안에 숫자로 지정됩니다(예: e[0], e[1], f[0], f[1]).
예시:


cTokenBase 클래스 편집 순서
1. 변수 또는 배열 이름을 등록합니다. 등록은 UsersVariables() 함수에서 수행됩니다. 이 함수에서는 UserVariables 및 UserArrays 변수에 값을 할당하며, ";" 구분자를 사용하여 변수 목록을 문자열 값으로 할당합니다.
void UsersVariables() { UserVariables="a;b;c;d"; // 사용자 정의 변수 목록 UserArrays="e;f"; // 사용자 정의 배열 목록 }
2. UserFunc(string FuncName) 함수에 해당 함수 인수를 사용하여 특정 함수를 호출하는 코드를 추가합니다.
string UserFunc(string FuncName) { if(FuncName=="a")return(a()); if(FuncName=="b")return(b()); if(FuncName=="c")return(c()); if(FuncName=="d")return(d()); Alert("변수 ' '에 대한 함수"+FuncName+"미지정"); return("0"); }
3. 각 사용자 정의 변수에 대한 함수를 작성하십시오:
string a() { return("1"); } string b() { return("2"); } string c() { return("3"); } string d() { return("4"); }
4. UserArray(string ArrName, int aIndex) 함수에, 해당 함수의 첫 번째 인수(변수 ArrName)에 따라 특정 함수를 호출하는 코드를 추가하십시오.
변수 aIndex는 사용자 정의 배열 요소의 인덱스를 나타냅니다.
string UserArray(string ArrName,int aIndex) { if(ArrName=="e")return(e(aIndex)); if(ArrName=="f")return(f(aIndex)); Alert("배열용 함수"+ArrName+"미지정"); return("0"); }
5. 각 사용자 정의 배열에 대한 함수를 작성하십시오:
string e(int Index) { string v[]={"1","2","3","4","5","6","7","8","9"}; return(v[Index]); } string f(int Index) { string v[]={"10","20","30","40","50","60","70","80","90"}; return(v[Index]); }
클래스 사용 순서
1. 사용자가 식을 입력할 외부 변수를 선언합니다.
input string Expression="식 입력";
2. 모듈의 일반 섹션에서 클래스 포인터 변수를 선언합니다:
cToken token;
3. Expression 변수에 지정된 표현식을 사용하여 클래스를 초기화합니다.
token.Init(Expression);
4. 필요에 따라 SolveExpression() 메서드를 호출합니다.
double Value=token.SolveExpression(); 이 클래스는 여러 표현식을 해결하는 데 사용할 수 있으며, 각 표현식마다 별도의 클래스 포인터를 선언합니다.
cToken token1; cToken token2; cToken token3; cToken token4;
이 경우 모든 클래스 인스턴스는 cTokenBase 클래스의 동일한 사용자 정의 변수와 배열을 사용하게 됩니다.
이 클래스는 다른 기능을 사용할 수 있도록 수정될 수 있습니다.
cToken 클래스에 새로운 기능 추가
- 새로운 함수를 등록합니다. 등록은 Init() 함수 내의 "as" 변수를 통해 수행됩니다(사용자 정의 변수 및 배열 등록과 유사).
- SolveFunc(string Func, string &aRes[]) 함수에 새로운 함수를 계산하는 코드를 추가합니다. 함수 계산을 위한 인수는 aRes[] 배열에 포함됩니다. 함수는 임의의 개수의 인수를 가질 수 있습니다.
MetaQuotes Ltd에서 러시아어로 번역함.
원본 코드: https://www.mql5.com/ru/code/303
downloadhistory.mq5
이 스크립트는 현재 종목에 대해 조회 가능한 시세 내역을 불러옵니다.
Rainbow Multiple Moving Average (RMMA) MT5
레인보우 다중이동평균(RMMA) 메타트레이더 보조지표 - 표준 이동평균을 기반으로 하는 매우 간단하지만 시각적으로 정보를 제공하는 보조지표입니다. 차트의 메인 창에 원하는 유형과 가격의 66개 무지개색 이동평균선을 직접 그립니다. 이 보조지표는 MT4 및 MT5 버전의 거래 플랫폼에서 모두 사용할 수 있습니다.
CDownLoadHistory 클래스
MQL5의 프로그램에서 거래 내역을 불러오도록 설정하는 데 사용됩니다.
Telegram To MT5 Copier
텔레그램 채널, 그룹, 비공개 채팅의 메시지를 거래 차트에 직접 표시하여 텔레그램과 MT5를 연결해주는 메타트레이더 5 전문가 어드바이저인 TelegramToMT5입니다. 텔레그램 봇을 만들어 원하는 채널/그룹에 추가하기만 하면 EA가 모든 메시지를 차트에 실시간으로 댓글로 표시합니다.