2개의 결과를 반환하는 함수? - 페이지 4

 

gordon It doesn't imply anything, but specifically in both C and C++ arrays are passed by reference as well (technically a pointer to the array's first element is passed, that pointer is passed by value).

감사해요. 포인터에 대한 지식도 정리해야 합니다.

Matutin: 매우 흥미롭습니다! 불행히도 EA에는 매개변수가 필요하고 때로는 많이 필요하므로 이를 피할 수 없으며 https://www.mql4.com/go?http://www.c2.com/에 언급된 모든 이유에 대해 주의를 기울여야 합니다. cgi/wiki?GlobalVariablesAreBad

왜 파일에 쓰지 않고 모든 EA가 읽을 수 있습니다.

gordon : 이 논의는 전역 범위(특수 함수 start(), init(), deinit() 외부에서 선언됨)에 정의된 변수에 대한 것이며 GV에 대한 것이 아닙니다... 둘을 혼합하지 마십시오.

나는 혼란을 피하기 위해 항상 전역 범위 변수 및 GlobalVariables라고 말합니다. MT4 및 MT5는 이에 대해 다른 용어를 사용하여 더 잘할 수 있습니다.

 
gordon :
존재하지 않는 문제를 왜 해결합니까? 왜 바퀴를 재발명합니까? 제한된 경우에만 작동하는 불명확한 코드를 구성하는 이유는 무엇입니까?


글쎄, 나는 그런 식으로 작동하는 함수를 작성했기 때문에 배열 1에서 7까지의 여러 이동 평균이 신호 라인과 교차하는 경우 배열 인덱스*1000 + 방향(위쪽은 0, 아래쪽은 1)*100을 취합니다. 이렇게 하면 세 가지 정보가 포함된 각 주문에 대한 고유한 ID 번호가 반환됩니다.

예를 들어 숫자 3100의 주문 오픈 신호는 세 번째 MA가 아래쪽으로 교차할 때 생성되고 신호 번호 2000은 두 번째 MA가 위쪽으로 교차할 때 생성됩니다.

이것은 내 라인 크로싱 기능이 3개의 정보를 포함하기 때문에 해당 번호를 미결 주문 기능으로 보낼 수 있음을 의미합니다. 첫째는 그 자체가 마법의 숫자이고 둘째는 ordertype = signal%1000/100 결과가 1인지 0인지에 따라 판매 또는 구매 주문이 결정됩니다.

따라서 magicnumber는 처음에 생성하기 위해 교차된 MA 라인에 대한 정보를 포함합니다. int MA=magicnumber/1000 결과는 이동 평균의 원래 배열 인덱스에 해당하는 1에서 7 사이의 값입니다.

셋째, 매직넘버는 각 주문에 대한 고유한 식별자이며 동일한 매직넘버로 두 주문이 허용되지 않으므로 반복 신호로 인해 여러 주문이 열리는 것을 방지합니다.

나중에 프로그램 에서 주문 유형에 따라 작업을 수행하려면 다음과 같이 하십시오. 나는 type=(magicnumber%1000)/100; 결과가 1이면 매도 주문이었고 0이면 매수 주문이었습니다. 어떤 MA 라인이 해당 주문을 생성했는지 알고 싶다면 int MA=magicnumber/1000을 수행합니다. 분명히 interger는 부동 소수점을 삭제하고 원본을 제공합니다. MA 인덱스 1 ~ 7

나는 이것이 단일 함수 반환에서 검색 가능하고 사용 가능한 정보를 둘 이상 생성하는 깔끔한 방법이라고 생각했습니다.

 
SDC :

글쎄 때문에 [...]

훌륭합니다. 하지만 다시 - 직접적이고 보편적이며 명확하고 잘 받아들여지는 방식으로 하지 않는 이유는 무엇입니까? 왜 이 모든 문제를 해결해야 합니까? 이것이 더 간단하다고 생각하지 마십시오.

 int a,b ;
void MyFunc( int & a, int & b )
   {
   //... function result should be 'passed' to a and b
 

나는 그것이 효과가 있었을지 모르겠지만 그 당시에는 좋은 아이디어처럼 보였습니다. 주로 EA에서 일하고 있었기 때문에 동시에 여러 거래 전략을 관리했기 때문에 관리하기 위해 해당 시스템을 만들었습니다. 예를 들어 55 MA가 인덱스 3이기 때문에 다른 모든 주문과 독립적으로 교차하는 55 기간 이동 평균에 의해 열린 모든 판매 주문 을 청산할 수 있습니다. 3000에서 한 단계 더 나아가 주문 유형을 통합할 수 있다는 것을 깨달았습니다. 따라서 해당 MA 라인의 매도 주문에는 매직 넘버 3100 3101 3102 등이 있습니다. 이는 해당 거래 기준에 의해 개설된 모든 주문 또는 개설된 모든 매수 주문을 식별할 수 있음을 의미합니다 해당 거래 기준 또는 모든 거래 기준 등에 의해 개설된 모든 매도 주문에 의해 모두 특수 매직 번호로