int period = 21; // 21 막대 이동 평균 int sampleSize = 100; // 가져올 데이터의 막대 수 int handle = iCustom(Symbol(),0,"예제\\Custom 이동평균", 기간// 기간 0, // 오프셋 MODE_SMA, // 계산 방법 PRICE_CLOSE, // 종가 계산 );
void OnTick() {
// 이동 평균이 복사될 배열입니다. // 이 배열의 각 항목은 이동평균값입니다 // 이 배열의 첫 번째 항목(0번 위치의 항목)은 가장 최근 항목입니다 // 마지막 항목은 배열의 마지막 항목입니다 ArraySize() - 1 double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true); if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
################################# EA에서 (참고: OnInit 및 OnTick)
int OnInit(){
int period = 21; // 21 바 이동 평균
int sampleSize = 100; // 가져올 데이터의 바 수입니다 int handle = iCustom(Symbol(),0,"Examples\\Custom Moving Average", period, // 기간 0, // 오프셋 MODE_SMA, // 계산 방법 PRICE_CLOSE, // 종가 계산 );
}
OnTick() {
// 이동 평균이 복사될 배열입니다. // 이 배열의 각 항목은 이동평균값입니다 // 이 배열의 첫 번째 항목(0번 위치의 항목)은 가장 최근 항목입니다 // 마지막 항목은 배열의 마지막 항목입니다 ArraySize() - 1 double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true); if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
저에게는 파일을 컴파일 할 수 없습니다.
나는 무슨 일이 일어나고 있는지 모르겠습니다.
고마워요,
Jordi
고마워요!
아래는 제가 장난삼아 만든 간단한 예시입니다.
잘못된 부분이 있으면 수정해 주시면 수정하겠습니다.
이상한 점은 차트의 단순 이동 평균과 값이 일치하지 않는 것 같습니다.
################### 스크립트에서
int period = 21; // 21 막대 이동 평균
int sampleSize = 100; // 가져올 데이터의 막대 수
int handle = iCustom(Symbol(),0,"예제\\Custom 이동평균",
기간// 기간
0, // 오프셋
MODE_SMA, // 계산 방법
PRICE_CLOSE, // 종가 계산
);
void OnTick()
{
// 이동 평균이 복사될 배열입니다.
// 이 배열의 각 항목은 이동평균값입니다
// 이 배열의 첫 번째 항목(0번 위치의 항목)은 가장 최근 항목입니다
// 마지막 항목은 배열의 마지막 항목입니다 ArraySize() - 1
double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
################################# EA에서 (참고: OnInit 및 OnTick)
int OnInit(){
int period = 21; // 21 바 이동 평균
int sampleSize = 100; // 가져올 데이터의 바 수입니다
int handle = iCustom(Symbol(),0,"Examples\\Custom Moving Average",
period, // 기간
0, // 오프셋
MODE_SMA, // 계산 방법
PRICE_CLOSE, // 종가 계산
);
}
OnTick()
{
// 이동 평균이 복사될 배열입니다.
// 이 배열의 각 항목은 이동평균값입니다
// 이 배열의 첫 번째 항목(0번 위치의 항목)은 가장 최근 항목입니다
// 마지막 항목은 배열의 마지막 항목입니다 ArraySize() - 1
double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
}
훌륭한 기사