[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 552

 
iruogl:

我是一个初学者。

伙计们,请指点迷津,因为我知道机器人在每次打钩变化时都会被激活。如何使其只在新的蜡烛开盘时激活,即在蜡烛的开盘价出现时激活。

谢谢大家的提示。

引用版主的话:"当M15上出现一个新条形图时,该函数返回真。仅在EA中使用"。

bool CheckOpenM15()
{
   static int PrevTime=0;
   if (PrevTime==iTime(NULL, PERIOD_M15,0)) return(false);
   PrevTime=iTime(NULL, PERIOD_M15,0);
   return(true);
}
 
paladin80:

引用版主的话:"当M15上出现一个新条形图时,该函数返回真。仅在EA中使用"。


非常感谢你。
 
iruogl:

非常感谢你。

paladin80:

引用版主的话:"当M15上出现一个新条形图时,该函数返回真。仅在EA中使用"。


我还在学习。而在这个功能中,如何才能确定蜡烛的开盘价。
 
rigonich:

傻瓜们向专业人士提出的问题。

当对双倍类型的规范化变量进行任何操作时,它们的行为与int类型的变量一样(结果是一个规范化的数字),或者

结果应该被规范化?

2.在帮助中写道:"两个非标准化的浮点数不能用==或!=的操作进行连接"。我是否可以比较一个归一化的和一个非归一化的

数?能否使用>=和<=的操作?

任何数字都可以用>=和<=来相互比较。在NormalizeDouble 被规范化后,已经可以作为==或!=进行比较。然而,你需要看看这样的数字比较是否有意义,比如小数点后10位,要找到它们相等或不相等的情况就是不现实的。
 
iruogl:


我还在学习。而在这个函数中,你如何确定蜡烛的开盘价。

这个功能只在出现蜡烛时检测。要找到开盘价,使用iOpen。类似这样的事情。

int init()
{ ...
}
//---
int start()
{ 
   if (CheckOpenM15())
   {  double BarOpenPrice=iOpen(NULL, PERIOD_M15, 0)
   }
...
}
//---
int deinit()
{ ...
}

// сама функция должна находиться отдельно
bool CheckOpenM15()
{
   static int PrevTime=0;
   if (PrevTime==iTime(NULL, PERIOD_M15,0)) return(false);
   PrevTime=iTime(NULL, PERIOD_M15,0);
   return(true);
}
 
iruogl:

我是一个初学者。

伙计们,请指点迷津,因为我知道机器人在每次打钩变化时都会被激活。如何使其只在新的蜡烛开盘时激活,即当蜡烛的开盘价出现时。

谢谢大家的提示。


我也是一个初学者,但我认为我需要在全局层面上声明一个日期类型的变量(例如,日期TIME;),在init()中并在start()开头 检查,如果TIME== Time[0] -- 返回(0);如果不是 --TIME= Time[0];。在这种情况 下,专家将只在一个新柱子打开时 执行start()一次
 
paladin80:
任何数字都可以用>=和<=来相互比较。在NormalizeDouble被规范化后,可以将它们作为==或!=进行比较。然而,你需要看一下,用例如小数点后10位的数字进行比较是否有意义,要找到它们相等或不相等的情况是不现实的。

非常感谢您的回答。只是为了澄清一个问题:在归一化 之后 计算机内存中的数字 保持不变,只有它的表现形式发生变化。还是数字本身发生了变化?
 
rigonich:

非常感谢您的回答。只是为了澄清一个问题:在归一化之后,计算机内存中的数字保持不变,只有它的表现形式发生变化,还是数字本身发生变化?

归一化,数字 发生变化,例如

double var1=0.12345 6789;
double var2=NormalizeDouble(var1,5); // var2=0.12346

另一件事是当你把它打印出来时,用DoubleToStr,例如。

double var1=0.12345 6789;
Print("var1 = ",DoubleToStr(var1,5)); // Выход: var1=0.12345

而如果你在归一化后将其打印出来,它是这样的。

double var1=0.12345 6789;
double var2=NormalizeDouble(var1,5);  // var2=0.12346
Print("var2 = ",DoubleToStr(var2,5)); // Выход: var2=0.12346
 
paladin80:

这个功能只在出现蜡烛时检测。要找到开盘价,使用iOpen。类似这样的事情。


谢谢你,你很有帮助
 
okvseok:

请指教!

可以打印一张,但如何设置为从某日开始打印到某日为止的纸张?这样,一次就不会打印一张。

谢谢你!



忽略不计)