将此函数转换为 return 数组而不是 Amibroker 中的单个值的更优雅的方法
More elegant way to convert this function to return array instead of single value in Amibroker
我有以下函数,它 return 是单个值。
function getVolumeHigh_excludeUpBars(period)
{
volume_exclude_up = IIf( ROC(CLOSE,1) < 0, Volume, 0);
SELECTED_BAR = SelectedValue( BarIndex() );
volume_exclude_up[SELECTED_BAR] = Volume[SELECTED_BAR];
volume_High = hhv(volume_exclude_up, period);
return volume_High;
}
我想将上述函数转换为 return 数组而不是单个值。我重写了函数。在这里;
function getArray_VolumeHigh_excludeUpBars(period)
{
volume_exclude_up = IIf( ROC(CLOSE,1) < 0, Volume, 0);
for (i=(BAR_COUNT-1);i>=0;i--)
{
volume_exclude_up[i] = Volume[i];
volume_High[i] = hhv(volume_exclude_up, period);
}
return volume_High;
}
重写的函数效率低下,因为它使用 for-do 循环将值单独赋值到数组中。有没有更高效优雅的方法重写函数?
对于您要实现的目标,这看起来应该没问题
volume_exclude_up = IIf( ROC(CLOSE,1) < 0, Volume, 0);
volume_High = hhv(volume_exclude_up, period);
有
volume_exclude_up[SELECTED_BAR] = Volume[SELECTED_BAR];
和
volume_exclude_up[i] = Volume[i];
您正在将原始 volume_exclude_up 变量从条件变量更改为量变量。
无论您希望 volume_exclude_up 等于时间 all 的音量,还是有条件地等于它,您的代码首先说有条件地等于它,然后改变主意并说,始终等于它。所以实际上,决定你是否想要
volume_high = hhv(volume_exclude_up, period)
或
volume_high = hhv(v, period)
我有以下函数,它 return 是单个值。
function getVolumeHigh_excludeUpBars(period)
{
volume_exclude_up = IIf( ROC(CLOSE,1) < 0, Volume, 0);
SELECTED_BAR = SelectedValue( BarIndex() );
volume_exclude_up[SELECTED_BAR] = Volume[SELECTED_BAR];
volume_High = hhv(volume_exclude_up, period);
return volume_High;
}
我想将上述函数转换为 return 数组而不是单个值。我重写了函数。在这里;
function getArray_VolumeHigh_excludeUpBars(period)
{
volume_exclude_up = IIf( ROC(CLOSE,1) < 0, Volume, 0);
for (i=(BAR_COUNT-1);i>=0;i--)
{
volume_exclude_up[i] = Volume[i];
volume_High[i] = hhv(volume_exclude_up, period);
}
return volume_High;
}
重写的函数效率低下,因为它使用 for-do 循环将值单独赋值到数组中。有没有更高效优雅的方法重写函数?
对于您要实现的目标,这看起来应该没问题
volume_exclude_up = IIf( ROC(CLOSE,1) < 0, Volume, 0);
volume_High = hhv(volume_exclude_up, period);
有
volume_exclude_up[SELECTED_BAR] = Volume[SELECTED_BAR];
和
volume_exclude_up[i] = Volume[i];
您正在将原始 volume_exclude_up 变量从条件变量更改为量变量。
无论您希望 volume_exclude_up 等于时间 all 的音量,还是有条件地等于它,您的代码首先说有条件地等于它,然后改变主意并说,始终等于它。所以实际上,决定你是否想要
volume_high = hhv(volume_exclude_up, period)
或
volume_high = hhv(v, period)