g_nOrderCnt = 0;
for (int i = OrdersTotal() - 1; i >= 0; --i)
{
if (!OrderSelect(i, SELECT_BY_POS))
continue;
if (OrderSymbol() != Symbol()) // Если нужны ордера только по текущему символу, к графику которого прикреплен советникcontinue;
if (OrderMagicNumber != i_nMagicNumber) // Если имеется входной параметр советника i_nMagicNumber, в котором указан ID ордеров советникаcontinue;
if (g_nOrderCnt < MAX_ORDERS_CNT)
continue;
g_arrstOrderInfo[g_nOrdersCnt].nTicket = OrderTicket();
g_arrstOrderInfo[g_nOrdersCnt].nType = OrderType();
g_arrstOrderInfo[g_nOrdersCnt].fOpenPrice = OrderOpenPrice();
g_arrstOrderInfo[g_nOrdersCnt].fSL = OrderStopLoss();
g_arrstOrderInfo[g_nOrdersCnt].fTP = OrderTakeProfit();
++g_nOrdersCnt;
}
至少写一个区块并展示出来。下一步是在这里提出建议。
关于数组:在这里我在全局层面上声明了4个数组。
然后我在开仓 功能中把它们归零。
我现在如何填补它们?在我想做的例子中,应用了一个额外的变量,但我不明白如何使用它。
虽然不太清楚为什么会有这些数组,而我可以用相应的函数得到票据、头寸类型、开仓价格和开仓时间的值。
关于数组:在这里我在全局层面上声明了4个数组。
然后我在开仓 功能中把它们归零。
我现在如何填补它们?我想用的例子应用了一个额外的变量,但我不明白如何使用它。
虽然不太清楚为什么会有这些数组,而我可以用相应的函数得到票据、头寸类型、开仓价格和开仓时间的值。
试着从头开始写,用Alert()输出所有的中间数据。比如说
如果你以某人为榜样,要完全接受并研究它。谁知道这个例子的作者用数组做什么?
关于数组:在这里我在全局层面上声明了4个数组。
使用一个结构数组。它将更容易进入。下面是一个带有静态数组的变体。它更容易理解。但我自己也使用动态数组。但有了它们,代码会变得更大一些。
然后我把他们的位置开放 的功能归零。
不,你没有。因为声明的动态数组默认大小为零。所以在这种情况下,这四行代码什么都不做。
现在,你如何填写它们呢?我想用的例子有一个额外的变量,但我不明白如何使用它。
接下来--组织一个订单的循环,其中每个 "自己的 "订单被存储在一个数组中。
虽然,我不太清楚这些数组有什么用,因为我可以用相应的函数得到票据、头寸类型、开仓价和开仓时间的值。
使用数组工作要快得多,也方便得多,因为一般来说,账户中存在的所有订单都不需要由这个特定的EA处理。而我们将因此而节省大量的精力和金钱。
此外,我上面提到的是一个一般的案例。当然,并不总是需要普遍主义。通常,这种数组是根据策略的要求创建的。例如,我们可以一次性按类型划分订单。买入,卖出,BuyStop,SellStop,BuyLimit,SellLimit。那么我们将需要四个这样的数组。但这样一来,我们在做交易决策时就不需要再去看整个未结订单的清单了。我们只需要知道某种类型的订单数量并参考必要的数组。
还有一件重要的事情要考虑:在处理一个tick的过程中改变订单阵列。很可能发生的情况是,在OnTick的入口处收到一个订单列表,而在中间的某个地方收到另一个。这将导致程序运行中出现难以捕捉的错误。而进入OnTick时已经形成的订单数组将不会改变(当然,除非你在程序执行过程中自己改变)。
string s=FileReadString(F1); // 读取文本文件的字符串。
StringSplit(s, "," , a); // 将逗号分隔的字符串元素放入一个数组。
datetime T1=StrToTime(a[4]); // 进一步,转换 ...
int ord=StrToInteger(a[8])。
double Price=StrToDouble(a[12])。
谢谢你,这正是我想要的。
接下来,有5种产品被制成
我们抛出了一个警报读数(任何)。
例如,级别 "200"
当警报响起时,有东西打开姿势,有东西删除自己,有东西做其他事情。我想实现一种机制,以这种方式发出信号
P.S.
我已经完成了我想做的事情,我可以把它送去审查。棚子很完美。但禁止在这里发帖。
例如,可以一次性按类型划分订单。买入,卖出,BuyStop,SellStop,BuyLimit,SellLimit。那么我们将需要四个这样的数组。但这样一来,我们在做交易决策时就不需要再去看整个未结订单的清单了。我们只需要知道某种类型的订单数量并参考必要的数组。
这正是我所需要的,或者说只是为了买和卖。对于我的简单策略来说,最主要的是不要让未平仓的头寸相互干扰,看清平仓条件。也许,我们可以不使用数组?我不理解它们:如何创造它们,如何解决它们--我在黑暗中。也许我的情况在截图上会让你看得更清楚。
似乎代码中的一切都很简单,工作也很清楚,但这是唯一不被理解的情况。
这正是我所需要的,或者说是只用于买卖。对于我的简单策略来说,最重要的是未结头寸不干扰对方的平仓条件。也许我们可以不使用数组?我不理解它们:如何创造它们,如何解决它们--我在黑暗中。也许我的情况在截图上会让你看得更清楚。
似乎代码中的一切都很简单,工作也很清楚,但这是唯一不被理解的情况。
当然,在最简单(和中等复杂度)的情况下,没有数组是比较方便的。但是,当你到了使用数百个订单的地步--那么......
会不会是我这种情况的原因,日志中写道:2018.01.25 20:22:12 2018_WPR14_AMarkets EURUSD,M5: OrderClose error 138,并实实在在地重复到
2018.01.26 16:38:12 2018_WPR14_AMarkets EURUSD,M5: 提醒:总订单=3 ?在截图中,你可以看到这段时间捕捉到了卖出的两个收盘条件。
而开仓 的信号是由几个指标的组合触发的,并由一个指标关闭。而且他们并不经常工作:在5分钟内可能会沉默几天。例如,自今年2月1日以来,只有14个职位被触发。
会不会是我这种情况的原因,日志中写道:2018.01.25 20:22:12 2018_WPR14_AMarkets EURUSD,M5: OrderClose error 138,并实实在在地重复到
你是什么情况?你是说,终端正在做一个导致错误的日志条目?你知道在哪里找吗?你是如何实现的,这是一个非常罕见的错误。 你在截图中看到的是战斗的一半。如何向专家顾问解释这个问题? 你必须写一些数学条件--而不是查看截图,专家顾问用数字操作
你是说终端机做了一个日志记录,导致了错误的发生? ...138是什么意思? 你知道去哪里找吗?
不,我是说,测试器在这个历史区间失败了,这使信号无法正常工作。因为重新报价 不可能持续24小时。
不,我的意思是说,在历史上的这一点上,测试仪有一个小故障,这使得信号无法正常工作。因为重新报价不可能持续24小时。
测试器中的引证? 这是我第一次听说。测试器是理想的--它甚至没有滑动
...有东西在踢指标--呈上升趋势。我要买...明白了...虽然我想把TP调高还不够--它已经起作用了......
所以设置一个EA,如果它这样做,那么它将退出,并在下一个tick上继续。并在演示中进行尝试