你好。我尝试使用指标 "LinearRegSlope_V1 "编写一个 EA,但 EA 打印的数据与同一日期和时间的指标数据不同:
这是输入参数。
enum Applied_price_ // Type of constant
{
PRICE_CLOSE_ = 1, // Close
PRICE_OPEN_, // Open
PRICE_HIGH_, // High
PRICE_LOW_, // Low
PRICE_MEDIAN_, // Median Price (HL/2)
PRICE_TYPICAL_, // Typical Price (HLC/3)
PRICE_WEIGHTED_, // Weighted Close (HLCC/4)
PRICE_SIMPLE, // Simple Price (OC/2)
PRICE_QUARTER_, // Quarted Price (HLOC/4)
PRICE_TRENDFOLLOW0_, // TrendFollow_1 Price
PRICE_TRENDFOLLOW1_ // TrendFollow_2 Price
};
//----indicator parameter
input Smooth_Method SlMethod=MODE_SMA; // Smoothing method
input int SlLength=12; // Smoothing depth
input int SlPhase=15; // Smoothing parameter
input Applied_price_ IPC=PRICE_CLOSE; // Price constant
input int Shift=0; // Horizontal shift of the indicator in bars
input uint TriggerShift=1; // Bar shift for the trigger
这是 iCustom 的调用。参数的顺序和类型与输入参数相同。
ExtHandle=iCustom(_Symbol,_Period,"Examples\\Test_LinearRegSlope_V1",
SlMethod,
SlLength,
SlPhase,
IPC,
Shift,
TriggerShift
);
接下来的部分是关键部分。调用CopyBuffer 函数 获取指标数据。
double RegSlopeBuffer[],TriggerBuffer[];
ArraySetAsSeries(RegSlopeBuffer,true);
ArraySetAsSeries(TriggerBuffer,true);
if(CopyBuffer(ExtHandle,0,0,3,RegSlopeBuffer)!=3)
{
Print("CopyBuffer from iMA failed, no data");
return;
}
printf("Open RegSlopeBuffer [0] is %f", RegSlopeBuffer [0]);//for test
问题是指标显示的数据与 EA 打印的数据不同。例如,EA 打印的数据是
2012.03.19 17:18:02 Core 1 2012.03.01 08:00:00 Open TriggerBuffer[0] is 0.160695
但指标的数据是 -0.051651。
谢谢。
LinearRegSlope_V1:
非标准化振荡器,基于线性回归算法。
作者: Nikolay Kositsin