안녕하세요.이 지표"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:
선형 회귀 알고리즘을 사용하는 정규화되지 않은 오실레이터.
Author: Nikolay Kositsin