표시기 기타 질문 - 페이지 6

 
그는 가까이에서 대답했다.
 
Marco vd Heijden :

시간 프레임 전환에 관한 것이라면 프레임 전환타이머소멸 되기 때문에 타이머는 좋은 옵션이 아닙니다.

OnInit() 함수에서 줄을 만들고 OnTick() 또는 OnTimer() 함수에서 업데이트할 수 있습니다.

또한 OnDeint() 함수의 ObjectsDeleteAll() 함수는 새 프레임에서 다시 생성되기 전에 모든 것이 제거되도록 합니다.

---

추가로 새 양초가 발생할 때마다 라인을 업데이트 하려면 이전 페이지의 예제와 마지막 예제를 결합하여 다음을 제공할 수 있습니다.

...

문제 가 더 있으면 코드를 보여 주세요.

나는 당신의 최근 의견을 조사했습니다.

또 다른 2개의 훌륭한 의견. 그 코드와 비슷해 보이지만 (#18 주석) 저에게는 매우 다릅니다.

그래서 프레임을 전환할 때 '타이머'가 파괴되는 느낌이 들었습니다. 하지만 내 지표가 PERIOD_**에 한 번 업데이트되기 때문에 이는 저에게 매우 유용합니다.

응! 나는 이미 init() 특수 함수에서 메인 라인 을 만들고 OnTimer() 함수에서 업데이트합니다.

(아래 코드에서 저를 더 명확하게 이해할 수 있습니다)

...새로운 양초가 생겨서 결합할 수 있습니다...

더 문제가 있다면 ...

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------------

한 가지 문제가 있다고 말했듯이 시간이 더 걸립니다 . 지금 당장은 내 지표 코드 중 일부를 보여줘야 합니다. 그리고 내 표시기에 '스위치 연산자 & ObjectMove()' 를 사용하지 않습니다.

@마르코

아래 코드가 좋은지 또는 무엇인지 알려주십시오.

귀하의 최근 두 가지 의견 을 광범위하게 조사할 수 있고 지표에 'switch() 및 ObjectMove()' 를 포함할 수 있습니까? (왜 내가 하기 전에 묻지? - 시간이 오래 걸리기 때문이다.)

(보다시피 귀하의 #18 댓글에서 더 많은 이점을 얻었습니다. 이제 아래 코드와 귀하의 최근 두 가지 훌륭한 댓글 사이의 딜레마에 직면했습니다.)

//|+--------------------------------------------------------------------------------+
int   init()
{
     EventSetMillisecondTimer ( 1250 );
    _CreateLines_M5();

     return ( INIT_SUCCEEDED );
}
//|+--------------------------------------------------------------------------------+
int   start()
{
     return ( 0 );
}
//|+--------------------------------------------------------------------------------+
int   deinit()
{
     ObjectsDeleteAll ( 0 , _prefix );
     return ( 0 );
}
//|+--------------------------------------------------------------------------------+
void OnTimer ()
{
     //---
     if ( _dt_Prd_M5 != iTime ( Symbol (), _prd_M5, 0 ) )
    {
         _dt_Prd_M5  = iTime ( Symbol (), _prd_M5, 0 );
         _CreateLines_M5();
    }
     return ;
}
//|+--------------------------------------------------------------------------------+
void _CreateLines_M5( )
{
     //---
     int _dayCnt_M5 = _prd_cnt + 0 ;
     int     _cnt_M5 = iBarShift ( Symbol (), 0 , iTime ( Symbol (), PERIOD_W1 , _dayCnt_M5 ) );
     for ( i = 0 ; i < _cnt_M5; i++ )
    {
        _time_M5     = Time [i];
        _prdCvrt_M5  = PeriodSeconds ( _prd_M5 );
        _timeCvrt_M5 = _time_M5 - ( _time_M5 % _prdCvrt_M5 ) + _prdCvrt_M5;

        _vlineName_M5 = _prefix + "PERIOD_M5 - " + TimeToStr ( _timeCvrt_M5, TIME_DATE | TIME_MINUTES );

         if ( _Period < PERIOD_M15 )
        {
             if (
                    ...
                     TimeHour ( _timeCvrt_M5 ) == 12
               )
            {
                 ObjectCreate ( _vlineName_M5, OBJ_VLINE , 0 , _timeCvrt_M5, 0   );
            }
        }
    }
     return ;
}

당신에게 최선을 다합니다.

 
Keith Watford :

나는 다른 사람에 대해 잘 알지 못하지만 글꼴, 색상, 굵게 및 기울임꼴 등의 혼합이 산만하고 성가신 것을 알았습니다. 사실 나는 이 글을 읽을 여유가 없었다.

전적으로 동의합니다. 주제의 시작부터 이 모든 댓글보다 "점프"합니다.
 
Max Enrik :

나는 당신의 최근 의견을 조사했습니다.

또 다른 2개의 훌륭한 의견. 그 코드와 비슷해 보이지만 (#18 주석) 저에게는 매우 다릅니다.

그래서 프레임을 전환할 때 '타이머'가 파괴되는 느낌이 들었습니다. 하지만 내 지표가 PERIOD_**에 한 번 업데이트되기 때문에 이는 저에게 매우 유용합니다.

응! 나는 이미 init() 특수 함수에서 메인 라인 을 만들고 OnTimer() 함수에서 업데이트합니다.

(아래 코드에서 저를 더 명확하게 이해할 수 있습니다)

...새로운 양초가 생겨서 결합할 수 있습니다...

더 문제가 있다면 ...

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------------

한 가지 문제가 있다고 말했듯이 시간이 더 걸립니다 . 지금 당장은 내 지표 코드 중 일부를 보여줘야 합니다. 그리고 내 표시기에 '스위치 연산자 & ObjectMove()' 를 사용하지 않습니다.

@마르코

아래 코드가 좋은지 또는 무엇인지 알려주십시오.

귀하의 최근 두 가지 의견 을 광범위하게 조사할 수 있고 지표에 'switch() 및 ObjectMove()' 를 포함할 수 있습니까? (왜 내가 하기 전에 묻지? - 시간이 오래 걸리기 때문이다.)

(보다시피 귀하의 #18 댓글에서 더 많은 이점을 얻었습니다. 이제 아래 코드와 귀하의 최근 두 가지 훌륭한 댓글 사이의 딜레마에 직면했습니다.)

//|+--------------------------------------------------------------------------------+
int   init()
{
     EventSetMillisecondTimer ( 1250 );
    _CreateLines_M5();

     return ( INIT_SUCCEEDED );
}
//|+--------------------------------------------------------------------------------+
int   start()
{
     return ( 0 );
}
//|+--------------------------------------------------------------------------------+
int   deinit()
{
     ObjectsDeleteAll ( 0 , _prefix );
     return ( 0 );
}
//|+--------------------------------------------------------------------------------+
void OnTimer ()
{
     //---
     if ( _dt_Prd_M5 != iTime ( Symbol (), _prd_M5, 0 ) )
    {
         _dt_Prd_M5  = iTime ( Symbol (), _prd_M5, 0 );
         _CreateLines_M5();
    }
     return ;
}
//|+--------------------------------------------------------------------------------+
void _CreateLines_M5( )
{
     //---
     int _dayCnt_M5 = _prd_cnt + 0 ;
     int     _cnt_M5 = iBarShift ( Symbol (), 0 , iTime ( Symbol (), PERIOD_W1 , _dayCnt_M5 ) );
     for ( i = 0 ; i < _cnt_M5; i++ )
    {
        _time_M5     = Time [i];
        _prdCvrt_M5  = PeriodSeconds ( _prd_M5 );
        _timeCvrt_M5 = _time_M5 - ( _time_M5 % _prdCvrt_M5 ) + _prdCvrt_M5;

        _vlineName_M5 = _prefix + "PERIOD_M5 - " + TimeToStr ( _timeCvrt_M5, TIME_DATE | TIME_MINUTES );

         if ( _Period < PERIOD_M15 )
        {
             if (
                    ...
                     TimeHour ( _timeCvrt_M5 ) == 12
               )
            {
                 ObjectCreate ( _vlineName_M5, OBJ_VLINE , 0 , _timeCvrt_M5, 0   );
            }
        }
    }
     return ;
}

당신에게 최선을 다합니다.

잘 작동하고 계속 시도하지 않는다면.

 
Marco vd Heijden :

잘 작동하고 계속 시도하지 않는다면.

큰 감사를 드린다!
 

#브로커타임 - 리오픈

여기저기서 포럼을 몇 개 읽었습니다. 어쩌면 내 솔루션 중 하나입니다. 그러나 나는 알아내지 못했다.

이 댓글 전에 - 다시 한 번 시도했습니다. 하지만 해결책을 찾을 수 없습니다.
그래서 저는 2명의 중개인 A와 B가 있습니다.

  • A: Vline 개체는 정확한 시간을 배치합니다. 내가 원하는 것. 예: Time 2017.02.18 0:00 vline 개체도 같은 시간에 배치되었습니다.
  • B: Vline 개체가 잘못된 시간에 배치되었습니다(제가 틀렸을 수도 있습니다). 예: 시간 2017.02.18 1:00 하지만 vline 개체는 0:00입니다.
따라서 누군가가 내 우려를 이해한다면 어떤 의견도 나에게 더 좋을 것입니다.

좋은 주말 보내세요.

 
Max Enrik :

#브로커타임 - 리오픈

여기저기서 포럼을 몇 개 읽었습니다. 어쩌면 내 솔루션 중 하나입니다. 그러나 나는 알아내지 못했다.

이 댓글 전에 - 다시 한 번 시도했습니다. 하지만 해결책을 찾을 수 없습니다.
그래서 저는 2명의 중개인 A와 B가 있습니다.

  • A: Vline 개체는 정확한 시간을 배치합니다. 내가 원하는 것. 예: Time 2017.02.18 0:00 vline 개체도 같은 시간에 배치되었습니다.
  • B: Vline 개체가 잘못된 시간에 배치되었습니다(제가 틀렸을 수도 있습니다). 예: 시간 2017.02.18 1:00 하지만 vline 개체는 0:00입니다.
따라서 누군가가 내 우려를 이해한다면 어떤 의견도 나에게 더 좋을 것입니다.

좋은 주말 보내세요.

코드를 볼 필요가있을 것입니다
 

아래 코드는 두 개의 다른 브로커에서 다른 결과를 제공합니다.
(이전 댓글은 저를 이해하는 데 도움이 될 수 있습니다)

미리 감사드립니다.

void PerioDay()
  {
// High

   ObjectSet ( "PeriodHigh" , OBJPROP_PRICE1 , iHigh ( Symbol (), PERIOD_D1 , 0 ));
   ObjectSet ( "PeriodHigh" , OBJPROP_PRICE2 , iHigh ( Symbol (), PERIOD_D1 , 0 ));

   ObjectSet ( "PeriodHigh" , OBJPROP_TIME1 , TimeCurrent ());
   ObjectSet ( "PeriodHigh" , OBJPROP_TIME2 , TimeCurrent () -( TimeCurrent ()- iTime ( Symbol (), PERIOD_D1 , 0 )));

// Low

   ObjectSet ( "PeriodLow" , OBJPROP_PRICE1 , iLow ( Symbol (), PERIOD_D1 , 0 ));
   ObjectSet ( "PeriodLow" , OBJPROP_PRICE2 , iLow ( Symbol (), PERIOD_D1 , 0 ));

   ObjectSet ( "PeriodLow" , OBJPROP_TIME1 , TimeCurrent ());
   ObjectSet ( "PeriodLow" , OBJPROP_TIME2 , TimeCurrent () -( TimeCurrent ()- iTime ( Symbol (), PERIOD_D1 , 0 )));
  }
 

iHigh와 iLow의 값이 브로커마다 다르다는 것을 의미한다면 그것은 매우 일반적입니다.

2가지 이유:

1. 가격은 브로커마다 약간씩 다르며,

2. 브로커 서버의 GMT 오프셋이 다른 경우 막대가 다른 시간에 시작됩니다.

 
honest_knave :

iHigh와 iLow의 값이 브로커마다 다르다는 것을 의미한다면 그것은 매우 일반적입니다.
2가지 이유:
1. 가격은 브로커마다 약간씩 다르며,
2. 브로커 서버의 GMT 오프셋이 다른 경우 막대가 다른 시간에 시작됩니다.

나는 단지 다른 시간을 의미합니다.

그래서 이 문제를 해결할 기회가 없습니까?

정말 감사합니다.

사유: