초보자의 모험 - 페이지 5

 

팀,

저는 어제 새벽 2시까지 PSC를 C로 변환했습니다(의사 코드를 코드로). 퇴근하자마자 바로 시작했습니다.

첫 번째 초안을 끝내고 i) 우리에게 몇 가지 빠진 것이 있었다는 것을 깨달았습니다. ii) 우리는 모든 것을 '쌍'으로 구체화해야 합니다.

내가 올바른 방향에 있는지 확인하기 위해 이에 대한 지혜를 공유할 수 있습니까?

1. 각 iMA 를 선언할 때 기호를 지정하지 않고 3개의 ema를 사용할 수 없습니다. 그렇지 않으면 EA가 제대로 작동하지 않습니다. 따라서 우리는 15개의 ema(심볼당 3개의 Ma가 있는 5개의 심볼)를 선언해야 합니까?

2. CountOrders 기능을 놓쳤습니다. 다시, 5 쌍 때문에. 10가지 기능이 필요합니다. 예: EUR_USD_BuyCount, EUR_USD_SellCount; 등. ?

3. 코드를 작성하는 효율적인 방법과 '초보자' 방법이 있다는 것을 깨달았습니다. 나는 초보자 방식으로 할 것이고 당신이 그것을 효율적으로 만드는 방법을 보여줄 수 있다면 감사하겠습니다.

4. 매직 넘버. 나는 당신이 하고 있는 일을 열망하고 있으므로 한 번에 여러 EA를 실행하고 싶습니다. 나는 Magic Numbers를 보았지만 다른 코드에서도조차 평생 동안 그것을 이해할 수 없었습니다. 컴퓨터가 다른 EA를 구별하는지 확인하는 방법에 대해 자세히 알아볼 수 있는 곳으로 안내해 주시겠습니까?

고맙습니다

새긴 금

 

안녕 닉

미안하지만 당신은 여기서 나를 잃는다. 우리는 다시 말 앞에 수레를 두는 것 같고 결과적으로 뒤로 가고 있습니다. 이전 게시물에서 MetaTrader EA 마법사와 우리가 이미 작성한 의사 코드를 사용하여 프로그램의 기본 구조를 설정할 것을 제안했습니다. 돌아가서 해당 단계를 완료하고 내가 볼 수 있도록 이 포럼에 결과(mq4 파일)를 게시할 수 있습니까? 그러면 다음 단계로 넘어갈 수 있습니다. 당신은 확실히 그 문제에 대해 15개의 ema, 10개의 기능 또는 마법의 숫자가 필요하지 않으며, 드문 경우에 특정 브로커 요구 사항에 문제가 있는 경우 우리가 문제가 발생하면 처리할 수 있습니다.


첫 번째 EA를 작성하는 과정을 안내할 수 있지만 한 번에 한 단계씩 수행하고 내가 검토할 수 있도록 매번 이 포럼에 결과를 다시 게시할 의향이 있는 경우에만 가능합니다. 그렇지 않으면 이 작은 프로젝트가 내 시간과 당신의 시간을 낭비하게 될 것입니다.

당신은 말했습니다 - 나는 초보자 방식으로 할 것이고 당신이 그것을 효율적으로 만드는 방법을 보여줄 수 있다면 감사하겠습니다.

Nick 누군가의 잘못된 코드를 분류하는 것은 답답하고 시간 소모적인 작업입니다. 일반적으로 노력할 가치가 없습니다.


문안 인사

 

팀,

속상하게 해서 죄송합니다, 제가 당신을 오해했습니다. 당신은 그것이 실행되지 않더라도 지금 코딩해야 한다고 말했고 그래서 나는 계속해서 코딩해야 한다고 생각했습니다. 따라서 나는 당신의 작업을 덜어주기 위해 그것을 코딩하는 데 꽤 많은 시간을 할애합니다. 그러나 그것은 다른 방향으로 판명되었습니다.

하지만 걱정하지 마세요. 그런 뜻이라면 EA 프레임워크에 PseudoCode를 게시하겠습니다. 그때까지 인내심을 잃지 않았다면 각 블록을 안내해 줄 수 있습니다. :)

 

팀,


대괄호를 편집하여 EA 형식의 의사 코드를 첨부했습니다. 여전히 당신이 의미하는 바를 이해하지 못했다면 알려주십시오. 필요에 따라 변경하겠습니다. 시간을 절약하기 위해 내가 선언한 플래그와 필터만 있습니다. 다른 건 만지지 않았어요. 나는 당신이 나의 마지막 메시지에서 분명히 이해했듯이 그것이 무엇인지 아직 이해하지 못하기 때문에 함수 의 이름을 만들지 않았습니다. 여기 사장님의 다음 단계는 무엇입니까?

파일:
 
niko :

팀,


대괄호를 편집하여 EA 형식의 의사 코드를 첨부했습니다. 여전히 당신이 의미하는 바를 이해하지 못했다면 알려주십시오. 필요에 따라 변경하겠습니다. 시간을 절약하기 위해 내가 선언한 플래그와 필터만 있습니다. 다른 건 만지지 않았어요. 나는 당신이 나의 마지막 메시지에서 분명히 이해했듯이 그것이 무엇인지 아직 이해하지 못하기 때문에 함수의 이름을 만들지 않았습니다. 여기 사장님의 다음 단계는 무엇입니까?

안녕하세요. 나는 참을성이 없었습니다. 의사 코드의 필요성에 동의하지만 여러분이 약간 과도하게 가고 있다고 생각합니다(미안 Tim).

방금 이것을 노크했습니다. 실제로 30분 동안만 사용했으며 오류, 구문 등을 확인하지 않았습니다.

그러나 소용돌이를 주면 필요한 것과 상당히 가까워야 합니다. 구조를 볼 수 있도록 의도적으로 맨뼈로 남겨두었지만 여전히 해야 할 일이 있습니다. 예를 들어, fnTrade 함수 의 모든 오류 검사와 TakeProfit 처리의 오류를 의도적으로 생략했습니다.


CB


업데이트: Tim의 후속 게시물로 인해 귀하를 위해 생성한 EA를 삭제했으며 Tim이 대신 처리하도록 할 것입니다.


TIM: 다중 통화 논리에 대한 귀하의 게시물을 참조하여 저는 EA를 기호 불가지론자로 구성했습니다. 왜냐하면 귀하가 인수하기 위해 도착하기 전에 제가 그와 함께 작업하는 동안 Nick이 그가 원했던 것이 바로 그것이었기 때문입니다.

 

안녕 닉. 클라우드브레이커

클라우드브레이커님, 느린 진행에 대한 귀하의 좌절감에 주목합니다. 이 연습의 요점은 Nick에게 MT4를 사용하여 프로그래밍하는 방법을 가르치는 것이라고 생각했습니다. 이 포럼에서 본 많은 코드와 코딩 관련 토론으로 판단할 때 나는 체계적인 접근 방식이 좋은 품질의 코드를 생성하는 가장 신뢰할 수 있고 종종 가장 빠른 방법이라는 내 주장을 지지합니다.


그러나 나는 이것이 아주 사소한 프로젝트이고 어떤 숙련된 프로그래머라도 최소한의 형식으로 이와 같은 것을 매우 빠르게 만들 수 있다는 점을 이해합니다. 모두의 답답함을 최소화하기 위해 최대한 빠르게 진행하도록 노력하겠습니다. 하지만 배우는 것은 시간이 많이 걸리고 할 수 있는 사람은 배우려고 하는 사람에게 좌절하기 쉽습니다.

새긴 금,

당신이 게시한 코드는 내가 찾던 것이 아닙니다. 나는 일을 조금 정리하고 당신이 할 몇 가지 일과 함께 코드에서 몇 가지 메모를 만들었습니다.

다음 작업은 각 쌍에 대해 별도의 절차를 작성하지 않고 다른 통화 쌍을 처리하는 방법을 제공하는 것입니다.


이를 수행하는 한 가지 방법은 글로벌 선언 영역에서 통화 쌍을 STRINGS의 ARRAY로 선언하는 것입니다.

그런 다음 주 프로그램 블록에서 - (시작 기능) FOR 루프를 사용하여 배열을 인덱싱합니다.

Nick은 이 코드를 프로그래밍한 다음 포럼에 다시 게시합니다.


우리는 또한 오류 처리에 대해 생각하기 시작해야 합니다. 테스트 및 디버깅. MetaTrader에서 이를 수행하는 한 가지 일반적인 방법은 로그 파일을 사용하는 것입니다. 시작하기 위해 EA에 몇 줄을 추가했습니다.

내가 한 일을 살펴보고 이해하십시오. 코드를 실행하고 활성 계정 또는 전략 테스터 에서 로그 파일을 볼 수 있습니다.


문안 인사

파일:
 

얘들 아,

이번 여행을 도와주신 두 분께 감사드립니다! 초보자에게는 체계적인 접근 방식이 필수적이라는 데 동의하지만 코드를 자세히 살펴보는 것도 중요 합니다. 이 두 가지 구성 요소는 서로가 성장하고 학습 과정을 장려하는 데 도움이 됩니다. 이것이 내가 깨닫고 두 가지 모두에 시간을 보냈습니다. 코딩 프로세스를 더 잘 이해할수록 의사 코드와 후속 프로그램이 더 좋아질 것입니다.

나는 이 노력을 계속하면서 두 문서를 병렬로 작업합니다. 특정 참조 지점이 있기 때문에 다른 어떤 것과도 비교할 수 없는 학습 프로세스의 속도가 빨라질 것이라고 생각합니다.

주요 초점은 의사 코드를 코드로 변환하는 것이지만 CB 문서를 사용하여 추가할 부분과 방법에 대한 아이디어를 얻을 뿐만 아니라 배우기 위해 병렬로 사용하며 물론 Tim의 지침에 따라 사용할 것입니다.

새긴 금

 
niko :

얘들 아,

이번 여행을 도와주신 두 분께 감사드립니다! 초보자에게는 체계적인 접근 방식이 필수적이라는 데 동의하지만 코드를 자세히 살펴보는 것도 중요합니다. 이 두 가지 구성 요소는 서로가 성장하고 학습 과정을 장려하는 데 도움이 됩니다. 이것이 내가 깨닫고 두 가지 모두에 시간을 보냈습니다. 코딩 프로세스를 더 잘 이해할수록 의사 코드와 후속 프로그램이 더 좋아질 것입니다.

나는 이 노력을 계속하면서 두 문서를 병렬로 작업합니다. 특정 참조 지점이 있기 때문에 다른 어떤 것과도 비교할 수 없는 학습 프로세스의 속도가 빨라질 것이라고 생각합니다.

주요 초점은 의사 코드를 코드로 변환하는 것이지만 CB 문서를 사용하여 추가할 부분과 방법에 대한 아이디어를 얻을 뿐만 아니라 배우기 위해 병렬로 사용하며 물론 Tim의 지침에 따라 사용할 것입니다.

새긴 금

안녕 닉, 이제 물러나겠습니다. 위의 내 게시물에 대한 수정 사항을 참조하십시오.


CB

 
cloudbreaker :

안녕 닉, 이제 물러나겠습니다. 위의 내 게시물에 대한 수정 사항을 참조하십시오.


CB

Hey CB, 그럴 거라 생각해서 빨리 다운로드했어요. 내가 전에 언급했듯이, 내가 가진 아이디어에 관한 모든 것은 내가 배우는 데 도움이 됩니다. Tim의 템플릿에 복사하지 않을 것이기 때문에 귀하의 코드는 학습을 방해하지 않을 것입니다. :)


그들이 말하는대로 무엇이든 도움이됩니다!

 
niko :

Hey CB, 그럴 거라 생각해서 빨리 다운로드했어요. 내가 전에 언급했듯이, 내가 가진 아이디어에 관한 모든 것은 내가 배우는 데 도움이 됩니다. Tim의 템플릿에 복사하지 않을 것이기 때문에 귀하의 코드는 학습을 방해하지 않을 것입니다. :)


그들이 말하는대로 무엇이든 도움이됩니다!

걱정 마. 몇 가지만 수정하면 실제로 작업을 수행할 수 있습니다.

내가 만든 TakeProfit "오류"를 수정하는 것으로 시작해야 합니다. 단서를 위해 StopLoss가 수행되는 방법을 살펴보십시오.

일단 작동하게 되면 오류 처리를 추가하고 Print() 문과 같은 일부 운영자 친화적인 항목을 추가하여 로그에서 수행 중인 작업을 쉽게 볼 수 있기를 바랍니다.

의사 코드는 코드에 커밋하기 전에 중요 하지만(노련한 프로그래머라도) 너무 익히지 마십시오.

당신은 당신의 선량한 태도로 인해 도움을 받는 것 같습니다. 내 생각에 당신은 HR에서 일하거나 인간 심리학에 관심이 있습니까?


CB