ANDREY : 모두 좋은 하루! mql4를 사용하여 MT-4 테스터에서 알고리즘을 테스트하고 있습니다. 소수점 이하 5자리로 입찰가를 기록하려면 Print() 함수가 필요합니다. 그리고 어떤 이유로 4자만 표시합니다. 내 실수를 수정하는 방법을 알려주십시오. 여기 내 코드가 있습니다.
어렵지 않다면 인디케이터 버퍼 데이터를 읽을 때 무엇이 잘못되었는지 이해하도록 도와주세요.
다음은 고문의 코드입니다.
if (IsTesting())
{
Trend = GlobalVariableGet(GV_tradesTrend);
TrendUP = iCustom(NULL,0,"Used\\# Once Trades Trend",3,0);
TrendDN = iCustom(NULL,0,"Used\\# Once Trades Trend",4,0);
if (TrendUP>0) {Trend=1; GlobalVariableSet(GV_tradesTrend,1);}
if (TrendDN>0) {Trend=-1;GlobalVariableSet(GV_tradesTrend,-1);}
if (Trend==1) {GlobalVariableSet(GV_Trend,1);}
if (Trend==-1) {GlobalVariableSet(GV_Trend,-1);}
if (Trend==0) {GlobalVariableSet(GV_Trend,0);}
}
else
{
Trend = GetLastTrendChange();
if (Trend==1) {GlobalVariableSet(GV_Trend,1);}
if (Trend==-1) {GlobalVariableSet(GV_Trend,-1);}
if (Trend==0) {GlobalVariableSet(GV_Trend,0);}
}
//+----------------------------------------------------------------------------+int GetLastTrendChange()
{
int trendType= 0 ;
int y= 0 ;
int t= 500 ;
while (y<t)
{
if ( iOpen ( NULL , 0 ,t)==y) { return ( 0 );}
trendType=FindTrendChange(y);
if (trendType== 1 || trendType==- 1 ) { return (trendType);}
y++;
}
return ( 0 );
}
//+----------------------------------------------------------------------------+int FindTrendChange( int index)
{
double trendUP,trendDN;
int trendType= 0 ;
trendUP = iCustom ( NULL , 0 , "Used\\# Once Trades Trend" , 3 ,index);
trendDN = iCustom ( NULL , 0 , "Used\\# Once Trades Trend" , 4 ,index);
if (trendUP> 0 ) {trendType= 1 ;}
if (trendDN> 0 ) {trendType=- 1 ;}
return (trendType);
}
//+----------------------------------------------------------------------------+
실생활과 테스트에서 함수를 통한 마지막 값 검색은 작동하지만 테스트 속도가 급격히 느려집니다(반년 테스트가 며칠 동안 늘어남).
따라서 테스트를 대체하고 전역 변수 에 마지막 값을 저장하기로 결정했습니다. EA는 버퍼 데이터를 보지 않습니다. 또한 빈 버퍼가 0이지만 어떤 이유로 EA 변수는 EMPTY_VALUE 값을 취하고 변경되지 않습니다.
그리고 데이터 창의 버퍼 라인 위로 마우스를 가져가면 툴팁에 두 개의 값이 표시됩니다. 첫 번째 값은 0입니다(예: 값 5). 0.0000; 0.8855.
표시기 코드를 만지작거리고 있지만 어떤 식으로든 알아낼 수 없습니다. 인터넷 검색과 문서가 도움이 되지 않았습니다. 누군가 이 표시기에 액세스할 때 테스트가 왜 그렇게 느린지 말해 줄 수 있습니까?
모두 좋은 하루!
mql4를 사용하여 MT-4 테스터에서 알고리즘을 테스트하고 있습니다. 소수점 이하 5자리로 입찰가를 기록하려면 Print() 함수가 필요합니다. 그리고 어떤 이유로 4자만 표시합니다. 내 실수를 수정하는 방법을 알려주십시오.
여기 내 코드가 있습니다.
}
동시에 Print()를 사용 하여 주문을 열고 닫는 가격(SL 및 TP 기준)을 인쇄하면 Print()는 5자(5자)로 가격을 인쇄합니다.
도움을 주셔서 감사합니다.
NormalizeDouble() 대신 DoubleToString( )
내 결정이 마음에 들지 않는다고 말했어
다시 쓰기에는 너무 게으르다
google "배열 찾기 중복"-뭔가가 있다고 생각합니다.
NormalizeDouble() 대신 DoubleToString( )
정보 지원에 진심으로 감사드립니다.
TimeToStruct() 사용
https://www.mql5.com/ru/docs/dateandtime/timetostruct
TimeToStruct() 사용
https://www.mql5.com/ru/docs/dateandtime/timetostruct
예, mt4에 있습니다.
그것은 mt4에서 작동합니다
그것은 mt4에서 작동합니다
성공적으로 트리거되면 true를 반환하는 이 구조에서 위치가 열린 분의 값을 어떻게 알 수 있는지 아직 명확하지 않습니다...
datetime o_open = OrderOpenTime();
MqlDateTime dt_struct;
TimeToStruct( o_open, dt_struct);
정수 분 = dt_struct. 분;
어렵지 않다면 인디케이터 버퍼 데이터를 읽을 때 무엇이 잘못되었는지 이해하도록 도와주세요.
다음은 고문의 코드입니다.
실생활과 테스트에서 함수를 통한 마지막 값 검색은 작동하지만 테스트 속도가 급격히 느려집니다(반년 테스트가 며칠 동안 늘어남).
따라서 테스트를 대체하고 전역 변수 에 마지막 값을 저장하기로 결정했습니다. EA는 버퍼 데이터를 보지 않습니다. 또한 빈 버퍼가 0이지만 어떤 이유로 EA 변수는 EMPTY_VALUE 값을 취하고 변경되지 않습니다.
그리고 데이터 창의 버퍼 라인 위로 마우스를 가져가면 툴팁에 두 개의 값이 표시됩니다. 첫 번째 값은 0입니다(예: 값 5). 0.0000; 0.8855.
표시기 코드를 만지작거리고 있지만 어떤 식으로든 알아낼 수 없습니다. 인터넷 검색과 문서가 도움이 되지 않았습니다. 누군가 이 표시기에 액세스할 때 테스트가 왜 그렇게 느린지 말해 줄 수 있습니까?
도와주세요, 제발!