코딩하는 방법? - 페이지 302

 

...

그래 넌 할수있어

유일한 제한 사항은 데드 루프로 끝날 때 "순환 호출"이 발생하지 않는다는 것입니다. 그 외에는 함수 호출에 대한 제한이 전혀 없습니다.

crsnape@btinternet.com:
좋은 지적. 그것에 대해 살펴보겠습니다.

함수에 대한 질문입니다. 함수 내에서 함수를 호출할 수 있습니까? 예를 들어 이 기능이 있습니다.

문자열 GetWinLossPreviousShort(int LastOpenTicket, 문자열 WinLossPreviousShort)

{

만약 (... 등

나중에 나는 그것을 다음과 같이 부른다.

이중 GetLotsLong(int LowRisk, int HighRisk, 이중 SLDistanceLong, 문자열 GetWinLossPreviousShort)
 

마지막으로 열린 주문을 검색하기 위해 이 코드를 입력했습니다.

//--- 마지막으로 열린 주문의 티켓 번호를 계산하는 함수

int LastOpenTicket()

{

날짜/시간 마지막 시간 = 0;

int lastTicket = -1; // 열리지 않음.

정수 위치;

(pos = OrdersTotal() - 1, pos >= 0, pos--)

if (OrderSelect(pos, SELECT_BY_POS) // 내 주문만/

&& OrderMagicNumber() == MagicNumber // 내 매직 넘버

&& OrderSymbol() == Symbol() // 그리고 내 쌍.

&& OrderOpenTime() > 마지막 시간)

{

마지막 시간 = OrderOpenTime();

lastTicket = OrderTicket();

}

반환(마지막 티켓);

}

GetLots 함수에서 호출되는 함수 - 컴파일러에는 오류가 없지만 백테스트 결과 섹션은 완전히 명확합니다. 거래가 없습니다. 첫 번째 거래에 위의 코드에서 호출할 이전 거래가 없기 때문입니까?

저널에서는 외부 변수(매직 번호 42를 로드하지만 내 코드에서는 42552...?)를 로드하지만 그 이후에는 아무 것도 로드하지 않습니다.

 

...

매직 번호의 선언은 무엇입니까 ( int MagicNumber 여야 함; )

crsnape@btinternet.com:
마지막으로 열린 주문을 검색하기 위해 이 코드를 입력했습니다.

//--- 마지막으로 열린 주문의 티켓 번호를 계산하는 함수

int LastOpenTicket()

{

날짜/시간 마지막 시간 = 0;

int lastTicket = -1; // 열리지 않음.

정수 위치;

(pos = OrdersTotal() - 1, pos >= 0, pos--)

if (OrderSelect(pos, SELECT_BY_POS) // 내 주문만/

&& OrderMagicNumber() == MagicNumber // 내 매직 넘버

&& OrderSymbol() == Symbol() // 그리고 내 쌍.

&& OrderOpenTime() > 마지막 시간)

{

마지막 시간 = OrderOpenTime();

lastTicket = OrderTicket();

}

반환(마지막 티켓);

}

내 GetLots 함수에서 호출되는 함수 - 컴파일러에는 오류가 없지만 백테스트 결과 섹션은 완전히 명확합니다. 거래가 없습니다. 첫 번째 거래에 위의 코드에서 호출할 이전 거래가 없기 때문입니까?

저널에서는 외부 변수(매직 번호 42를 로드하지만 내 코드에서는 42552...?)를 로드하지만 그 이후에는 아무 것도 로드하지 않습니다.
 

예, int MagicNumber = 42557입니다.

 

...

그런 다음 게시한 코드에서 왜 문제가 발생하는지 알 수 없습니다(예: 잘못된 MagicNumber를 수신하는 이유). 지정된 MagicNumber로 열린 주문이 있는 경우 코드가 작동해야 합니다(열린 주문을 반복할 것입니다). 열린 주문이 없거나 MagicNumbers와 기호가 일치하지 않으면 -1을 반환하므로(예상대로) 해당 코드가 정확합니다(지금 테스트했으며 정상적으로 작동함)

죄송하지만 게시 한 코드에서 할 수있는 모든 것

crsnape@btinternet.com:
예, int MagicNumber = 42557입니다.
 

이전에 개설된 주문이 없고 이것이 첫 번째 주문인 경우 어떻게 됩니까? -1을 반환한다는 것을 알고 있지만 GetLots 함수가 마지막으로 열린 주문 티켓 번호를 호출하는 데 의존하기 때문에 코드 EA가 실행되지 않습니다.

 

이전에 열린 주문이 하나 이상 존재하는 경우 실패합니다.

귀하의 조건에 다음과 같이 추가하십시오.

if (LastOpenOrder()==-1)

... 나머지 조건이 모두 충족되면 주문을 열 수 있습니다.

또 다른

... 이전과 같이 마지막으로 열린 주문과 나머지 조건을 확인하십시오 .

(지금 EA 조건을 어떻게 썼는지 추측 게임을 하고 있습니다)

crsnape@btinternet.com:
이전에 개설된 주문이 없고 이것이 첫 번째 주문인 경우 어떻게 됩니까? -1을 반환한다는 것을 알고 있지만 GetLots 함수가 마지막으로 열린 주문 티켓 번호를 호출하는 데 의존하기 때문에 코드 EA가 실행되지 않습니다.
 

안녕 믈라덴

스토캐스틱 라인이 레벨 20, 80에서 교차할 때 오픈 트레이드를 설정하는 방법을 알고 있습니까?

스토캐스틱이 레벨 20에서 교차할 때(과매도), Long

스토캐스틱이 레벨 80에서 교차할 때(과매입), Short

문안 인사

라이언

 

이 코드에 몇 줄을 추가했습니다. 이것은 LastOpenTicket() 함수를 사용하지만 여전히 마음에 들지 않습니다. -1 옵션을 추가했습니다. 여기서 뭔가 잘못된 것 같습니까?

//--- 이전 매도 주문 이 수익성이 있는지 판단

문자열 GetWinLossPreviousShort(int LastOpenTicket, 문자열 WinLossPreviousShort)

{

if (OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE)

{

if (OrderProfit() > 0 && OrderType() == OP_SELL)

{

WinLossPreviousShort = "W";

반환(WinLossPreviousShort);

}

if ((OrderProfit() < 0 && OrderType() == OP_SELL) || LastOpenTicket() == -1)

{

WinLossPreviousShort = "L";

반환(WinLossPreviousShort);

}

}

}

 

...

해당 함수 의 가능한 결과를 하나 더 추가하지 않는 이유는 다음과 같습니다. LastOpenTicket() == -1 then WinLossPreviousShort="Na"

crsnape@btinternet.com:
이 코드에 몇 줄을 추가했습니다. 이것은 LastOpenTicket() 함수를 사용하지만 여전히 마음에 들지 않습니다. -1 옵션을 추가했습니다. 여기서 뭔가 잘못된 것 같습니까?

//--- 이전 매도 주문이 수익성이 있는지 판단

문자열 GetWinLossPreviousShort(int LastOpenTicket, 문자열 WinLossPreviousShort)

{

if (OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE)

{

if (OrderProfit() > 0 && OrderType() == OP_SELL)

{

WinLossPreviousShort = "W";

반환(WinLossPreviousShort);

}

if ((OrderProfit() < 0 && OrderType() == OP_SELL) || LastOpenTicket() == -1)

{

WinLossPreviousShort = "L";

반환(WinLossPreviousShort);

}

}

}
사유: