여러 쌍에 대해 EA를 실행하는 방법은 무엇입니까?

 
안녕
저는 Forex와 MetaTrader를 처음 접하고 몇 가지 기본 사항을 파악하려고 합니다.
EURUSD 차트에 첨부된 EA가 있다고 가정하지만 해당 EA에서 여러 쌍의 설정을 찾고 싶습니다. 그러나 EA는 EURUSD에 대한 새로운 틱이 올 때만 실행됩니다. 권리? 이제 내 EA가 많은 쌍을 처리할 수 있지만 첨부된 쌍(이 경우 EURUSD)의 새로운 틱으로 시작하기 때문에 이것을 MT의 제한 기능으로 봅니다. 이로 인해 연결되지 않은 쌍의 틱이 누락될 수 있습니다. 따라서 다음 질문은-

EA는 차트에 첨부하지 않고 여러 쌍에 대해 실행할 수 있습니까? 그렇지 않다면 위의 문제에 대한 해결 방법은 무엇입니까? 조언 부탁드립니다.

감사해요
판카이
 

mt4가 작동하는 방식입니다. 이에 대한 해결 방법은 없다고 생각합니다. 그런데 당장 이 한 가지가 떠올랐다. EURUSD 틱이 새 양초보다 최소 1-2분 앞서면(H1 양초라고 가정해 봅시다) while 루프를 실행하여 다른 쌍에서 새 양초를 찾을 수 있습니다. 이 경우 EURUSD에 대한 새 틱이 5분 이상 동안 오지 않으면 while 루프가 이미 실행 중이고 다른 쌍에서 모든 새 양초를 얻습니다. 이 점을 이해하시기 바랍니다.

그러나 문제는 이것이 왜 필요합니까? EURUSD에서 실행되는 EA는 다른 쌍에서 거래를 실행할 수 없으므로 다른 차트에서 EA를 실행하는 것이 좋습니다.

 

안녕하세요,

나는 우리가 여전히 실시간 처리를 하고 있다는 것을 기억하는 것을 선호하기 때문에 통신을 계속 유지하기 위해 while 루프나 wait 함수 를 사용하는 것을 잊어버렸습니다!

EURUSD와 같은 쌍에 EA를 연결하면 다른 모든 쌍을 관리하기에 충분한 신호를 제공합니다. 틱은 매우 자주 발생합니다. 그것은 분의 문제가 아니라 초의 문제입니다(2분 동안 루프를 실행하는 것은 나에게 정말 미친 것처럼 들립니다). 1초의 문제가 아니라면 이유를 생각하거나 다른 브로커에게 문의하십시오.

EA를 eurusd에 연결하여 얻을 수 있는 것보다 더 많이 필요한 경우 각 통화에 연결된 별도의 EA 인스턴스를 실행하는 것을 생각하십시오. 미안하지만 나는 "또는 당신의 시스템을 재고하라"고 생각하는 경향이 있습니다.

이번 포스팅이 다소 성급하게 느껴지셨다면 죄송합니다. 내 관점을 공유하고 싶었습니다.

행운을 빕니다.

 
wrm :

EURUSD에서 실행되는 EA는 다른 쌍에서 거래를 실행할 수 없으므로 다른 차트에서 EA를 실행하는 것이 좋습니다.

그것은 옳지 않다. OrderSend() 함수 는 차트와 상관없이 첫 번째 매개변수로 지정한 모든 기호에 대해 실행할 수 있습니다.

그리고 MarketInfo() 함수를 사용하여 현재 차트 외부의 기호에 대한 가장 최근의 매도호가 및 매수호가를 검색할 수 있습니다.

따라서 다음과 같은 옵션이 있습니다.

- 많은 차트에 동일한 EA를 첨부하고 각 차트의 기본 기호에 대해 작동(Ask 및 Bid 내장 변수 사용)

- 선택한 모든 기호에 대해 실행되는 특정 차트에 EA를 첨부합니다(비기본 기호에 대해 MarketInfo() 함수 사용) - 기본 기호 틱을 트리거 장치로 사용하기만 하면 됩니다.

- 마스터 및 슬레이브 EA가 서로 다른 차트에 연결되어 하나가 다른 차트에 의해 트리거됩니다(예: 하나는 파일에 값을 쓰고 다른 하나는 이 데이터를 찾은 다음 거래할 때까지 파일을 지속적으로 읽습니다)

 
cloudbreaker :

그것은 옳지 않다. OrderSend() 함수는 차트와 상관없이 첫 번째 매개변수로 지정한 모든 기호에 대해 실행할 수 있습니다.

그리고 MarketInfo() 함수를 사용하여 현재 차트 외부의 기호에 대한 가장 최근의 매도호가 및 매수호가를 검색할 수 있습니다.

따라서 다음과 같은 옵션이 있습니다.

- 많은 차트에 동일한 EA를 첨부하고 각 차트의 기본 기호에 대해 작동(Ask 및 Bid 내장 변수 사용)

- 선택한 모든 기호에 대해 실행되는 특정 차트에 EA를 첨부합니다(비기본 기호에 대해 MarketInfo() 함수 사용) - 기본 기호 틱을 트리거 장치로 사용하기만 하면 됩니다.

- 마스터 및 슬레이브 EA가 서로 다른 차트에 연결되어 하나가 다른 차트에 의해 트리거됩니다(예: 하나는 파일에 값을 쓰고 다른 하나는 이 데이터를 찾은 다음 거래할 때까지 파일을 지속적으로 읽습니다)


매우 통찰력이 있습니다. 여러분 덕분입니다. 이전에 생각한 것과 일치하므로 두 번째 옵션을 사용하겠습니다.


wrm: 가능한 한 적게 유지하고 싶습니다. 기술적으로 가능하다면 하나의 EA만 유지하겠습니다. 별도의 EA를 유지하는 유일한 이유는 필요하지 않은 그래프를 플롯해야 하는 경우입니다.


물론 EA가 있으면 테스트하겠습니다. 내가 원하는 방식으로 작동하지 않으면 변경할 것입니다.

 
//+------------------------------------------------------------------+
//|                                                          jkh.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

bool wannaBuy = true ;
bool wannaBuy1 = true ;
extern double LotSize = 0.01 ;
extern string symbol1 = "EURUSD" ;
extern string symbol2 = "USDCHF" ;
extern int MaxDifference = 6 ;
extern int Slippage = 3 ;
extern int Magicnumber1 = 786 ;
extern int Magicnumber2 = 123 ;
int sendticket = 3 ;
string pairs [ 18 ] ;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init ( )
  {
//----
pairs [ 0 ] = symbol1 ;
pairs [ 1 ] = symbol2 ;
wannaBuy = true ;
wannaBuy1 = true ;

//----
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit ( )
  {
//----
   
//----
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start ( )
  {
//----
   // Send order for EURUSD & USDCHF
   if ( wannaBuy ) {   
   int ticket1 ;
   RefreshRates ( ) ;
   ticket1 = OrderSend ( symbol1 , OP_BUY , LotSize , MarketInfo ( symbol1 , MODE_ASK ) , Slippage , 0 , 0 , 0 , 0 , Magicnumber1 , 0 ) & OrderSend ( symbol2 , OP_BUY , LotSize , MarketInfo ( symbol2 , MODE_ASK ) , Slippage , 0 , 0 , 0 , 0 , Magicnumber2 , 0 ) ;
   if ( ticket1 < 0 )
   {
   Print ( "OrderSend failed with error #" , GetLastError ( ) ) ;
   return ( 0 ) ;
   }
   wannaBuy = false ;
   }

//----
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
다음은 하나의 차트에서 EURUSD 및 USDCHF를 여는 간단한 코드입니다. ea조차도 다른 차트에 추가되어 EURUSD 및 USDCHF가 열립니다.
 
tigersoft :
다음은 하나의 차트에서 EURUSD 및 USDCHF를 여는 간단한 코드입니다. ea조차도 다른 차트에 추가되어 EURUSD 및 USDCHF가 열립니다.

꽤 깔끔한. Tigersoft님, 감사합니다.

 
cloudbreaker :

그것은 옳지 않다. OrderSend() 함수는 차트와 상관없이 첫 번째 매개변수로 지정한 모든 기호에 대해 실행할 수 있습니다.

그리고 MarketInfo() 함수를 사용하여 현재 차트 외부의 기호에 대한 가장 최근의 매도호가 및 매수호가를 검색할 수 있습니다.

따라서 다음과 같은 옵션이 있습니다.

- 많은 차트에 동일한 EA를 첨부하고 각 차트의 기본 기호에 대해 작동(Ask 및 Bid 내장 변수 사용)

- 선택한 모든 기호에 대해 실행되는 특정 차트에 EA를 첨부합니다(비기본 기호에 대해 MarketInfo() 함수 사용) - 기본 기호 틱을 트리거 장치로 사용하기만 하면 됩니다.

- 마스터 및 슬레이브 EA가 서로 다른 차트에 연결되어 하나가 다른 차트에 의해 트리거됩니다(예: 하나는 파일에 값을 쓰고 다른 하나는 이 데이터를 찾은 다음 거래할 때까지 파일을 지속적으로 읽습니다)


안녕하세요, 옵션 #3에 대해 자세히 설명해 주시겠습니까?


또한 가격/지표 계산은 옵션 #2를 사용하여 기본이 아닌 기호로 어떻게 작동합니까? 기본이 아닌 기호로 주문을 보내는 것은 이해하지만 기본이 아닌 기호에 대한 입력 조건을 확인 하는 방법은 이해하지 못합니다.

 
skyhr :

안녕하세요, 옵션 #3에 대해 자세히 설명해 주시겠습니까?


또한 가격/지표 계산은 옵션 #2를 사용하여 기본이 아닌 기호로 어떻게 작동합니까? 기본이 아닌 기호로 주문을 보내는 것은 이해하지만 기본이 아닌 기호에 대한 입력 조건을 확인하는 방법은 이해하지 못합니다.

네이티브가 아닌 기호에는 MarketInfo() 함수 를 사용하십시오. 친구입니다 :)

 
skyhr :

안녕하세요, 옵션 #3에 대해 자세히 설명해 주시겠습니까?


또한 가격/지표 계산은 옵션 #2를 사용하여 기본이 아닌 기호로 어떻게 작동합니까? 기본이 아닌 기호로 주문을 보내는 것은 이해하지만 기본이 아닌 기호에 대한 입력 조건을 확인하는 방법은 이해하지 못합니다.

옵션 3 - 특정 기호를 모니터링하는 EA의 파일에 값을 쓰기만 하면 됩니다. 다른 EA가 해당 파일을 모니터링하고 해당 값이 있을 때 특정 로직을 실행하도록 합니다.

옵션 2 - 기본 기호에만 적합한 Ask 및 Bid 변수를 사용하는 대신 MarketInfo() 함수 를 사용하여 기본이 아닌 기호에 대한 매도 및 입찰 가격을 검색합니다.

 
cloudbreaker :

옵션 3 - 특정 기호를 모니터링하는 EA의 파일에 값을 쓰기만 하면 됩니다. 다른 EA가 해당 파일을 모니터링하고 해당 값이 있을 때 특정 로직을 실행하도록 합니다.

옵션 2 - 기본 기호에만 적합한 Ask 및 Bid 변수를 사용하는 대신 MarketInfo() 함수를 사용하여 기본이 아닌 기호에 대한 매도 및 입찰 가격을 검색합니다.

나는 두 가지 접근 방식이 모두 좋다고 생각한다.

추가하고 싶은 것은 옵션 #2가 오버헤드가 적기 때문에 성능상의 이점이 있다는 것입니다. 분명히 파일 작업보다 빠른 모든 것이 메모리에 있습니다.

옵션 #3의 한 가지 장점은 MT4가 할 수 없는 작업에 파일 데이터를 사용하려는 경우입니다.

사유: