1개의 EA가 하나의 차트 내에서 여러 통화 쌍을 모니터링하고 거래할 수 있습니까? - 페이지 2

 
angevoyageur :

그의 질문에 대답하고 싶지 않다면 대답하지 마십시오. 간단합니다. 사람들을 화나게 할 필요가 없습니다.

그리고 저를 믿으세요. 저에게도 가능합니다. 제가 포스팅 하고 싶은 모든 것을 포스팅 했다면 적어도 1000 점 이상의 평점을 얻었습니다.



그가 약간의 연구를 수행하고 Code Base 를 살펴본다면 그는 예를 들어 https://www.mql5.com/en/code/11176 을 찾았을 것입니다.

그리고 당신은 그가 지금 요구하는 방식이 저를 보고 있고 다른 사람들에게도 그런 예를 더 많이 찾을 수 있습니다.

그는 코딩하는 방법을 배우기에 충분하지 않으며 다른 EA의 다른 기호를 거래하는 방법에 대한 예제를 얻을 수 있도록 다른 사람의 코딩을 원합니다.

스스로 어떤 시도도 하지 않고...

CodeMonkey가 xennon에 쓴 것처럼

'여기서 문제는 그것을 할 수 없다는 것이 아니라 당신이 그것을 시도하고 하려고 애쓰지 않는다는 것입니다. '

.

xennon이 이 응답을 받으면 그가 좋아하지 않는 응답을 받는 것입니다.

내가 보는 상황을 이해한다고 생각해...

 
deVries :


그가 약간의 연구를 수행하고 Code Base 를 살펴본다면 그는 예를 들어 https://www.mql5.com/en/code/11176 을 찾았을 것입니다.

그리고 당신은 그가 지금 요구하는 방식이 저를 보고 있고 다른 사람들에게도 그런 예를 더 많이 찾을 수 있습니다.

그는 코딩하는 방법을 배우기에 충분하지 않으며 다른 EA의 다른 기호를 거래하는 방법에 대한 예제를 얻을 수 있도록 다른 사람의 코딩을 원합니다.

스스로 시도하지 않고...

CodeMonkey가 xennon에 쓴 것처럼

'여기서 문제는 그것을 할 수 없다는 것이 아니라 당신이 그것을 시도하고 하려고 애쓰지 않는다는 것입니다. '

.

xennon이 이 응답을 받으면 그가 좋아하지 않는 응답을 받는 것입니다.

내가 보는 상황을 이해한다고 생각해...

물론 동의합니다.

그러나 누군가가 답장을 하면 OP(또는 다른 사용자)를 화나게 할 필요가 없다는 데에도 동의합니다. 이 포럼은 더 나은 분위기가 필요하다고 생각합니다.

 
deVries :

xennon : 2012년 1월에 등록되었으며 이제 이 질문과 함께 옵니다 ??

읽기와 학습을 통해 조사해야 할 때인 것 같습니다.

그가 그 EA를 만들고 싶다면 그는 그것을 만드는 데 문제가 생기면 그의 시도와 함께 와야 합니다.

그것은 가능합니다 .... 2 년 이상 후에 그는 이제 확실히 알고 있습니다.


그래 2년 그래서 뭐?! 내가 MQL에서 적극적으로 장난을 쳤다는 의미가 아닙니까? - 사실 MQL에 대한 나의 총체적 경험은 아마도 한 달 미만일 것입니다. TOTAL. 긍정적이고 유용한 것을 제공하거나 xxxx에 기여하는 것이 좋습니다. 이 얼마나 어리석고 어리석은 말인가.
 
xennon :

그래 2년 그래서 뭐?! 내가 MQL에서 적극적으로 장난을 쳤다는 의미가 아닙니까? - 사실 MQL에 대한 나의 총체적 경험은 아마도 한 달 미만일 것입니다. TOTAL. 나는 당신이 긍정적이고 유용한 무언가를 기여하거나 xxx에 기여하는 것이 좋습니다. 이 얼마나 어리석고 어리석은 말인가.

나는 이미 당신의 언어를 조심하라고 조언합니다. 이것은 나의 마지막 경고입니다.

고맙습니다.

 
xennon :

그래 2년 그래서 뭐?! 내가 MQL에서 적극적으로 장난을 쳤다는 의미가 아닙니까? - 사실 MQL에 대한 나의 총체적 경험은 아마도 한 달 미만일 것입니다. TOTAL. 긍정적이고 유용한 것을 제공하거나 xxxx에 기여하는 것이 좋습니다. 이 얼마나 어리석고 어리석은 말인가.


내가 지적한 코드베이스의 예 ???? https://www.mql5.com/en/forum/149766/page2#915892

 
xennon :

모든 통화 쌍에서 단일 EA를 실행할 수 있지만 여러 통화 쌍을 모니터링하고 각 쌍에서 발생하는 트리거에 응답하도록 할 수 있는지 궁금합니다.

본질적으로 나는 모든 관심 쌍을 폴링하고 각각에 대해 사전 구성된 기준을 테스트하고 필요에 따라 구매/판매/종료/경고로 응답하는 EA를 원합니다.

나는 이것이 할 수 없다고 생각하지만 많은 차트를 열지 않고 주로 효율성을 위해 각 차트에 EA를 개별적으로 적용하지 않고도 이것을 달성하는 방법에 대한 아이디어가 있는 사람이 있는지 듣고 싶습니다. 12개가 아닌 1개의 코드 블록?)


고마워.


내 돈은 기호에 대한 문자열 배열에 있을 것이고 모든 관심 기호에 대한 루프로 이동합니다.

같은 것

 string nameArray[]={ "EURUSD" , "..." , "USDJPY" };

그 다음에

 for (x=numberOfSymbols;x>= 0 ;x--)
   {
   string symbol=nameArray[x];
   CustomCondition(symbol)
   ....
   .....
//or something like that
 
xennon :

모든 통화 쌍에서 단일 EA를 실행할 수 있지만 여러 통화 쌍을 모니터링하고 각 쌍에서 발생하는 트리거에 응답하도록 할 수 있는지 궁금합니다.

본질적으로 나는 모든 관심 쌍을 폴링하고 각각에 대해 사전 구성된 기준을 테스트하고 필요에 따라 구매/판매/종료/경고로 응답하는 EA를 원합니다.

나는 이것이 할 수 없다고 생각하지만 많은 차트를 열지 않고 주로 효율성을 위해 각 차트에 EA를 개별적으로 적용하지 않고도 이것을 달성하는 방법에 대한 아이디어가 있는 사람이 있는지 듣고 싶습니다. 12개가 아닌 1개의 코드 블록?)


고마워.

안녕하세요 크세논입니다.

귀하의 질문에 대한 짧은 대답은 예입니다.

비슷한 일을 하려고 생각했지만 아직 아무 것도 코딩하지 않았으므로 코드를 구성하는 방법에 대한 기본 개요를 제공하지만 세부 사항은 설명하지 않습니다. 진행 상황과 이유를 실제로 이해하지 않고 단순히 예제에서 코드를 복사하고 솔루션을 함께 붙여넣는 것보다 향후 코드 작성에 더 많은 도움이 될 것이므로 학습 연습으로 코드베이스 및 기타 소스를 코딩 예제로 참조하십시오. 코드 오류 디버깅에 도움이 됩니다. 일부 용어가 따라하기 어려울 수 있으므로 코딩에 익숙하지 않은 경우 코드베이스가 혼란스러울 수 있습니다.

또한 내 아이디어가 아직 테스트되거나 구현되지 않았기 때문에 더 나은 코딩 방법이나 버그가 있을 수 있습니다. 저는 장기적으로 마스터 코더가 아니며 일반적으로 매우 녹슬기 때문에 예측하지 못한 버그가 있습니다. 누군가 제안 사항이 있으면 나는 모든 귀를 기울이고 오류가 있으면 나를 쏘지 마십시오.

일반적인 아이디어는 밀리초 타이머 이벤트를 사용하는 것입니다. OnTick 이벤트는 연결된 차트에서만 작동하므로 다른 통화 쌍 에 대한 틱은 틱 이벤트를 생성하지 않고 EA는 실행되지 않지만 밀리초 이벤트 타이머는 트리거할 수 있습니다. 초당 여러 번 가격 변동을 모니터링합니다. 또한 세 개의 배열을 사용합니다. 하나는 사용하려는 기호의 문자열을 저장하고 다른 하나는 가격 데이터를 저장합니다.

나는 그것을 조금 설명하려고 노력할 것이다. 배열 nameArray는 각 기호를 배열로 저장하지만 더 중요한 것은 배열의 요소를 사용하여 다른 두 배열의 위치를 설정할 수 있다는 점입니다. 다른 두 배열은 문자열을 사용하여 배열의 위치를 찾을 수 없지만 인덱스 값은 가능하기 때문입니다. 각 기호에 대한 틱이 다른 시간에 수신되기 때문에 일부 기호가 다른 시간에 더 활성화되므로 PriceArray에 기록된 데이터가 모두 동시에 활성화되지는 않습니다. 따라서 두 번째 배열은 PriceData 배열에 대한 인덱스를 저장하여 과거 가격 데이터를 덮어쓰지 않고 빠르게 세 번째 어레이는 필요한 가격 데이터를 작성합니다.

코드는 추가해야 하는 코드와 영어의 조합입니다. 매우 간단하지만 아이디어의 출발점을 제공해야 합니다. 어레이가 끝에 도달했을 때 어레이를 처리해야 하는 시점과 같은 수많은 격차가 있지만 이것은 모두 학습 곡선의 일부입니다. 코드에서 하나의 기호와 두 개의 기호로 작동하도록 하여 코드의 버그를 제거하고 수정할 수 있도록 하는 것이 좋습니다. 내가 말했듯이 이것은 대략적인 초안이므로 그대로 사용하고 개선이 가능합니다. 예를 들어 세 개의 배열 대신 Struct 데이터 유형이나 객체를 사용하여 눈금 데이터를 저장할 수 있지만 이 디자인은 약간 시작하기 쉽고 나중에 코딩 단계에서 구조 및 객체 지향 프로그래밍을 볼 수 있습니다.

명확하게 하려고 노력했지만 이것이 매우 혼란스러울 수 있으므로 명확성에 대해 추가 질문이 있는 경우 알려주시면 최선을 다해 도와 드리겠습니다. 하지만 불행히도 이와 같은 코드를 작성할 시간이 없습니다.

다음은 의사 코드입니다.

 // OnInit ()
    {
     string nameArray[]={ "EURUSD" , "..." , "USDJPY" };                         // As suggested by thrdel. Creates an array with currency pairs
     int TicksRecorded [ # of symbols monitored];                           // Records the required position in the PriceData array to write the next tick data to for each symbol
     double PriceData [ # of symbols monitored][Ticks][data to record];     // Stores price data for each symbol required for as many ticks as required

     Create the timer and set an appropriate interval
     Open a file to save data if required for future use
     
     for (x= 0 ; x < # of symboels; x++)                                     // Get all prices for all the symbols you want and store them in the first position of the Ticks and data to record dimensions
           {                                                               // Also adapted from thrdel's code example
            PriceData [x][ 0 ][ 0 ] = Ask ;
            PriceData [x][ 0 ][ 0 ] = Bid ;
            ... whatever else you want to record
           }

// EventSetMillisecondTimer()
    {
     Refresh all price data for all symbols
     for (x= 0 ; x < # of symbols; x++)                                     // Get all prices for all the symbols you want and store them in the first position of the Ticks and data to record dimensions
           {
             if ((current Ask != to previously recorded Ask for that x) or (current Bid != to previously recorded Bid for that x)... and every other price data you want)
                {
                 TicksRecorded [x]++;                                     // Increments the position in the PriceData array holding the latest tick data for that symbol
                 PriceData [x][TicksRecorded[x]][ 0 ] = Ask ;
                 PriceData [x][TicksRecorded[x]][ 1 ] = Bid ;
                 ... and whatever else you want to record
                 Flag to indicate a new tick has been received set to true
                }
            if (new data)
                {
                 Set new data flag to false
                 Do custom action
                }
           }
     }

// OnDeinit ()
     {
      Kill the timer
      Save data to a file if required
     }
 

저는 단순히 글로벌 변수 를 사용하여 하나의 차트 내에서 ea 모니터/거래를 허용합니다.

EA를 좀 더 강력하게 만들어야 하고 하나의 차트에만 국한되지는 않습니다.

 

다음이 작동하지 않는 이유는 무엇입니까?


(이것이 사실이라면){

ticket=OrderSend("GBPUSD",OP_SELL,lot,Bid,0,0,0,"",0,0,Red);

ticket=OrderSend("GBPJPY",OP_BUY,lot,Ask,0,0,0,"",0,0,Green);

ticket=OrderSend("USDJPY",OP_BUY,lot,Ask,0,0,0,"",0,0,Green);

}


오류 4106 기호를 알 수 없습니다.

 
Daniel Laverdiere : 왜 다음이 작동하지 않습니까?

(이것이 사실이라면){

ticket=OrderSend("GBPUSD",OP_SELL,lot, Bid ,0,0,0,"",0,0,Red);

ticket=OrderSend("GBPJPY",OP_BUY,lot, Ask ,0,0,0,"",0,0,Green);

ticket=OrderSend(" USDJPY ",OP_BUY,lot, Ask ,0,0,0,"",0,0,Green);

}


오류 4106 기호를 알 수 없습니다.

  1. 코드를 게시할 때 SRC 버튼을 사용하십시오!

  2. 차트의 이름 지정 패턴이 정확히 " BasQuo "가 아니면 작동하지 않습니다.

  3. 하나의 EA에서 여러 통화를 거래하지 마십시오.
사유: