나는이 문제를 일으키는이 작은 함수를 가지고 있는데, 함수의 일부만이 한 번에 내 조건을 따를 것이다.MQL4 : if/else if 루프의 절반 만 현재 실행으로 이어진다.
bool trend()
{
//is there a trend?
close1 = iClose(NULL,0,1); //vars
close2 = iClose(NULL,0,2);
close3 = iClose(NULL,0,3);
open1 = iOpen(NULL,0,1);
open2 = iOpen(NULL,0,2);
open3 = iOpen(NULL,0,3);
if(close3 > open3 && close2 > open2 && close1 > open1)
{
return(true); //uptrend
}
else if(close3 < open3 && close2 < open2 && close1 < open1)
{
return(false); //downtrend
}
else return(EMPTY_VALUE);
}
이 기능이 INT 시작(), 내 판매 신호 조건 다음 작동하지만 매수 신호가 조건을 따르지 않는 위의 기록으로
trending = trend();
if (trending == true) Order = SIGNAL_BUY; // Rule to ENTER a Long trade
if (trending == false) Order = SIGNAL_SELL; // Rule to ENTER a Short trade
에서, 호출되는 방법입니다 , 나는 그들이 어떻게 행동 하는지를 알 수 없다.
"else return (EMPTY_VALUE);" 구매 주문은 조건을 따르기 시작하지만 판매 주문은 더 이상 조건을 따르지 않습니다. 깨진 주문은 깨진 구매 주문과 같습니다.
내 기능이 이와 같이 작동하는 이유는 무엇입니까? 감사!
감사합니다. 열거 형을 사용할 수 없지만 함수를 int로 변환하고 각 가능성에 대한 값을 반환하여 더 까다로운 해결책을 찾았습니다. – Jacket