Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Он не позволяет мне скомпилировать файл.
Я не знаю, есть ли какие-нибудь идеи, что происходит.
Спасибо,
Жорди
Спасибо!
Ниже приведен простой пример, который я собрал, играя вокруг.
Если это неправильно, пожалуйста, поправьте меня, и я внесу поправки.
Что мне кажется странным, так это то, что значения не совпадают с простым скользящим средним на графике.
################### В скрипте
int period = 21; //Скользящая средняя на 21 бар
int sampleSize = 100; //Это количество баров данных, которые вы хотите получить
int handle = iCustom(Symbol(),0, "Examples\\\Custom Moving Average",
period,// Период
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 =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
################################# В советнике (ВНИМАНИЕ: 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 =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
}
Отличная статья