指标杂项问题 - 页 6

 
他没有回答仔细看。
 
Marco vd Heijden:

如果是关于切换时间段,那么计时器不是一个好的选择,因为计时器 会在切换 时被破坏

你可以在OnInit()函数中创建你的行,并在OnTick()或OnTimer()函数中更新它们。

同时注意OnDeint()函数中的ObjectsDeleteAll(),这将确保在新的帧上再次创建之前,所有的东西都被删除。

---

另外,如果你新的蜡烛 出现时更新这些线,你可以把上一页的例子和最后一个例子结合起来,这样就可以了。

...

如果还有什么问题,请展示 一些代码。

我研究了你的最新评论。

又是2个很好的评论。它看起来像类似的代码(你的第18条评论),但对我来说非常不同。

所以,是的,当我切换框架时,我感到 "计时器 "被破坏了。但这对我来说非常有用,因为我的指标在PERIOD_**的时候更新一次。

是的!我已经在init()函数中创建了主线,并在OnTimer()函数中更新了它们。

(你可以从下面的代码中更清楚地了解我)

...新的蜡烛 产生,你可以结合...

如果 还有什么问题...

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

正如我所说,有一个问题,它需要更多的时间。现在我需要向你展示我的一些指标代码。我没有在我的指标中 使用'switch operator & ObjectMove()'

@Marco

请让我知道下面的代码是好还是什么?

你的建议 是什么?我可以开始广泛研究你最近的两个评论,我可以在我的指标中涉及'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()函数中更新了它们。

(你可以从下面的代码中更清楚地了解我)

...新的蜡烛 产生,你可以结合...

如果 还有什么问题...

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

正如我所说,有一个问题,它需要更多的时间。现在我需要向你展示我的一些指标代码。我没有在我的指标中 使用'switch operator & ObjectMove()'

@Marco

请让我知道下面的代码是好还是什么?

你的建议 是什么?我可以开始广泛研究你最近的两个评论,我可以在我的指标中涉及'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:

如果它起作用,如果它不起作用,就继续尝试。

衷心感谢!
 

#Broker Time - ReOpen

我在这里和那里读了一些论坛。也许我的解决方案是其中之一。但我没有搞清楚。

在这个评论之前,我又试了一次。但我找不到解决办法。
所以,我有两个经纪人,A和B。

  • A: Vline对象放置正确的时间。例如:时间2017.02.180:00,Vline对象也放置相同的时间。
  • B: Vline对象放置了错误的时间(也许我错了)。时间2017.02.181:00,但Vline对象放置0:00。
因此,如果有人理解我的关切,任何评论对我来说都是最好的。

祝你周末愉快。

 
Max Enrik:

#Broker Time - ReOpen

我在这里和那里读了一些论坛。也许我的解决方案是其中之一。但我没有搞清楚。

在这个评论之前,我又试了一次。但我找不到解决办法。
所以,我有两个经纪人,A和B。

  • A: Vline对象放置正确的时间。例如:时间2017.02.180:00,Vline对象也放置相同的时间。
  • B: Vline对象放置了错误的时间(也许我错了)。时间2017.02.181: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.如果经纪商的服务器有不同的格林尼治标准时间偏移,条形图就会在不同时间开始。

 
honest_knave:

如果你的意思是不同经纪商的iHigh和iLow值不同,这很常见。
有两个原因。
1.不同经纪商的价格略有不同,以及
2.如果经纪商的服务器有不同的格林尼治标准时间偏移,条形图就会在不同时间开始。

我是说只有不同的时间。

那么,有没有机会解决这个问题呢,请问?

非常感谢。