//+------------------------------------------------------------------------------------------+//| ArraySetAsSeries.mq4 |//+------------------------------------------------------------------------------------------+//| script program start function |//+------------------------------------------------------------------------------------------+//------------------------------------ НАЧАЛО START -------------------------------------- 1 -int start() //функция start
{ //начало startdouble Timestart=GetTickCount(); //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения скриптаdouble array1[][6]; //объявляем массив-источник (массив, из к-о будут скопированы данные)double array2[][6]; //объявляем массив-приемник (массив, куда будут скопированы данные), к-й на
//момент объявления заполнен некоторыми даннымиint element_1=ArrayCopyRates(array1); //копируем данные баров текущего графика в массив array1 int element_2=ArrayCopy(array2,array1,0,0,WHOLE_ARRAY); //копируем данные всех баров в пользовательский массивbool element_3=ArrayGetAsSeries(array2); //проверка: является ли массив array1 массивом-таймсериейbool try_1=ArraySetAsSeries(array2,false); //устанавливаем НАПРАВЛЕНИЕ индексирования массива bool element_4=ArrayGetAsSeries(array2); //проверка: является ли массив array2 массивом-таймсериейdouble element=array2[0][1]; //получаем значение цены открытия нулевого бара//----------------------------------------------------------------------------------------- 2 -Comment("\nФункция ArrayCopyRates(array1) вернула: ",element_1,
"\nФункция ArrayCopy(array2,array1,0,WHOLE_ARRAY) вернула: ",element_2,
"\nФункция ArrayGetAsSeries(array2) вернула: ",element_3,
"\nФункция ArraySetAsSeries(array2;false) вернула: ",try_1,
"\nФункция ArrayGetAsSeries(array2) вернула: ",element_4,
"\nЦена открытия нулевого бара (т.е. бара с ИНДЕКСОМ 0) равна: ",element,
"\nСкрипт выполнялся всего ",GetTickCount()-Timestart," миллисекунд, из них: ",
MathFloor((GetTickCount()-Timestart)/1000)," секунд ",((GetTickCount()-Timestart)/1000-MathFloor((GetTickCount()-Timestart)/1000))*1000,
" миллисекунд");//печать сообщения на экран//----------------------------------------------------------------------------------------- 3 -return(0); //выход из start
} //конец start//-------------------------------------- КОНЕЦ START -------------------------------------- 4 -
尊敬的程序员,请帮我写一段代码,其原理如下 - 买入信号 - 开立买入1的头寸.SL.TP.转为无损。
卖出信号 - 打开卖出1的位置。SL.TP.转移到无损的。买入--如果有开放的买入1和卖出1头寸,我们就开放买入2。卖出信号--如果有买入1和买入1的开仓,那么我们就打开卖出2。买入信号--如果有未结头寸,卖出1。 买入1。卖出2.然后关闭卖出2.打开买入2.卖出信号 - 如果有开放的买入1。卖出1.买入2.然后我们将关闭买入2.打开卖出2.市场的工作不应超过3个订单。如果有人能帮助,非常感谢。
不要麻烦动态数组,提前指定,有储备,或者你没有足够的内存?
我的记忆是可以接受的,但这不是这里的重点 :)
指定一个可能有大量元素的数组有什么意义,如果这些元素的数量会少很多倍?
毕竟,通过创建一个数组,它已经占据了部分操作内存。
正是
我稍微修改了一下脚本。
结果如下。
一个问题自然而然地产生了:在这种情况下,我使用ArrayCopyRates(array1)函数将当前图表中的条形数据复制到一个二维数组array1中。然后在下一行用函数ArrayCopy(array2,array1,0,0,WHOLE_ARRAY)我把array1的数据复制到array2中。然后,使用ArrayGetAsSeries函数,我检查了array2是否是一个数组-时间序列。结果发现(正如你从截图中看到的),这个数组是一个时间序列数组,尽管我之前没有用ArraySetAsSeries函数来 "处理 "它。
问题:为什么在第一种情况下(上一个问题)我需要使用ArraySetAsSeries函数(使我的数组被组织成一个时间序列数组),而在这种情况下我不需要这样的处理。
P.S. 抱歉我的坚持,我只是想充分了解它,这样就不会留下 "历史的空白"。感谢之前所有的回复。
我想不明白,或者说我是个哑巴 ....
理论上它应该是0.3,但由于某些原因,它是0.00 ....
还给出了0...那么,你是如何得到小数的?????
也是零 ....
我不知道该用什么样的手鼓来跳.......
我想不明白,或者说我是个哑巴 ....
理论上它应该是0.3,但由于某些原因,它是0.00 ....
还给出了0...那么,你是如何得到小数的?????
也是零 ....
我不知道该用什么样的手鼓来跳.......
每天阅读文件3次,每次4-5小时。然后才用手鼓跳。
3.0/10.0
我无法理解
而且每天都有一打的人。
为什么一个数字除以另一个数字的结果是0?
为什么3除以2等于1而不是1.5?
为什么会计算错误呢?
为什么它显示为0,尽管它不完全是0?
为什么在比较两个替身时,专家顾问说它们不相等,尽管我在日志中看到它们是相等的?
为什么0.0039 > 0.0039和0.0039 >= 0.0039是一样的?
而且每天都有一打的人。
一个数字除以另一个数字的结果是0,这是为什么呢?
为什么3除以2等于1而不是1.5?
为什么该表达式不能正确计算?
为什么它显示为0,尽管它不完全是0?
为什么在比较两个替身时,专家顾问说它们不相等,尽管我在日志中看到它们是相等的?
为什么0.0039 > 0.0039和0.0039 >= 0.0039是一样的?
你有什么想法吗?
也许我们应该制作足够的教科书?
也许要做充分的培训?
也许你应该把这些东西写在哪里?
也许那时问题就会消失?
而且你也不必再回答100500个愚蠢的问题了!
如果有这样的问题,这不是学生的错,而是你的错!"。你没有在任何地方描述它!!。
帮助中没有写,没有写如何从int翻译成double。
但它说,如果你把双数类型赋给int,小数部分将被抹去。
一个正常人在逻辑上会得出这样的结论:如果int被赋值为double,只是一个带有给定数量的0的点将被添加......
所以它是这样的 ....
替换
至
非常感谢您,我将尝试一下。
知道为什么吗?
也许我们应该制作足够的教程?
也许做充分的教学?
这些问题不适合我。我是一个用户,就像你一样。
也许你应该把这些东西写在某个地方。
好吧,我给你看了它说的地方。
也许那时问题就会消失。
不,他们不会消失。我向你保证。
而且你也不必再回答100500个愚蠢的问题了!
如果有这样的问题,这不是学生的错,而是你的错!"。你没有在任何地方描述它!!。
这些问题不适合我。我是一个用户,就像你一样。
帮助中没有写,没有写如何从int翻译成double。
但它说,如果你把双倍类型分配给int,那么小数部分将被抹去。
一个正常人在逻辑上会得到这样的想法:当你把一个int数分配给一个双数时,那么只需加上一个有一定数量的0的点就可以了......。
是的,分配是双向的。
只是你没有进一步纳入你的逻辑。
如果你想符合逻辑,你就不能同时做两件事。你应该先给双数分配一个数字,然后再除以另一个数字。但情况恰恰相反,你迟早会明白的。
你有什么想法吗?
也许我们应该制作足够的教科书?
也许做充分的教学?
也许把这些东西写在什么地方?
也许那时问题就会消失?
而且你也不必再回答100500个愚蠢的问题了!
如果有这样的问题,这不是学生的错,而是你的错!"。你没有在任何地方描述它!!。
帮助中没有写,没有写如何从int翻译成double。
但它说,如果你把双倍数类型分配给int,小数部分将被抹去。
一个正常人在逻辑上会得出这样的结论:如果int被赋值为double,只是一个带有给定数量的0的点将被添加......
所以它是这样的 ....
弗拉基米尔,你有权向你购买的终端的技术支持表达所有这些歇斯底里的想法。而在你使用免费终端的时候,你可以感谢那些自己想通了的爱好者,以及像你这样甚至不想花时间在网站上搜索材料,仍然在回答一百次的东西的闲人。没有人欠你什么。他们正试图靠自己的力量去做。如果你想让他们打扰你,那就雇一个教官,把他的脑袋搞乱。他将给你一个假人和一个围嘴。