당사 팬 페이지에 가입하십시오
- 조회수:
- 9
- 평가:
- 게시됨:
-
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
문자열로 주어진 수학적 및 논리적 표현식을 풀기 위한 클래스가 있는 스크립트입니다.
이 스크립트에는 두 개의 클래스인 cTokenBase와 cToken이 포함되어 있으며, cTokenBase 클래스의 멤버입니다. 이 클래스는 별도의 파일에 배치되지 않았는데, 실제 적용을 위해 cTokenBase 클래스에서 일부 변경이 필요하기 때문입니다(아래에서 설명 참조).
모든 MQL5 수학 함수가 지원됩니다: abs, arccos, arcsin, arctan, ceil, cos, exp, floor, log, log10, max, min, mod, 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(문자열 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(문자열 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 클래스에 새 함수 추가하기
- 새 함수를 등록합니다. 등록은 사용자 변수 및 배열 등록과 유사하게 "as" 변수의 Init() 함수에서 수행됩니다.
- 새 함수를 계산하는 코드를 SolveFunc(문자열 Func,문자열 & aRes[]) 함수에 추가합니다. 함수 계산을 위한 인수는 aRes[] 배열에 위치합니다. 함수는 인수를 얼마든지 가질 수 있습니다.
MetaQuotes Ltd에서 러시아어로 번역함.
원본 코드: https://www.mql5.com/ru/code/303

스크립트는 현재 캐릭터별로 사용 가능한 기록을 로드합니다.

Volatility indicator with a threshold line based on the Generalized AutoRegressive Conditional Heteroskedasticiticy (GARCH) statistical model used for time series analysis and forecasting.

MQL5 프로그램에서 기록 로딩을 구성하는 데 사용됩니다.

텔레그램 채널, 그룹, 비공개 채팅의 메시지를 거래 차트에 직접 표시하여 텔레그램과 MT5를 연결해주는 메타트레이더 5 전문가 어드바이저인 TelegramToMT5입니다. 텔레그램 봇을 만들어 원하는 채널/그룹에 추가하기만 하면 EA가 모든 메시지를 차트에 실시간으로 댓글로 표시합니다.