我正在尝试在 amibroker 中使用 AFL 编码分歧。该程序是基于块的分歧。所以它应该遍历每个块并在搜索峰值和谷值时比较块的值。然后它将它们存储到峰值和谷值数组中。然后它将遍历数组并检查正负背离并发出买入和卖出信号。该程序应在负背离上放置买入信号,在正背离上放置卖出信号。现在,该程序将买卖信号放置在任何地方。任何帮助,将不胜感激。
indi= (MACD(12,26) - Signal(12,26,9));
indiPeakIndex =1;
indiPeakCounter = 1;
indiTroughIndex =1;
indiTroughCounter = 1;
for(i = 4; i < BarCount-1; i++)
{
if((indi[i-1] > indi[i]) AND (indi[i-1] > indi[i-2]) AND (indi[i-2] > indi[i-3]))//Find Peaks
{
indiPeakIndex[indiPeakCounter] = i -1; //Store peaks
indiPeakCounter++;
}
else if((indi[i-1] < indi[i]) AND (indi[i-1] < indi[i-2]) AND (indi[i-2] < indi[i-3])) //Find troughs
{
indiTroughIndex[indiTroughCounter] = i -1; //Store troughs
indiTroughCounter++;
}
}
for(i =1; i < indiPeakCounter-1; i++) //Loop through peaks and check for negative divergence
{
if((indi[indiPeakIndex[i]] > indi[indiPeakIndex[i+1]]) AND (High[indiPeakIndex[i]] < high[indiPeakIndex[i+1]]))
{
Buy[i] = Open[indiPeakIndex[i+1] + 1];
}
}
for(i =1; i < indiTroughCounter-1; i++) //Positive Divergence
{
if((indi[indiTroughIndex[i]] < indi[indiTroughIndex[i+1]]) AND (High[indiTroughIndex[i]] > high[indiTroughIndex[i+1]])) //Loop through troughs and check for positive divergence
{
Sell[i] = Open[indiTroughIndex[i+1] + 1];
}
}
buy = ExRem( buy, sell );
sell = ExRem( sell, buy );