double GetProfitLastClosePos (string sy="", int op=-1, int mn=-1,
int j=0) // Искомый (по номеру) ордер от последнего закрытого
{
int k = OrdersHistoryTotal(), li_cnt = 0;
//----if (sy == "0" || sy == "") sy = Symbol();
for (int i = k - 1; i >= 0; i--)
{
if (!OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderSymbol() != sy) continue;
if (OrderType() > 1) continue;
if (op >= 0) if (OrderType() != op) continue;
if (mn >= 0) if (OrderMagicNumber() != mn) continue;
if (j == li_cnt) return (OrderProfit());
li_cnt++;
}
//----return (-1.0);
}
嗨!
由于某些原因,当你的库被连接时,extern操作符停止工作,即变量被定义,一切编译正常,原则上,EA工作,但同时,EA在启动类型时没有任何参数,尽管有相当多的参数。这方面的原因可能是什么?
在代码中找到
#property library
并删除。
我在这个函数中加入了一个变量j,用于倒数第二笔交易。
double GetProfitLastClosePos(string sy="", int op=-1, int mn=-1, int j=0) {我在这个函数中加入了一个变量j,用于倒数第二笔交易。
如果我们考虑到已经关闭的订单在OrdersHistoryTotal()中按照关闭的时间从右 -> 左(最后一个到右边)来考虑。
该函数返回最后一个封闭订单的第j个利润,通过符号、Magik、类型进行 "过滤"。而数字则是从第0个开始计算的。
如果我们考虑到已关闭的订单在OrdersHistoryTotal()中是按关闭时间从右到左(最新的最右)计算的。
该函数返回最后一个平仓订单的第j个利润,通过仪器、Magik、类型进行 "过滤"。而数字则是从第0个开始计算的。
大家好。
需要一个函数来关闭相同手数的买入和卖出订单,当他们的利润达到+时,由反订单来关闭。我试着做这个功能,但出现了4108错误(错误的票据)。
你能告诉我问题出在哪里吗?
订单应该在整个检查周期完成后关闭,即在for语句之后,而不是在里面。
谢谢你!如果还有人需要这样的功能,就会像这样。
是否有任何关于这种语言的视频教程?