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

 
keep87:
不可能

有可能))。

例如,你可以让EA将数组加载到终端的全局变量 中,然后再从那里读取它。

 
alsu:
决定你想要的输出是什么。如果机器的价值是5条倒退,那么

或相同的

如果是的话。

它将永远是EMPTY_VALUE,因为这些条上没有移位的手腕

明白了,谢谢!
 
alsu:
最重要的是,不要去管EA中的移位,只需取移位0和你想要的条数。
我现在用测试器检查了一下,原来交易是在移动平均线交叉后5根蜡烛打开的,而事实并非如此...我想出了你可以做的事情,将另一个MA向前移动5根蜡烛,那么信号就正确了......)
 
ierehon:
我现在用测试器检查了一下,原来交易是在移动平均线交叉后5根蜡烛打开的,这是不一样的...我想出了该怎么做,再向前移动5根MA,那么信号就正确了...)

这是同一件事))。

向右偏移5小节的MA的零小节=未偏移MA的第5小节

 
keep87:
不能。你可以在EA内部从数组到数组的数据中手动评分,如果它没有从优化到优化的变化,对于测试的时间。
但在这种情况下,MT每次都要从文件中读取数组(?
- 在这种情况下,是否会有任何收益?
 
alsu:

有可能))。

例如,你可以让专家顾问将数组加载到终端的全局变量中,然后从那里读取。

数组元素可以是几十到几百个,对于每个变量必须 事先声明
这将是相当难实现的(当然,这个任务也不是微不足道的)。
 
chief2000:
阵列元素可以是几十到几百个,必须事先为每个元素声明一个变量。 实施起来有点复杂(当然,这个任务也不简单)。


那又怎样?处理循环中的变量与处理数组元素 的方式相同。使用实例。

double a[];
int n;

...
ArrayResize(a,n);
...

//запись массива в глобальные переменные

string name;
for(i=0;i<n;i++)
{
   name = StringConcatenate("__ARRAY_",i);
   GlobalVariableSet(name,a[i]);
}

//чтение в массив из глобальных

int gv = GlobalVariablesTotal();
int index;

for(i=0;i<gv;i++)
{
   name = GlobalVariableName(i);
   if(StringFind(name,"__ARRAY_")==0)
   {
      index = StrToInteger(StringSubstr(name,8));
      if(index>=0&&index<n) a[index]=GlobalVariableGet(name);
      
      //опционально - если хотим очистить список
      //GlobalVariableDel(name);
   }
}


再简单不过了))

 
alsu:

那又怎样?处理循环中的变量与处理数组元素的方式相同。使用实例。

再简单不过了))

在我的记忆中,我已经用这种方式处理了几千个变量,而且我没有注意到任何减速。对于较大的数量(几十万个项目或更多),我通常尝试使用MySQL。
 
alsu:
在我的记忆中,我曾用这种方式处理过几千个变量,没有遇到过任何滞后。对于较大的数量(几十万个项目或更多),我通常尝试使用MySQL。
非常感谢!
 

你能告诉我,有一个csv文件,其数据格式为1.33027;1.33023等。

然后读取这个文件,但由于某些原因,数据是以4位数的精度读取的,而我需要的是5位数。

以不同的方式阅读和

FileReadString и FileReadDouble и FileReadInteger

无助于