OOP 대 절차 프로그래밍 - 페이지 5

 
Petros Shatakhtsyan :

그런 간단한 작업(자세히 설명하려면 많이 작성해야 함)을 가정해 보겠습니다.

모든 것은 OnTick()에서 발생합니다. 상태를 확인하고 주문을 열어 보겠습니다. 조건은 중요하지 않습니다. 일부 최대값이라고 가정해 보겠습니다. 또는 분.

당연히 로봇은 일종의 차트에 서서 이 기호에 대한 따옴표를 받습니다. OnTick 기능이 하나만 있는 것이 아니라 OnTrade, OnTimer, 자체 기능 등 다른 기능도 있음이 분명합니다.

따라서 이러한 함수 외부에서 공통적으로 사용되는 모든 변수는 코드 시작 부분에 선언해야 합니다. 예를 들어, 기호 이름, 물음표, 입찰가, 스프레드, 인용 문자 수 등 수십 가지가 있을 것입니다.

이 로봇은 하나의 기호, 즉 그가 서 있는 곳. 이러한 차트가 20개 있고 모든 차트에 동일한 로봇을 설치하여 20개 쌍 모두를 동시에 거래한다고 가정해 보겠습니다.

그러나 이것은 일부가 시장에서 지적하는 것처럼 다중 통화 로봇 이 아닙니다.


여기에서 다중 통화로 전환해야 합니다. 저것들. 우리는 그것을 모든 차트(1개의 차트에만)에 넣고 20쌍에 대한 거래를 엽니다. 즉, 단일 모드의 테스터에서 실행하고 Market Watch에 있는 쌍과 거래합니다.

다음은 OOP 없이 수행하는 방법입니다. 모든 공통 변수를 20개 요소의 배열로 바꾸시겠습니까?

그러나 모든 쌍에 대해 동시에 호출되는 함수는 어떻습니까?

여기 OOP 없이는 불가능합니다. :)


추신 : 나는 러시아 교육을받지 않았기 때문에 오랫동안 글을 썼고 몇 페이지를 읽을 시간이 없었습니다.

다중 화폐를 생성하려면 초기에 다중 화폐를 작성해야 하며, 한 쌍에 맞춰진 로봇을 리메이크하지 않아야 합니다.

다중 화폐 생성 방식은 OOP를 의무적으로 사용할 필요가 없습니다. 모든 통화 쌍에서 틱을 수신하고 모든 곳에서 동일한 분석 및 주문 기능을 적용하는 코드 블록을 작성할 수 있습니다. 주문 함수 자체에는 쌍에 따라 값이 변경되는 변수가 포함됩니다. 틱을 허용하는 블록은 이러한 값을 변경합니다.

 
Реter Konow :
특정 작업으로 이끄는 것이 바람직합니다. 이 설명은 명확하지 않습니다. 내 실습에서 알고리즘은 외부 매개 변수를 변경해도 변경되지 않습니다. 이 매개 변수의 모든 값에 대해 미리 만들어졌습니다. 그래서 당신이 의미하는 바가 명확하지 않습니다. 구체적인 예를 들어 설명합니다.

예를 들어 하나의 Expert Advisor에는 100개의 후행 중지 옵션이 포함되어야 합니다. 절차적 프로그래밍을 사용하면 다음과 같은 발판을 얻을 수 있습니다.

 if (Trailing_01_ON){
    Trailing1();
}

if(Trailing_02_ON){ Trailing2(); } ...

...

...

if(Trailing_99_ON){ Trailing99(); }

100개의 동일한 코드 섹션. 프로그램이 실행 중일 때 일반적으로 후행 중 하나만 활성화되고 나머지 99개 if는 단순히 리소스를 소모합니다.

이제 OOP가 있는 변형입니다. Expert Advisor를 초기화할 때 실제 활성화된 트레일링의 수에 따라 포인터로 배열을 확장하고 활성화된 트레일링에 대해서만 개체를 생성합니다. 결과적으로 다음 코드는 지속적으로 작동합니다.

 for ( int i= 0 ;i<cnt;i++){
   p[i].Main();
} 

하나의 후행이 활성화되면 cnt=1, 즉 불필요한 것이 없습니다.

 
Dmitry Fedoseev :

여기서 질문은 "어떻게"가 아니라 "왜"가 적절합니까? 터미널에 이미 구현된 것을 코딩하는 이유 - 필요한 수의 차트를 열고 전문가에 따라 걸기만 하면 됩니다. 또한 다른 기호와 시간 프레임에서 매개변수가 달라야 합니다.


터미널에는 아무 것도 구현되어 있지 않습니다. 첫째, 20개 대신 하나의 차트만 열리고 두 번째로 테스터에서는 열려 있는 모든 위치 를 고려하여 여러 쌍으로 동시에 테스트할 수 없습니다.

"MarketWatch에서 선택된 모든 기호" 모드가 있다고 말하지 마십시오.

 

"객체"의 개념이 어떻게 설명되는지 이해하지 못하는 그 프로그래머는 그가 아마추어 프로그래머이고 현대 프로그래밍의 기술을 모른다고 가정할 수 있습니다.

 
Dmitry Fedoseev :

예를 들어 하나의 Expert Advisor에는 100개의 후행 중지 옵션이 포함되어야 합니다. 절차적 프로그래밍을 사용하면 다음과 같은 발판을 얻을 수 있습니다.

100개의 동일한 코드 섹션. 프로그램이 실행 중일 때 일반적으로 후행 중 하나만 활성화되고 나머지 99개 if는 단순히 리소스를 소모합니다.

이제 OOP가 있는 변형입니다. Expert Advisor를 초기화할 때 실제 활성화된 트레일링의 수에 따라 포인터로 배열을 확장하고 활성화된 트레일링에 대해서만 개체를 생성합니다. 결과적으로 다음 코드는 지속적으로 작동합니다.

하나의 후행이 활성화되면 cnt=1, 즉 불필요한 것이 없습니다.

일반적으로 후행 문제를 해결하는 매우 이상한 접근 방식입니다. 문제에 대한 이러한 설명은 없어야 합니다. 100가지 다른 유형의 후행 중지가 있고 각각 고유한 기능이 있습니다.

이러한 유형을 하나 이상의 공식으로 압축하여 하나의 공통 후행 함수를 만들어야 합니다. 그게 다야. 물론 회백질로 작업해야하지만 OOP는 아무 관련이 없습니다 ...

 
Реter Konow :

일반적으로 후행 문제를 해결하는 매우 이상한 접근 방식입니다. 문제에 대한 이러한 설명은 없어야 합니다. 100가지 다른 유형의 후행 중지가 있고 각각 고유한 기능이 있습니다.

이러한 유형을 하나 이상의 공식으로 압축하여 하나의 공통 후행 함수를 만들어야 합니다. 그게 다야. 물론 회백질로 작업해야하지만 OOP는 아무 관련이 없습니다 ...


MA가 뒤따른다고 가정해 보겠습니다. 그 중 수십 개가 있습니다.

그리고 당신이 쉽게 살 수 있다면 왜 무언가를 압축합니까?
 
Dmitry Fedoseev :

MA가 뒤따른다고 가정해 보겠습니다. 그 중 수십 개가 있습니다.

그리고 당신이 쉽게 살 수 있다면 왜 무언가를 압축합니까?


OOP에 찬성하는 당신의 주장의 본질은 처음에는 어리석은 결정을 용이하게 하는 데 기반을 두고 있다는 것이 밝혀졌습니다. 의심스러운 주장...


수십 개의 다른 후행 함수가 필요한 이유는 무엇입니까? OOP를 소유한 진지한 프로그래머가 하나의 보편적인 OOP를 작성하는 것이 어렵습니까?

 
Реter Konow :


OOP에 찬성하는 당신의 주장의 본질은 처음에는 어리석은 결정을 용이하게 하는 데 기반을 두고 있다는 것이 밝혀졌습니다. 의심스러운 주장...

갑자기 왜이렇게 웃기죠?

100 ifs를 사용하는 것은 어리석은 일입니다.

 
Dmitry Fedoseev :

갑자기 왜이렇게 웃기죠?

100 ifs를 사용하는 것은 어리석은 일입니다.

100 ifof를 사용할 필요가 없습니다. 문제를 보다 효율적으로 해결하고 다른 매개변수에 적응하는 후행으로 하나의 함수를 만들어야 합니다.
 
Реter Konow :
100 ifof를 사용할 필요가 없습니다. 문제를 보다 효율적으로 해결하고 다른 매개변수에 적응하는 후행으로 하나의 함수를 만들어야 합니다.

그리고 후행이 다른 매개변수에 적응하도록 어떻게 하시겠습니까? 모두 동일하게 알고리즘의 일부 분기는 유지되며 일부 매개변수 조합과 함께 실행되지 않습니다.