당사 팬 페이지에 가입하십시오
- 조회수:
- 11
- 평가:
- 게시됨:
-
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
이 라이브러리는 입력 매개변수로 작업할 때 일상적인 작업을 줄여줍니다.
사용 예로 트레이딩 어드바이저를 예로 들어 보겠습니다. 거래 로직을 작성할 때 OOP 접근 방식을 사용하는 것이 더 복잡한 시스템에 EA를 더 쉽게 포함시킬 수 있기 때문에 합리적입니다.
구조적으로 테스터용 OOP 어드바이저는 다음과 같습니다.
class SYSTEM { public: virtual void OnTick() {} // 입력 데이터가 문자열로 출력됩니다. virtual string ToString( void ) const = NULL; // 입력 데이터는 문자열로 지정됩니다. virtual int FromString( const string Str ) = NULL; }; SYSTEM* System = NULL; void OnInit() { System = new SYSTEM; } void OnTick() { System.OnTick(); } void OnDeinit( const int ) { delete System; }
이 EA는 아무것도 하지 않습니다. 그러나 거래 로직이 아니라 입력 매개 변수로만 작업 할 때 코드가 심각하게 증가하여 가독성이 악화되고 오류 확률이 높아집니다. 사실, 불쾌한 일상적인 작업을 수행해야합니다.
모든 입력 매개 변수를 문자열로.
.
코드에서 강조 표시된 줄로 조금 전환 해 봅시다.
거래 관행에 따르면 입력 매개 변수를 문자열 형식으로 저장 / 읽는 것이 편리하므로 관심있는 입력 매개 변수 집합을 빠르고 명확하게 볼 수 있습니다 (발견).
Amount = 1, Count = 2, Period = 3, Koef = 4.5, Log = 6.7, Flag = true Amount = 2, Count = 3, Period = 4, Koef = 4.56, Log = 7.89, Flag = false
예를 들어 위 텍스트에는 두 개의 입력 매개변수 세트가 있습니다.
입력 매개변수 작업의 OOP 고전.
input int inAmount = 1; input int inCount = 2; input int inPeriod = 3; input double inKoef = 4.56; input double inLog = 7.89; input bool inFlag = true; struct INPUT_STRUCT { int Amount; int Count; int Period; double Koef; double Log; bool Flag; string ToString( void ) const { string Str = NULL; #define TOSTRING(A) Str += (::StringLen(Str) ? ", " : NULL ) + #A + " = " + (string)(this.A); TOSTRING(Amount); TOSTRING(Count); TOSTRING(Period); TOSTRING(Koef); TOSTRING(Log); TOSTRING(Flag); #undef TOSTRING return(Str); } // 쓰기를 시작하지 않았습니다. int FromString( const string Str ) { return(0); } } inInputs = {inAmount, inCount, inPeriod, inKoef, inLog, inFlag}; #include <fxsaber\Input_Struct\Example_OnTick.mqh> void EXAMPLE::OnTick( void ) { // 시스템 코드... // this.Inputs에는 입력 매개변수가 포함됩니다. }
위의 번거로운 코드는 동일한 빈 EA이지만 입력 매개 변수로 작업하는 추가 (강조 표시된 텍스트)만 있습니다. 이 코드는 불쾌하며 중요한 INPUT_STRUCT::FromString 메서드를 구현하지 않아도 됩니다.
하나의 입력 매개 변수를 추가/제거하려면 이 코드의 다섯 곳에서 해당 변경을 수행해야 합니다. 매번 그렇습니다!
입력 매개변수 작업의 OOP 대안
.
#include <fxsaber\Input_Struct\Input_Struct.mqh> // 입력 파라미터의 구조. INPUT_STRUCT inInputs; MACROS_INPUT(int, Amount, 1); MACROS_INPUT(int, Count, 2); MACROS_INPUT(int, Period, 3); MACROS_INPUT(double, Koef, 4.56); MACROS_INPUT(double, Log, 7.89); MACROS_INPUT(bool, Flag, true); #include <fxsaber\Input_Struct\Example_OnTick.mqh> void EXAMPLE::OnTick( void ) { // 시스템 코드... // this.Inputs에는 입력 매개변수가 포함됩니다. }
눈에 띄게 강조 표시된 텍스트가 적습니다. 동시에 모든 메소드가 구현됩니다.

사용 시나리오.
.
- 입력 매개변수 집합을 변경할 때 시간 및 오류 확률 최소화.
- 기술적 기능보다는 트레이딩 로직에 더 많은 시간을 할애.
- 문자열을 통한 입력 매개변수 세트 저장/읽기.
- 복잡한 시스템(포트폴리오 등) 작성의 대폭 간소화.
- 사용자 지정 최적화 알고리즘의 손쉬운 연결.
OOP 접근 방식을 사용하면 위의 두 예에서와 같이 많은 반복적인 텍스트를 mqh 파일에 숨길 수 있습니다. OOP는 간결할 수도 있습니다.
특징.
- 제안된 입력 매개변수 구조는 간단하여 적용 가능성을 크게 확장합니다.
- "수정된" 구조는 할당 연산자를 통해 서로 전달할 수 있습니다. 그리고 항상 동일한 크기를 갖습니다.
- 라이브러리는 크로스 플랫폼입니다.
MetaQuotes Ltd에서 러시아어로 번역함.
원본 코드: https://www.mql5.com/ru/code/47932
Sec-WebSocket-Key Generator
Sec-WebSocket-Key 생성기
RSI HTF
RSI 기술 지표의 고전적인 변형으로, 지표 주기를 차트 주기와 다른 값으로 고정하여 찾을 수 있습니다.
ExtObjects
Dedicated functions to read and write object properties.
Momentum Color Fill
The Momentum Technical Indicator measures the change of price of a financial instrument over a given time span.