任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 1087

 
rabanik:
下午好。请帮助我编写以下代码,用于一个EA。我想通过一个数组来做(如果你有更好的选择,请帮忙)。一般来说,EA发送消息,但我希望它通过一个数组(临时)来发送。也就是说,当开始发送信息时,专家顾问会检查信息是否在之前被发送过(检查信息是否存储在数组中),如果没有,就会发送信息,如果找到了信息,就会省略发送。我希望它是清楚的)非常感谢你

你对问题的陈述有把握吗?

很简单,有选择。

- 不要重复上一条信息

- 忽略过期的(设置了一些时间滞后),也就是说,信息必须被重复。

P.S. 第一个变体是第二个变体的一个特例,但它更容易实现。你对问题的定义也是第二个变体的特例,具有无限的滞后性。

如果你感兴趣,这里是你问题的解决方案。

我们定义了两个数组:一个是文本数组,用于存储消息,另一个是索引数组,用于搜索消息。

索引数组 为int类型。在第一个维度,我们写出了文本信息的校验和。在第二个 - 第一个数组的行号。一个索引数组按第一维排序。

我们得到一个新的消息。读取其校验和。使用ArrayBsearch() 函数查找此类信息如果没有找到,那么该信息就是原始信息。将其添加到信息数组中,并通过引用索引数组进行校验,记得要对其进行排序。

检查和的选项有哪些?我会采取这个办法:考虑到字符数和文本的校验和。例如,文本的校验和是字符编码的总和。鉴于最近的变化,它不能超过65 536*256。也就是说,信息的校验和可能看起来如下。

的字符数乘以1000万,再加上文本校验。

 

亲!角度上的线有问题。

我用坐标 建立了一个TRENDBYANGLE

ObjectCreate(0,"anglestok",OBJ_TRENDBYANGLE,0,0,0);
ObjectSet("anglestok",OBJPROP_TIME1,X1); ObjectSet("anglestok",OBJPROP_PRICE1,Y1);
ObjectSet("anglestok",OBJPROP_TIME2,X2); ObjectSet("anglestok",OBJPROP_PRICE2,Y2);

- 我需要一个角度。

anglestok= ObjectGetDouble(0,"anglestok",OBJPROP_ANGLE);

帮助说,程序创建的线--ZERO的角度是可以的。

我在不碰线的情况下,在同样的坐标上又运行了同样的代码--出现了正确的度数,而不是零。为什么,我怎么能在第一次就做对?

或者我给了一个坐标--我问角度--它说是0。然后我又给了一个坐标--它说是前一个坐标的角度,胡说八道。

 
对于哪些情况,他们会把const放在函数签名的描述之后?我找不到任何有关这方面的信息。
void qwe(int abc) const {...}
 
在这里似乎找不到真正有知识的人,只是白白签了名=/。
 
K_i_r_i_t_o:
我把这个评论移到开头,因为没有人回答,但我真的需要它=/。
是否可以这样实现:如果我按下任何一个键,指标代码的一部分被打开(负责用鼠标点击创建一个对象),然后如果有事件发生(代码的第二部分,事件可能是,例如创建相同的对象),那么代码的第一部分被禁用(如果不这样做,对象是由每次点击创建的),当你按下键时也会运行,如此循环)
你可以。添加OnChartEvent 块。在其中,记录必要的压力、测量并根据你的想法描述对它们的反应。
 
SunnYtheDreamer:
你可以。添加OnChartEvent 块。在其中,根据你的想法,记录必要的压力、测量和描述对它们的反应。
要实现在按键前的时间段内禁用部分代码是不可能的 =/ 有一个更简单的变体,但有一个问题,当按键时,我必须把它的值返回到第一个if语句的开头
#define  VK_D 0x44
void OnChartEvent(const int id,         // идентификатор события   
                  const long& lparam,   // параметр события типа long 
                  const double& dparam, // параметр события типа double 
                  const string& sparam) // параметр события типа string 
{ 
 Comment(__FUNCTION__,": id=",id," lparam=",lparam," dparam=",dparam," sparam=",sparam);

int      y     =(int)dparam;
datetime dt    =0;
double   price =0;  
int      window=0;
int i;
int x=(int)lparam;

if (id==CHARTEVENT_CLICK)
{
ChartXYToTimePrice(0,x,y,window,dt,price);
ObjectCreate("Trend Line"+i,OBJ_TREND,0,dt,price,dt,price);
ObjectSetInteger(0,"Trend Line"+i,OBJPROP_SELECTED,true);

if(id==CHARTEVENT_KEYDOWN) 
{ switch(int(lparam)) 
{ case VK_D:
i=rand();
}}}}
 
K_i_r_i_t_o:
我无法实现在按下键之前的那段时间禁用部分代码=/ 有一个更简单的方法,但有一个问题:当按下键时,我 需要将其值返回到第一个if语句的开头
if (id==CHARTEVENT_CLICK)
{
   ChartXYToTimePrice(0,x,y,window,dt,price);
   ObjectCreate("Trend Line"+i,OBJ_TREND,0,dt,price,dt,price);
   ObjectSetInteger(0,"Trend Line"+i,OBJPROP_SELECTED,true);

   if(id==CHARTEVENT_KEYDOWN) 
   {
      switch(int(lparam)) 
      {
         case VK_D: i=rand();
      }
   }
}
这段代码只有在鼠标被点击时才会被执行。 在这种情况下,在3行代码之后,按下键的事件被检查。而这3行代码是在几毫秒内执行的,即使当前调用OnChartEvent 期间的id能够改变,在执行3行代码期间,按键被按下的机会=0%。很明显,在一个在某个id值被触发的块内检查id,并在那里等待不同的值,是毫无意义的。首先,检查按键,在一个单独的区块中,在一个变量中保存按键的编号或仅仅是按下所需按键的事实。并通过这个变量,启用或禁用位于块中用于鼠标点击的那段代码。
char key = -1; //эта переменная должна быть объявлена за пределами блока OnCharEvent
if(id==CHARTEVENT_KEYDOWN)
key = lparam;

if (id==CHARTEVENT_CLICK && key == 'D')
{
   ChartXYToTimePrice(0,x,y,window,dt,price);
   ObjectCreate("Trend Line"+i,OBJ_TREND,0,dt,price,dt,price);
   ObjectSetInteger(0,"Trend Line"+i,OBJPROP_SELECTED,true);
   i=rand();
   key = -1;
}
 
SunnYtheDreamer:
这段代码只有在鼠标被点击时才会执行,其中有3行代码检查按键事件。而这3行代码是在几毫秒内执行的,即使在当前调用OnChartEvent的过程中id能够改变,在这段时间内,执行3行代码,按键被按下的可能性=0%。很明显,在一个在某个id值被触发的块内检查id,并在那里等待一个不同的值是没有意义的。首先,检查按键,在一个单独的区块中,在一个变量中保存按键的编号或仅仅是按下所需按键的事实。并通过这个变量,启用或禁用位于块中用于鼠标点击的那段代码。

非常感谢!)这是我要找的一行,如果(id==CHARTEVENT_CLICK && key == 'D'),不能连接两个事件,这没有工作,如果(id==CHARTEVENT_CLICK & id==CHARTEVENT_KEYDOWN),再次感谢)。

 

你好,我有一个函数,从过去的n个蜡烛中计算出一个蜡烛的平均大小。有时它输出以下数值:"5e-05.0"。我不需要它们,令我羞愧的是,我不知道它们有多大,如何把它们切断。NormalizeDouble()没有帮助。请告诉我如何以编程方式计算这种数字,以切断它们。

 
pycha:

你好,我有一个函数,从过去的n个蜡烛中计算出一个蜡烛的平均大小。有时它输出以下的值:"5e-05.0"。我不需要它们,令我羞愧的是,我不知道定量地有多少,如何把它们切断。NormalizeDouble()没有帮助。请告诉我如何以编程方式计算这种数字,以切断它们。


5e-05(5*10到-5次方)=0.00005。
那就砍掉什么吧。
if(val >= 0.00001)
这样的小蜡烛,5个点,只有在低纬度,在5位数的账户,在低时间段可能会出现。如果你不处理剥头皮的问题,但对于n个蜡烛来说,平均数有时是如此之小,那么这个函数的实现应该是可疑的。