적은 코드, 더 많이 사용합니다. Expert Advisor 작성 - 페이지 2

 
Maxim Kuznetsov :

사용 사례에서 스타일은 가장 일반적으로 기본적으로 절차적입니다. 잠재적인 사용자( 초보 프로그래머 )는 정확히 그렇게 씁니다.

나는 당신의 스타일이 본질적으로 절차적이라는 것을 의미합니다. 저것들. 내부와 외부 모두 절차적이며 그에 따른 모든 문제가 있습니다. 사용자 수준에서 구현 세부 사항을 공개하는 것은 기본적으로 불가능합니다. 그리고 이미 사용자 수준 코드에 궁극적인 세부 사항이 있습니다.

 double GetData(EA *ea, int id, int shift, double &data[])
{
#ifdef __MQL4__
   // для 4-ки всё просто - по идентификаторам серии и бара получить данные
   switch ((ENUM_SERIES)id) {
       case FAST_MA:
         return data[shift]= iMA (ea. Symbol ,ea. Period ,FAST_MA_PERIOD, 0 ,FAST_MA_METHOD,FAST_MA_PRICE,shift);
       case SLOW_MA:
         return data[shift]= iMA (ea. Symbol ,ea. Period ,SLOW_MA_PERIOD, 0 ,SLOW_MA_METHOD,SLOW_MA_PRICE,shift);
   }
   return EMPTY_VALUE ;
#else
   ...
#endif
}

조건부 컴파일 매크로, MA 함수의 특정 구현에 대한 호출 등. 등. 저것들. OOP가 아니라 FP가 아니라 그렇게 강화된 절차적 프로그래밍입니다. 글쎄, 케이크에 체리처럼 : ea.Symbol 즉. 공식적으로는 여전히 OOP입니다.

 
Maxim Kuznetsov :

나는 조언자들을 위한 기반을 만들기 위해 노력할 것입니다.

스레드에서 언급된 모든 것과 동일한 쓸모없는(대부분의 경우) 모자를 얻습니다.

왜냐하면 당신은 즉시 잘 쓰지 않고 자신의 방식으로 쓰려고하기 때문입니다. 뿐만 아니라 언급된 모든 저자.

 
Vasiliy Sokolov :

나는 당신의 스타일이 본질적으로 절차적이라는 것을 의미합니다. 저것들. 내부와 외부 모두 절차적이며 그에 따른 모든 문제가 있습니다. 사용자 수준에서 구현 세부 사항을 공개하는 것은 기본적으로 불가능합니다. 그리고 이미 사용자 수준 코드에 궁극적인 세부 사항이 있습니다.

조건부 컴파일 매크로, MA 함수의 특정 구현에 대한 호출 등. 등. 저것들. OOP가 아니라 FP가 아니라 그렇게 강화된 절차적 프로그래밍입니다. 글쎄, 케이크에 체리처럼 : ea.Symbol 즉. 공식적으로는 여전히 OOP입니다.

다시 한 번, 유스 케이스는 잠재적 사용자의 의도된 관점에서 작성되었습니다.

그러나 더 이상 사용 사례 자체를 건드리지 않고도 라이브러리 작업을 시작할 수 있을 만큼 충분한 양입니다.

포럼에 4와 5가 모두 있기 때문에 조건부 컴파일을 설정해야 합니다.

 
Maxim Kuznetsov :

다시 한 번, 유스 케이스는 잠재적 사용자의 의도된 관점에서 작성되었습니다.

바꾸어 말하면, iMA(...)와 같은 플랫폼별 함수에 대한 호출을 삽입하기 위한 절차 스타일 요구 사항은 어디에 있습니까?

막심 쿠즈네초프 :

그러나 더 이상 사용 사례 자체를 건드리지 않고도 라이브러리 작업을 시작할 수 있을 만큼 충분한 양입니다.

유스 케이스가 플랫폼별 기능에 대한 특정 호출로 가득 차 있다면 어떻게 건드리지 않습니까?

막심 쿠즈네초프 :

포럼에 4와 5가 모두 있기 때문에 조건부 컴파일을 설정해야 합니다.

저것들. "범용 코드" 사용자 사례 수준은 플랫폼에 독립적일 수 없습니까 ?

 
Maxim Kuznetsov :

...

사용자 사례에 대해 이야기하는 경우 - 첫 번째 명령: 이 수준에서는 특정 구현이 없습니다 . 당신은 이미 1) 플랫폼, 2) 사용자 사례 수준의 터미널 API에 완전히 의존하고 있습니다. 저것들. 제안된 구현은 선언된 개념과 완전히 일치하지 않습니다.

 
Vasiliy Sokolov :

사용자 사례에 대해 이야기하는 경우 - 첫 번째 명령: 이 수준에서는 특정 구현이 없습니다 . 당신은 이미 1) 플랫폼, 2) 사용자 사례 수준의 터미널 API에 완전히 의존하고 있습니다. 저것들. 제안된 구현은 선언된 개념과 완전히 일치하지 않습니다.

여기에서는 일반적으로 MQL 언어로 작성하고 거래 터미널 MT4,MT5 :-)의 API 아래에 작성하므로 터미널 API에 액세스하는 것은 정상입니다.

사용 사례는 해당 영역에 대한 일반적인 작업을 보여주거나 수행해야 합니다. 단지 몇 개의 숫자를 추가하는 것이 아니라 사용자가 이해할 수 있는 목표, 우리가 달성하고자 하는 목표를 갖기 위한 것입니다. Expert Advisors의 가능한 최소 목표는 거래하는 것입니다 :-) 내가 생각할 수 있는 가장 간단한 Expert Advisor는 평균의 교차점에서 거래하는 것입니다. 원래 게시물에 전체입니다.

그건 그렇고, 그것은 작동합니다. 이 특별한 순간에 거래 기능 대신 스텁과 틱이 그려집니다 :-) 저는 데이터로 작업을 작성/디버깅하고 있습니다. 데이터가 있는 부분은 원시이지만 토론할 준비가 되면 게시하겠습니다.

 
Maxim Kuznetsov :

여기에서는 일반적으로 MQL 언어로 작성하고 거래 터미널 MT4,MT5 :-)의 API 아래에 작성하므로 터미널 API에 액세스하는 것은 정상입니다.

사용 사례는 해당 영역에 대한 일반적인 작업을 보여주거나 수행해야 합니다. 단지 몇 개의 숫자를 추가하는 것이 아니라 사용자가 이해할 수 있는 목표, 우리가 달성하고자 하는 목표를 갖기 위한 것입니다. Expert Advisors의 가능한 최소 목표는 거래하는 것입니다 :-) 내가 생각할 수 있는 가장 간단한 Expert Advisor는 평균의 교차점에서 거래하는 것입니다. 원래 게시물에 전체입니다.

그건 그렇고, 그것은 작동합니다. 이 특별한 순간에 거래 기능 대신 스텁과 틱이 그려집니다 :-) 저는 데이터로 작업을 작성/디버깅하고 있습니다. 데이터가 있는 부분은 원시이지만 토론할 준비가 되면 게시하겠습니다.

글쎄, 당신은 모든 것을 올바르게 작성합니다. 그러나 사용자는 다음 의사 코드가 훨씬 더 이해하기 쉽습니다.

 if (SMA( Close , 12 ) > SMA( Close , 24 ))
   BUY();
else
   SELL();

또 다른 것은 이 형식으로 작동하도록 하는 것입니다. 이것은 사용자 수준에서 가능한 한 간단하고 추상적인 지침이 있도록 노력해야 하는 것입니다. 그리고 사용자는 조건부 컴파일 매크로, 평균 계산을 위한 특정 기능 및 단순히 마스터할 수 없는 기타 기술적 세부 사항을 지정해야 합니다.

 
Vasiliy Sokolov :

바꾸어 말하면, iMA(...)와 같은 플랫폼별 함수에 대한 호출을 삽입하기 위한 절차 스타일 요구 사항은 어디에 있습니까?

유스 케이스가 플랫폼별 기능에 대한 특정 호출로 가득 차 있다면 어떻게 건드리지 않습니까?

저것들. "범용 코드" 사용자 사례 수준은 플랫폼에 독립적일 수 없습니까 ?

플랫폼 4/5에는 다른 API가 있습니다.

나는 모든 것에 대한 또 다른 호환성 계층이나 범용 라이브러리를 작성하지 않습니다. 원하는 만큼 :-)

조언자의 기초일 뿐입니다.

 
Vasiliy Sokolov :

글쎄, 당신은 모든 것을 올바르게 작성합니다. 그러나 사용자는 다음 의사 코드가 훨씬 더 이해하기 쉽습니다.

또 다른 것은 이 형식으로 작동하도록 하는 것입니다(절차상 설명하겠습니다). 얼마나 어렵지만 여전히 가능합니다. 이것은 사용자 수준에서 가능한 한 간단하고 추상적인 지침이 있도록 노력해야 하는 것입니다. 그리고 사용자는 조건부 컴파일 매크로, 평균 계산을 위한 특정 기능 및 단순히 마스터할 수 없는 기타 기술적 세부 사항을 지정해야 합니다.

원칙적으로 GetData OnCrossSignal 내에서 귀하가 제공한 것과 유사한 항목을 사용할 수 있습니다. 잠재적으로 스크립트를 작성하는 것도 가능합니다 :-) 하지만 모든 일에는 때가 있습니다... 데이터 작업은 전자 스프레드시트처럼 구축됩니다.

 
Maxim Kuznetsov :

플랫폼 4/5에는 다른 API가 있습니다.

나는 모든 것에 대한 또 다른 호환성 계층이나 범용 라이브러리를 작성하지 않습니다. 원하는 만큼 :-)

조언자의 기초일 뿐입니다.

Artem의 코드 를 보십시오. 그의 코드에는 대상 플랫폼과 독립적인 단일 API가 있습니다. 그러므로 "그것이 일어났다"는 주장은 듣기에 이상하다.