CreateLines(); // Function that creates time lines
//--- load open times M5= iTime ( Symbol (), PERIOD_M5 , 0 );
//--- set timelines
ObjectMove ( 0 , "Time-M5" , 0 ,M5, 0 );
//--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ voidOnTimer () { if (M5!= iTime ( Symbol (), PERIOD_M5 , 0 )) { M5= iTime ( Symbol (), PERIOD_M5 , 0 ); // overwrite old value with new value //Alert("New Bar on M5! ",TimeToString(M5,TIME_SECONDS)); // do something... //ObjectMove(0,"Time-M5",0,M5,0); } } //+------------------------------------------------------------------+
정말 감사합니다.
이 댓글은 저 에게 많은 것을가르쳐 줍니다.
그 코드가 이전 댓글에 게시한 저에게 잘 맞는 것 같습니다.
하지만 해당 코드 (Period_M5에서 작동하는 코드)가 시계 12:00(아마도 13:00, 14:00...) 에서 작동하지 않고 'OBJ_VLINE'의 과거 시간 을 무시하는 코드 가 필요합니다(좋습니다. 나를 위해) 그러나 현재 코드 아래의 시계 12:00 은현재 시간 VLINE을 추가로 보여주지만 원하지 않습니다.
사전 빌드 600(2014년 2월 3 일 )에는 start()만 있었습니다. 이제 OnTick (EA), OnCalculate (지표) 및 OnStart (스크립트)가 있습니다. 지표에 대해 이야기하고 있다는 것을 잊었습니다.
새로운 이벤트 처리 기능 - 기능 - 언어 기본 - MQL4 참조 를 사용하여 시작하십시오. 룩백을 올바르게 수행하는 방법을 참조하세요 .
응! 지금 나는 당신 을 훨씬 명확 하게 이해 하고 , 훨씬 더 감사 합니다 .
그리고 귀하의 #20 댓글은 저에게 또 다른 아이디어 를 주었습니다. (당신이 저에게 그것을 공유했고 지금은 그것을 제 마음 속에 간직하고 있습니다)
또한 내 지표에 대해 더 나은 코드를 작성 하려고 노력하고 있으며 이제 주석 #18 - @Marco vd Heijden 을 배우 려고 합니다.
그러면 나는 당신의 의견을 광범위하게 조사할 것입니다.
다시 한번 감사합니다!
나중에 거래 전략을 추가할 때 더 쉽게 사용할 수 있도록 지표 대신 전문가에게 맡기십시오.
막대 문제의 경우 막대 여는 시간 을 datetime 변수에 저장하고 기록된 시간을 실시간과 비교하기만 하면 새 막대가 발생할 때마다 트리거됩니다.
다음은 예입니다.
우선 명확하게 의견 을 보내 주셔서 대단히 감사 합니다.
나는 여전히 Indicator 에 머물러 있습니다. 나는 뭔가를 시도했고 그것은 나에게 잘 작동하지만 한 가지 문제 에 직면했습니다. 'Strategy Tester'에서 테스트할 수 없습니다 . MT4 '응답하지 않음'이라는 치명적인 오류가 발생합니다.
#1 - 마르코 출처를 알려주시겠습니까?
#2 - 아래 코드가 맞습니까?
내가 시도한 코드 아래.
string _vlineName_M5 ;
int _prd = PERIOD_M5 ;
int _prd_add = PeriodSeconds ( _prd ) ;
datetime _dt_Prd_M5 ;
int _time_M5 ;
datetime _prdCvrt_M5 ;
datetime _timeCvrt_M5 ;
//---init
EventSetMillisecondTimer ( 10 );
_CreateLines();
//---timer
if ( _dt_Prd_M5 != iTime ( Symbol (), _prd, 0 ) )
{
_dt_Prd_M5 = iTime ( Symbol (), _prd, 0 );
_CreateLines();
}
//---_CreateLines()
//---
int _dayCnt_M5 = 0 ;
int _cnt_M5 = iBarShift ( Symbol (), 0 , iTime ( Symbol (), PERIOD_M15 , _dayCnt_M5 ) );
for ( int i = 0 ; i < _cnt_M5; i++ )
{
//---time convert
_time_M5 = Time [i];
_prdCvrt_M5 = PeriodSeconds ( _prd );
_timeCvrt_M5 = _time_M5 - ( _time_M5 % _prdCvrt_M5 ) + _prdCvrt_M5;
//---name
_vlineName_M5 = _prefix + "PERIOD_M5 - " + TimeToStr ( _timeCvrt_M5, TIME_DATE | TIME_MINUTES );
//---
if ( _Period < PERIOD_M30 )
{
{
ObjectCreate ( _vlineName_M5, OBJ_VLINE , 0 , _timeCvrt_M5, 0 );
}
}
}
ObjectMove ( 0 , _vlineName_M5, 0 , _dt_Prd_M5, 0 );
나는 그것에 대한 작업을 중단했습니다. 귀하의 의견에 따라 계속할 것입니다. (사실 나는 위의 코드를 함께 사용하는 동안 다른 지표를 망가뜨릴까봐 걱정한다.)
큰 감사를 드린다.
MT4 백테스터용 차트 이벤트(Migel) - MQL4 forum
타이머 기능은 MT4 전략 테스터 에서 작동하지 않으므로 틱 기능에 넣어야 합니다.
MT4 백테스터용 차트 이벤트(Migel) - MQL4 forum
큰 감사를 드린다!
나는 그 문제가 코드에서 비롯된 것이 아니라는 것을 확실히 알고 있습니다.
Marco vd Heijden :
다음은 예입니다.
//+------------------------------------------------------------------+
int OnInit ()
{
//--- create timer
EventSetMillisecondTimer ( 250 );
//--- create some things
CreateLines(); // Function that creates time lines
//--- load open times
M5= iTime ( Symbol (), PERIOD_M5 , 0 );
//--- set timelines
ObjectMove ( 0 , "Time-M5" , 0 ,M5, 0 );//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer ()
{
if (M5!= iTime ( Symbol (), PERIOD_M5 , 0 ))
{
M5= iTime ( Symbol (), PERIOD_M5 , 0 ); // overwrite old value with new value
//Alert("New Bar on M5! ",TimeToString(M5,TIME_SECONDS));
// do something...
//ObjectMove(0,"Time-M5",0,M5,0);
}
}
//+------------------------------------------------------------------+
정말 감사합니다.
이 댓글은 저 에게 많은 것을 가르쳐 줍니다.
그 코드가 이전 댓글에 게시한 저에게 잘 맞는 것 같습니다.
하지만 해당 코드 (Period_M5에서 작동하는 코드) 가 시계 12:00 (아마도 13:00, 14:00...) 에서 작동하지 않고 'OBJ_VLINE'의 과거 시간 을 무시하는 코드 가 필요합니다(좋습니다. 나를 위해) 그러나 현재 코드 아래의 시계 12:00 은현재 시간 VLINE을 추가로 보여주지만 원하지 않습니다.
{
ObjectCreate ( _vlineName_M5, OBJ_VLINE , 0 , _timeCvrt_M5, 0 );
} //---if Close
문제 를 해결하는 방법을 시도했지만 제대로 작동하지 않았습니다 .
또한 스크린샷 을 추가했습니다.
그 문제를 해결해야 하는 저를 도와주세요.
미리 감사드립니다.
어떻게 아세요?
연결이 끊어 지고 연결이 끊어지는 동안 ' Strategy Tester '를 사용하려고 했기 때문에 완벽하게 작동합니다 .
내가 당신 과 Mr. William 의 코멘트를 읽고 나서 그것에 대해 확실히 알게 되었습니다 .
그것으로 충분하지 않습니까? 죄송합니다.
{
ObjectCreate ( _vlineName_M5, OBJ_VLINE , 0 , _timeCvrt_M5, 0 );
} //---if Close
이 예에서는 매시간 12시에 한 줄을 얻습니다. 왜냐하면 != diff then 12 문을 제외하고 == 12일 때 줄이 없기 때문입니다.
이 예에서는 매시간 12시에 한 줄을 얻습니다. 왜냐하면 != diff then 12 문을 제외하고 == 12일 때 줄이 없기 때문입니다.
멋진 남자 , 감사 합니다 :))
그것은 간단하지만 나는 그것을 신경 쓰지 않습니다. 그냥 간단 하고 그냥 와우 .
(실제로는 이 표시기에서 '=='를 사용하지만 실제로는 'OnTimer'에 집중했습니다)
//--- 두 번째 편집...
이것은 나에게 효과적이지만 시간이 00:00이 될 때 - 추가현재 시간 VLINE이 다시 표시됩니다.
TimeHour ( _timeCvrt_M5 ) == 1 ||
TimeHour ( _timeCvrt_M5 ) == 2 ||
TimeHour ( _timeCvrt_M5 ) == 3 ||
TimeHour ( _timeCvrt_M5 ) == 5 ||
TimeHour ( _timeCvrt_M5 ) == 6 ||
TimeHour ( _timeCvrt_M5 ) == 7 ||
TimeHour ( _timeCvrt_M5 ) == 9 ||
TimeHour ( _timeCvrt_M5 ) == 10 ||
TimeHour ( _timeCvrt_M5 ) == 11 ||
TimeHour ( _timeCvrt_M5 ) == 13 ||
TimeHour ( _timeCvrt_M5 ) == 14 ||
TimeHour ( _timeCvrt_M5 ) == 15 ||
TimeHour ( _timeCvrt_M5 ) == 17 ||
TimeHour ( _timeCvrt_M5 ) == 18 ||
TimeHour ( _timeCvrt_M5 ) == 19 ||
TimeHour ( _timeCvrt_M5 ) == 21 ||
TimeHour ( _timeCvrt_M5 ) == 22 ||
TimeHour ( _timeCvrt_M5 ) == 23
)
(내가 조사했기 때문에 이 댓글을 몇 번 업데이트했습니다)
도와주세요.