MMA_Breakout_strategy_volume I(MM 또는 MF 제외) - WhooDoo22에 의해 코딩됨 - 페이지 4

 

사이먼,

1. . . . 어떤 티켓 번호를 선택하고 있습니까?

RE 1.: OrdersHistoryTotal() 함수와 함께 OrderSelect() 함수를 사용하는 데 오해가 있었습니다. 어떤 기능도 다른 기능과 관련이 없습니다. 이것을 이해하면 첫 번째 주문 전송 코드 블록의 시작 부분에서 OrderSelect() 함수를 간단히 제거할 수 있습니다. 필요하지 않습니다(이 코드는 데모 또는 라이브에서 실행되지 않는 테스트 목적으로 엄격하게 작성되었음을 기억하십시오. 분명히 결국에는 데모 및 라이브 계정에서 사용할 수 있도록 수정되어야 합니다.).

또한 " GetLastError() 함수 로 반환 값을 확인하십시오"라는 반복적인 요점을 얻었습니다. 알았다. ㅋ :)

2. OrderHistoryTotal()을 이해했다면...

RE 2.: OrdersHistoryTotal() 함수의 목적을 이해합니다. OrdersHistoryTotal() 함수와 함께 OrderSelect() 함수를 사용하는 것에 대해 오해가 있었습니다.

3. { } 중괄호가 어떻게 작동하는지 이해했다면...

RE 3.: 나는 중괄호의 적절한 사용을 이해한다고 믿습니다. 나는 또한 이 경우 중괄호가 필요하지 않을 수 있다는 것을 이해합니다-

 if (OrderType()==OP_BUY)  
   OrderModify(ticket, 0 ,OrderOpenPrice()- 5000 * Point , 0 , 0 ,Blue);

저는 불필요한 중괄호를 사용하여 각 코드 블록의 표현식이 사용 중인 각 특정 코드 블록에 대한 함수 호출을 격리하도록 하기로 결정했습니다. 아주 깔끔한 것입니다. 저는 EA의 코드 블록이 중괄호가 없기 때문에 실수로 함수 호출을 건너뛰는 것을 원하지 않습니다.

4. 변수 i 를 티켓 번호로 사용:

RE 4.: i 변수를 티켓 번호가 아닌 더미 티켓 번호로 사용하는 것에 대한 제 해석을 이해하지 못하시니 조금 놀랐습니다. 변수 i는 단순히 OrderClose() 함수가 실행될 때마다 추가되는 숫자입니다. 변수 i는 실제 티켓 번호로 정의되지 않습니다. 부분 주문 마감 처리하고 있습니다. 이것이 내가 이 작업을 수행할 수 있는 유일한 방법입니다. 나는 다른 해결책에 마음을 열 것입니다. 더 나은 솔루션이 있습니까? :) 다른 방법이 있을 수 있다고 생각하지만 현재로서는 사용 중인 프로세스를 변경할 이유가 없습니다. 다시 말하지만, 나는 생산적인 아이디어에 열려 있습니다.

5. . . . OrderSend()가 실패하면 티켓 은 = -1이 됩니다.

RE 5.: 어떤 OrderSend() 함수를 참조하고 있는지 구체적으로 설명하십시오 ("볼 롤러", 첫 번째 주문 보내기 또는 주문 닫기 함수 호출 내에서 주문 보내기) 이 설명은 우리의 생각을 같은 방향으로 안내하고 이 토론의 두 구성원 간의 의사 소통을 강화할 것입니다.

1. 첫 번째 또는 두 번째(이 plz 수정) 주문이 전송되지 않는 이유는 무엇입니까? (아마도 OrderSelect() 및 OrdersHistory...() 함수의 오용 때문일까요? 이것은 수정될 것입니다.)

2. 주문 전송에 실패한 경우 티켓 변수가 -1을 나타내는 이유는 무엇입니까? 주문 전송이 실패하더라도 티켓 변수는 여전히 -1이 아닌 0을 나타낼 것이라고 생각합니다. 설명 해주십시오.

고맙습니다.

 
WhooDoo22 :

사이먼,

RE 5.: 어떤 OrderSend() 함수를 참조하고 있는지 구체적으로 설명하십시오 ("볼 롤러", 첫 번째 주문 보내기 또는 주문 닫기 함수 호출 내에서 주문 보내기) 이 설명은 우리의 생각을 같은 방향으로 안내하고 이 토론의 두 구성원 간의 의사 소통을 강화할 것입니다.

1. 첫 번째 또는 두 번째(이 plz 수정) 주문이 전송되지 않는 이유는 무엇입니까? (아마도 OrderSelect() 및 OrdersHistory...() 함수의 오용 때문일까요? 이것은 수정될 것입니다.)

2. 주문 전송에 실패한 경우 티켓 변수가 -1을 나타내는 이유는 무엇입니까? 주문 전송이 실패하더라도 티켓 변수는 여전히 -1이 아닌 0을 나타낼 것이라고 생각합니다. 설명 해주십시오.

고맙습니다.

어떤 이유로든 OrderSend()가 실패하면 . . . 문서 에서 가져온 " 거래 서버가 주문에 할당한 티켓 번호를 반환 하거나 실패하면 -1을 반환합니다. " 반환된 값을 유지하기 위해 가변 티켓 을 사용합니다. . . 따라서 OrderSend() 가 실패하면 ( 어떤 이유로든 ) 티켓 번호는 이제 -1 입니다. . . . 당신은 당신이 최고를 희망하고 당신이 얻는 것을 사용하는 것을 확인하지 않습니다. . .


변수 i 를 티켓 번호로 사용하고 있습니다. . . 이 코드에서 . . .

OrderClose(i, 0.01 , Ask, 30 , CLR_NONE );

. . . OrderClose() 문서에서 함수 호출의 첫 번째 변수는 int 입니다. . . 티켓 - 주문 티켓의 고유 번호입니다. 따라서 티켓 번호 34282694 를 종료했다고 가정해 보겠습니다. 다음은 어떤 모양이나 형태로 당신을 도울 것입니까? 아마도 이 특정 요점에 답하고 그것이 어떻게 작동하는지 설명할 수 있습니까?



" EA의 코드 블록이 중괄호 부족으로 인해 실수로 함수 호출을 건너뛰는 것을 원하지 않습니다. " . . . 실수로 건너뛰기? 어떻게 그런 일이 일어날 수 있다고 생각합니까? CPU가 기침을 하거나 감기에 걸리나요?


좋습니다, 그래서 당신은 전략 테스터 라이브/데모 환경에서 작동할 수 있는 코드를 작성하기 보다는 아직 모든 문제를 완전히 이해하고 있다는 것을 말하고 있습니다. 전략 테스터? 이것이 당신이 말하는 것입니까?

 

사이먼,

1. 어떤 이유로든 OrderSend()가 실패하면 . . .

RE 1.: 가상으로, 주문이 실패했다고 가정해 봅시다... 당신이 말한 것이 사실이라면, 티켓 수는 1만큼 뺍니다(티켓 총계에서 -1). 그래서 EA는 25개의 성공적인 주문을 보내고 마감했습니다. 주문을 보내기 위해 신호가 도착하고 OrderSend() 함수가 실패합니다. 현재 티켓이 24장인가요? 그렇다면 i 변수 는 1도 빼지 않기 때문에(-1) i 변수는 잘못된 티켓 수를 나타냅니다. i 변수는 단순히 증가하지 않으며 이제 잘못된 티켓 수가 있습니다. 올바른 티켓 수는 24이고 i 가변 티켓 수는 25입니다. 이제 OrderSelect() 함수 가 잘못된 티켓 번호를 선택하고 있습니다. 우리는 상호 합의에 있습니까? :) 따라서 OrderSend() 함수가 실패하면 명백한 해결책은 i 변수에서 1을 빼는 것입니다. 휴... 이마에 땀을 닦고 있어요 :).

2. CPU가 기침을 하거나 감기에 걸린다?..

RE 2.: 일반적으로 독감 바이러스에 걸리면 말할 때 몇 가지 합리적인 생각을 건너뛰는 경향이 있습니다. CPU에도 동일하게 적용된다고 가정했습니다 :) 유머는 제쳐두고 "{ }"가 없기 때문에 함수 호출을 건너뛸 가능성은 해결해야 하는 간단한 문제일 것입니다. 왜 더 조심하지 않습니까? 함수 호출을 건너뛸 염려가 정말로 없다면 중괄호를 제거하지 말아야 할 이유가 없습니다.

3. 좋아, 그래서 당신이 말하는 ...

RE 3.: 나는 당신이 지금까지 나에게 제시한 문제를 이해한다고 믿습니다.

4. 특히 전략 테스터에서만 작동하도록 코드를 작성하여 코드를 손상시키기로 선택했습니까? ..

RE 4.: 나는 가장 우선순위가 낮다고 생각하는 것을 희생하고 가장 우선순위에 있다고 믿었던 것을 지켰습니다. 이것은 시간 제한과 우선 순위 수준을 기반으로 한 선택이었습니다.

고맙습니다.

 
WhooDoo22 :

사이먼,

1. 어떤 이유로든 OrderSend()가 실패하는 경우 . . .

RE 1.: 가상으로, 주문이 실패했다고 가정해 봅시다... 당신이 말한 것이 사실이라면, 티켓 수는 1만큼 뺍니다(티켓 총계에서 -1). 그래서 EA는 25개의 성공적인 주문을 보내고 마감했습니다. 주문을 보내기 위해 신호가 도착하고 OrderSend() 함수가 실패합니다. 현재 티켓이 24장인가요? 그렇다면 i 변수 는 1도 빼지 않기 때문에(-1) i 변수는 잘못된 티켓 수를 나타냅니다. i 변수는 단순히 증가하지 않으며 이제 잘못된 티켓 수가 있습니다. 올바른 티켓 수는 24이고 i 가변 티켓 수는 25입니다. 이제 OrderSelect() 함수가 잘못된 티켓 번호를 선택하고 있습니다. 우리는 상호 합의에 있습니까? :) 따라서 OrderSend() 함수가 실패하면 명백한 해결책은 i 변수에서 1을 빼는 것입니다. 휴... 이마에 땀을 닦고 있어요 :).

내가 한 말이 사실이라면? 문서를 직접 읽고 링크를 제공하고 클릭하여 읽으십시오. . .

당신은 이것이 어떻게 작동하는지 완전히 오해하고 있습니다. . . 죄송하지만 당신은. 티켓 번호는 전략 테스터에서 순차적으로만 실행됩니다. . . 티켓 수는 차감되지 않습니다. . . 티켓 번호 = -1을 유지하기 위해 사용하는 변수는 코드의 어떤 것에서도 변수 티켓 을 빼지 않습니다. . .

" 신호가 주문을 보내기 위해 도착하고 OrderSend() 함수 가 실패합니다. 현재 티켓 수는 24입니까? " 아니요, 티켓 변수는 25 또는 24 가 아니라 -1 을 보유하므로 모든 OrderSelect (ticket, . . .) 티켓 번호가 -1 인 주문이 없고 잘못된 티켓 번호이기 때문에 이에 뒤따르는 호출은 실패합니다. . . 그러면 OrderSelect()가 실패했기 때문에 모든 OrderType() 호출도 실패합니다. . . . . 그런 다음 OrderModify(ticket, ... .) 도 실패합니다. . .

당신이 말했듯이 당신은 이러한 모든 문제를 이해하지만 무시하고 이 코드를 코드베이스에 제출하기로 선택했습니다. . . 나는 당신이 이미 그것에 대해 잘 다루기 때문에 이것에 대해 설명하려고 더 이상 시간을 낭비할 필요가 없다고 생각합니다. 불편을 끼쳐드려 죄송합니다. 도와드리기 위해 더 이상 시간을 들이지 않겠습니다.

 

사이먼,

요청하신 대로 문서를 읽어 드리겠습니다.

1. 티켓 번호를 유지하는 데 사용하는 변수 = -1

RE 1.: 어떤 변수를 지적하고 있습니까? 가변 i 또는 가변 티켓?

2. 티켓 번호를 유지하는 데 사용하는 변수 = -1

RE 2: "주문 보내기가 실패하면 티켓 번호가 마이너스 1(-1)"이라고 말할 수 있습니까?

이 경우 EA가 24개의 성공적인 주문을 보내고 닫았고 25번째 주문을 보내지 못한 경우 현재 티켓 번호는 마이너스 1(-1)입니다. 옳은? :)

분명히 OrderSelect() 함수 를 포함하는 모든 코드 블록은 "잘못된 티켓 번호" 오류로 인해 실패합니다. 이전에 작성한 오류 번호가 4108이고 설명서에서도 이를 읽을 수 있다고 생각합니다.

나는 "이 모든 문제를 이해합니다"라고 쓰지 않았습니다. 나는 "당신이 지금까지 나에게 제시한 문제를 이해한다고 믿습니다 ."라고 썼습니다.

3. "당신이 말했듯이 당신은 이 모든 문제를 이해하지만 무시하고 이 코드를 코드베이스에 제출하기로 선택했습니다. 잘 처리했습니다. 불편을 드려 죄송합니다. 더 이상 시간을 들이지 않겠습니다."

RE 3: 나는 현재 이러한 문제를 무시하지 않습니다. 당신과의 나의 토론은 이것을 보여줍니다. 나는 당신이 만들고 계속 만들고 있는 모든 요점에 관심이 있습니다. 또한 MQL4 문서에 대한 귀하의 지식을 존중하며 도움을 주려는 귀하의 열망에 감사드립니다. 이것은 눈에 띄지 않았으며 이에 대해 감사드립니다.

고맙습니다.

 

모두들 안녕,

이 코드에서 나는 로트 가격을 변경할 수 없다는 것을 깨달았습니다....그 이유는...

이 작업을 수행하려고 할 때마다 오류가 발생했습니다....

감사합니다... 그리고 답변을 기다리겠습니다....

잘했어 WhoDoo22!!!! ;)