다른 통화 쌍에서 입찰/매도를 가져오는 방법은 무엇입니까? - 페이지 3

 
HosseinKOGO :

문제가 무엇입니까?

Ask2 및 Bid2가 0이므로 그 중 하나 뒤에 이 줄을 추가하지 않겠습니까?

 Print ( "MarketInfo Error = " , GetLastError ());

유용한 정보가 있는지 확인하시겠습니까?

 
HosseinKOGO : GBPAUD를 열린 차트 로, GBPUSD를 두 번째 페어로 사용하려고 합니다.

"두 번째 쌍"인 두 번째 TF에 대해 download_history 를 호출했습니까?

 
William Roeder :

"두 번째 쌍"인 두 번째 TF에 대해 download_history 를 호출했습니까?

내 글로벌 영역은 다음과 같습니다.
 extern string SecondPair;
double Ask2,Bid2;

#define HR2400 PERIOD_D1 * 60      // 86400 = 24 * 3600
int       TimeOfDay( datetime when= 0 ){       if (when == 0 )  when = TimeCurrent ();
                                           return ( int (when % HR2400 ));            }
datetime DateOfDay( datetime when= 0 ){       if (when == 0 )  when = TimeCurrent ();
                                           return ( when - TimeOfDay(when) );   }
#define SYMBOL string
#define THIS_SYMBOL ""
bool   download_history( ENUM_TIMEFRAMES period= PERIOD_CURRENT ){
   return download_history( _Symbol , period); 
}
bool   download_history(
      SYMBOL            symbol=THIS_SYMBOL,     ///< The symbol required.
       ENUM_TIMEFRAMES    period= PERIOD_CURRENT    /**< The standard timeframe.*/ ){
   if (symbol == THIS_SYMBOL)     symbol = _Symbol ;
   if (period == PERIOD_CURRENT )  period = _Period ;
   datetime today = DateOfDay();
   ResetLastError ();
   datetime other = iTime (symbol, period, 0 );
   if ( _LastError == 0 
   && today == DateOfDay(other)) return true ;   
   if ( _LastError != ERR_HISTORY_WILL_UPDATED
   && _LastError != ERR_NO_HISTORY_DATA
     ) Print ( StringFormat ( "iTime(%s,%i) Failed: %i" , symbol, period, _LastError ));
   return false ;
}
.
.
.

그리고 여기 내 시작 기능이 있습니다.

   download_history(SecondPair, PERIOD_H4 );
   while (!download_history(SecondPair, PERIOD_H4 ) ){ Sleep ( 1000 ); RefreshRates(); }
   Ask2= SymbolInfoDouble (SecondPair, SYMBOL_ASK );
   Bid2= SymbolInfoDouble (SecondPair, SYMBOL_BID );
   Comment(Ask2,Bid2);
.
.
.

GBPUSD를 SecondPair 입력으로 넣고 GBPAUD 차트에서 이 백테스트를 수행합니다.

 
Seng Joo Thio :

Ask2 및 Bid2가 0이므로 그 중 하나 뒤에 이 줄을 추가하지 않겠습니까?

유용한 정보가 있는지 확인하시겠습니까?

나는 당신이 촛불을 시작하고 차트가 진행되도록 하기 위해 아래 라인을 비활성화했을 때 Ask2,Bid2를 정의한 직후에 시작 기능에 언급한 이 라인을 추가했습니다.
 while (!download_history(SecondPair, PERIOD_H4 ) ){ Sleep ( 1000 ); RefreshRates(); }

오류는 "알 수 없는 기호"를 의미하는 4106이었습니다.

그런 다음 아래 줄도 비활성화했습니다.

download_history(SecondPair, PERIOD_H4 );
그리고 처음에는 오류 4066이 발생했습니다(업데이트 상태에서 이력 데이터 요청). 그런 다음 나머지 백 테스팅 동안 4106이 되었습니다.
 
HosseinKOGO :
나는 당신이 촛불을 시작하고 차트가 진행되도록 하기 위해 아래 라인을 비활성화했을 때 Ask2,Bid2를 정의한 직후에 시작 기능에 언급한 이 라인을 추가했습니다.

오류는 "알 수 없는 기호"를 의미하는 4106이었습니다.

그런 다음 아래 줄도 비활성화했습니다.

그리고 처음에는 오류 4066이 발생했습니다(업데이트 상태에서 이력 데이터 요청). 그런 다음 나머지 백 테스팅 동안 4106이 되었습니다.

귀하의 기호 이름이 "GBPUSD"가 아닌 것 같습니다... 어딘가에 추가 문자가 있을 수 있습니다... 이것을 시도한 적이 있습니까?

 Print (" Symbol Name = ", Symbol ());

기호 이름이 6개의 대문자인지 확인하기 전에?

 
Seng Joo Thio :

귀하의 기호 이름이 "GBPUSD"가 아닌 것 같습니다... 어딘가에 추가 문자가 있을 수 있습니다... 이것을 시도한 적이 있습니까?

기호 이름이 6개의 대문자인지 확인하기 전에?

symbol() 함수 는 GBPAUD 차트에 넣었기 때문에 "GBPAUD"를 표시합니다.
백테스트를 위해 일반 데모 계정을 사용하고 있음에도 불구하고 정확히 6개의 대문자입니다. 그러나 나는 당신이 제안한 이것을 시도했고 예상한 결과를 얻었습니다.

코드를 컴파일할 때도 경고가 표시됩니다. "암시적 열거형 변환"이 아래에 강조 표시되어 있습니다. 정확히 무엇을 의미합니까?

 #define HR2400 PERIOD_D1 * 60      // 86400 = 24 * 3600
int       TimeOfDay( datetime when= 0 ){       if (when == 0 )  when = TimeCurrent ();
                                           return ( int (when % HR2400 ));            }
datetime DateOfDay( datetime when= 0 ){       if (when == 0 )  when = TimeCurrent ();
                                           return ( when - TimeOfDay(when) );   }
#define SYMBOL string
#define THIS_SYMBOL ""
bool   download_history( ENUM_TIMEFRAMES period= PERIOD_CURRENT ){
   return download_history( _Symbol , period); 
}
bool   download_history(
      SYMBOL            symbol=THIS_SYMBOL,     ///< The symbol required.
       ENUM_TIMEFRAMES    period= PERIOD_CURRENT    /**< The standard timeframe.*/ ){
   if (symbol == THIS_SYMBOL)     symbol = _Symbol ;
   if (period == PERIOD_CURRENT )  period = _Period ;
   datetime today = DateOfDay();
   ResetLastError ();
   datetime other = iTime (symbol, period, 0 );
   if ( _LastError == 0 
   && today == DateOfDay(other)) return true ;   
   if ( _LastError != ERR_HISTORY_WILL_UPDATED
   && _LastError != ERR_NO_HISTORY_DATA
     ) Print ( StringFormat ( "iTime(%s,%i) Failed: %i" , symbol, period, _LastError ));
   return false ;
}
 

나는 당신이 0을 얻는 이유를 찾은 것 같습니다 ... 나는이 줄을 스크립트에 넣고 MT4에서 실행합니다.

   for ( int i= SymbolsTotal ( false )- 1 ; i>= 0 ; i--)
   {
       string SName = SymbolName (i, false );
      Ask2= SymbolInfoDouble (SName, SYMBOL_ASK );
      Bid2= SymbolInfoDouble (SName, SYMBOL_BID );
       Print (SName, " Ask = " , Ask2, ", Bid = " , Bid2);
   }

그리고 나는 Ask2와 Bid2가 내 시장 시계에 없는 기호에 대해 0이 될 것이라는 것을 깨달았습니다... 하지만 일단 내 시장 시계에 포함시키면 그들의 입찰가를 얻을 수 있습니다. 히스토리 데이터에 대해 고민할 필요가 없습니다.

 
Seng Joo Thio :

나는 당신이 0을 얻는 이유를 찾은 것 같습니다 ... 나는이 줄을 스크립트에 넣고 MT4에서 실행합니다.

그리고 나는 Ask2와 Bid2가 내 시장 시계에 없는 기호에 대해 0이 될 것이라는 것을 깨달았습니다... 하지만 일단 내 시장 시계에 포함 시키면 그들의 입찰가를 얻을 수 있습니다. 히스토리 데이터에 대해 고민할 필요가 없습니다.

MT4의 왼쪽 상단 모서리 에 있는 시장 감시 창에 해당 기호가 있습니다.
그러나 내 코드에 포함시켜야 한다는 의미라면 어떻게 코드에 포함시켰습니까? (제가 잘못 이해한 부분이 있다면 제가 프로가 아니니 이해 부탁드립니다. :D)

 
HosseinKOGO :

MT4의 왼쪽 상단 모서리 에 있는 시장 감시 창에 해당 기호가 있습니다.
그러나 내 코드에 포함시켜야 한다는 의미라면 어떻게 코드에 포함시켰습니까? (제가 잘못 이해한 부분이 있다면 제가 프로가 아니니 이해 부탁드립니다. :D)

코드가 아닙니다.
이미 시장 감시 창에 있기 때문에 상황이 점점 이상해지고 있습니다.
어느 브로커에서 mt4를 다운로드하셨습니까? 테스트를 위해 설치하고 싶습니다.
 
귀하의 반응에 진심으로 감사드립니다.

사실 저는 코더가 아닙니다. 어쨌든 몇 가지 EA를 코딩해 본 적이 있습니다. 내 활동은 창의성과 시스템과 관련되어 있기 때문에 EA를 만들기 위한 600-700 가지 생각을 개념화하고 지금까지 구성했습니다. 나는 단순히 간단한 EA를 코딩 할 수 있고 비정상적인 상태 코딩에 익숙하지 않습니다 ...

해당 코드를 EA에 넣었지만 다음 실수만 반환합니다. 2019.05.06 15:37:56.586 2018.01.02 00:00:07 MyEA! GBPAUD,H4: iTime(GBPUSD,240) 실패: 0

열린 다이어그램으로 GBPAUD를 시도하고 두 번째 쌍으로 GBPUSD를 시도하고 있습니다.

이슈가 뭐야?