algorithmic-trading - 如何在 for 循环中填充动态二维数组
问题描述
这对许多人来说似乎微不足道,但它似乎让我变得更好,因为我无法弄清楚如何使用ArrayResize()
(我认为这是非常必要的)来解决这个问题。
在下面的代码中,我想填充ar[][2]
when isBody
is true
。我怎样才能做到这一点。
int ar[][2];
void CheckBody() {
for (int i = 20; i >= 0; i--) {
if (isBody) {
int a = i + 1;
int b = i - 3*i;
// how to populate ar with [a,b] when isBody is true in this block
}
}
}
解决方案
尝试以下代码,它被编程为作为 EA 运行,但如果在指标中使用,则可以轻松修改(您必须为isBody
变量添加代码)。
#property strict
int ar[][2];
//+------------------------------------------------------------------+
//| Initialization function of the expert |
//+------------------------------------------------------------------+
int OnInit()
{
ArrayInitialize(ar,NULL);
ArrayResize(ar,1);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Deinitialization function of the expert |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| "Tick" event handler function |
//+------------------------------------------------------------------+
void OnTick()
{
for(int i=20; i>=0; i--)
{
if(isBody)
{
if(ar[0][0]!=NULL) ArrayResize(ar,ArrayRange(ar,0)+1);
int a=i+1;
int b=i-3*i;
ar[ArrayRange(ar,0)-1][0]=a; ar[ArrayRange(ar,0)-1][1]=b;
}
}
}
推荐阅读
- java - 从另一个调用 REST 端点
- linux - 在 Linux 下,SD 卡上的控制器可以重新排序写入吗?
- c# - 如何检测光标何时移动然后数据将在 WPF 中更新?
- vim - 如何在 vim 语法高亮中禁用语法区域?
- appium - nativescript-dev-appium 的键盘事件
- javascript - 如何在 jQuery 中正确检测移动设备的方向?
- google-app-engine - 如何通过部署管理器部署谷歌应用引擎应用程序?有可能做到吗
- sql - 使用 Amazon Redshift 时日期字段不为空的情况
- ros - 如何在奇异配方中使用更改目录 CD 和源命令
- python - 按嵌套字典列表中的值对字典进行排序