structMqlRates { datetime time; // время начала периода double open; // цена открытия double high; // наивысшая цена за период double low; // наименьшая цена за период double close; // цена закрытия long tick_volume; // тиковый объем int spread; // спред long real_volume; // биржевой объем };
structMqlRates { datetime time; // время начала периода double open; // цена открытия double high; // наивысшая цена за период double low; // наименьшая цена за период double close; // цена закрытия long tick_volume; // тиковый объем int spread; // спред long real_volume; // биржевой объем };
structMqlRates { datetime time; // время начала периода double open; // цена открытия double high; // наивысшая цена за период double low; // наименьшая цена за период double close; // цена закрытия long tick_volume; // тиковый объем int spread; // спред long real_volume; // биржевой объем };
谢谢你的答复...因此,为了搜索交易历史中的订单,我们使用函数OrdersHistoryTotal,在丢弃所有我们不需要的东西后,它看起来像这样
for(int i=OrdersHistoryTotal()-1; i>=0; i--) // -这里的问题是 "accTotal " 在我们丢弃的函数模板中是什么意思,为什么你把 "i--" ,而不是像模板中的"i++"?
- 第二个函数OrderComment 返回所选订单的评论,如果它被前一个函数OrdersHistoryTotal 选中,其形式为
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) //- 其中 "i", 这是 之前函数中的"i>=0",而 "SELECT_BY_TICKET "被替换为 "SELECT_BY_POS" ,并增加了 "MODE_HISTORY"-- 为什么?
- 第三行是定义,我们实际上不需要检查必要的订单,因为我们在这个历史中只有被TP和SL关闭的市场订单(我们可能有一个关闭的挂单,但这将是罕见的),所有其他订单参数对我们来说并不重要。唯一重要的是历史上已关闭的订单数量将不断增加,是否有可能使我们的重新计算采取一定数量的最后订单,例如5-10个,而不是所有的?
- 最后四行非常清楚,唯一的问题是关于PlaySound函数,它的代码应该插入每个"Print("..." ) "行之后,像这样
OrderComment 返回所选订单的评论,如果它被之前的函数OrdersHistoryTotal 选中- 这个函数不选择任何东西 - 它返回关闭和删除的订单总数(当前账户历史中关闭和删除的订单数量,加载在客户端。历史列表的大小取决于终端的 "账户历史 "标签的当前设置。引自该教程)。
教程中的例子中的accTotal。
int i,accTotal=OrdersHistoryTotal(); - 这是一个int变量-取值OrdersHistoryTotal
for(i=0;i<accTotal;i++)//如何循环浏览历史列表并不重要,从第一个订单到最后一个订单或反之亦然,它仍然按顺序浏览整个列表。
但在前面的情况下,我们少了一个变量,但每个周期都会处理 OrdersHistoryTotal 请求。
SELECT_BY_POS - 索引参数包含列表中订单的索引号,列表本身是第二个运算符 -MODE_HISTORY 是已关闭的列表,MODE_TRADES - 开放或待定。 SELECT_BY_TICKET - 在索引参数中传递票号。这应该在选择订单前的某个地方进行。
-最后四行大致清楚,唯一的问题是关于PlaySound函数,其代码应插入每个 "Print("... "
行之后,形式如下:
bool PlaySound(
string payment // file name
)
; ..
.或者也是以某种方式转换的?
在 程序头中 声明
bool PlaySound(--你会得到在设定文件中打开和关闭声音的可能性extern bool Play = TRUE;那么Print会打印什么?那么在什么条件下呢?
这一行动的意义何在?当订单被关闭时播放声音,并写下评论(通过TP或SL)?
感谢维塔利-波斯托拉奇 的帮助,感谢他的建议,这些教科书上的信息对我来说可能有点晚了,我在第六个十年中学习,可能做不了这么多,我应该早点做,但没有时间。我在这里真的很无聊,如果这样的话,对不起,我不会再继续了,我要走了。
顺便说一下,我也有一个问题。
我需要写一张传播支票。
我一直在使用一个简单的请求,要求它的值,并禁止在点差超过指定值时开立订单。
但发生的情况是,当点差减少时,EA开出订单,点差增加。
现在我找不到正确的方法来考虑这个问题:如果我们在每一个tick都 把点差加入数组,那么数组会变得多大?话说回来,它能持续多久呢?
当然,我们可能不使用类似的值,或只使用较小和较大的值,但在这种情况下,我们必须以某种方式将其重置为零。
最重要的是,我不明白我是否应该考虑到最小和最大的价差或其跳跃的指示。{
datetime time; // время начала периода
double open; // цена открытия
double high; // наивысшая цена за период
double low; // наименьшая цена за период
double close; // цена закрытия
long tick_volume; // тиковый объем
int spread; // спред
long real_volume; // биржевой объем
};
{
datetime time; // время начала периода
double open; // цена открытия
double high; // наивысшая цена за период
double low; // наименьшая цена за период
double close; // цена закрытия
long tick_volume; // тиковый объем
int spread; // спред
long real_volume; // биржевой объем
};
int spread;// spread
即没有
{
datetime time; // время начала периода
double open; // цена открытия
double high; // наивысшая цена за период
double low; // наименьшая цена за период
double close; // цена закрытия
long tick_volume; // тиковый объем
int spread; // спред
long real_volume; // биржевой объем
};
如果你要求的是当前的条形图,那么就是当前的价差,如果是从历史上看,那么就是在收盘时。
我没有理解错,要向数组写数据,你需要给每个单元格分配一个不同的值 array1[i] = x; 表示一个特定的单元格编号
还是可以从i=0开始依次填充数组?
我没有理解错,要向数组写数据,你需要给每个单元格分配一个不同的值 array1[i] = x; 表示一个特定的单元格编号
还是可以从i=0开始依次填充数组?
有什么区别呢? 我认为这只是两条不同的道路。