Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я написал скрипт, который должен считать сколько баров из 1000 пересекли каждую цену и записывать итог в файл. Но в файле цены записываются с 15-ю знаками после запятой. Мне нужно чтобы записывались 2, 4 или 5 цифр после запятой в зависимости от инструмента и брокера. Я читал про проблему вещественных чисел, но так и не понял как ее решить. Пробовал функцию NormalizeDouble, но результата никакого. Помогите пожалуйста. Вот скрипт:
void OnStart()
{
int handle;
handle=FileOpen("FindLevels.txt",FILE_CSV|FILE_WRITE,'\t');
FileWrite(handle,"Cost","Bars Num");
//Ищем наименьшую цену за n свечей
double lows[];
CopyLow(Symbol(),Period(),0,1000,lows);
double min=3000;
for(int i=0; i<1000; i++)
{
if(lows[i]<min)
min=lows[i];
}
Alert("Самая низкая цена за 1000 свечей = ",min);
//Ищем наибольшую цену за n свечей
double highs[];
CopyHigh(Symbol(),Period(),0,1000,highs);
double max=0;
for(int i=0; i<1000; i++)
{
if(highs[i]>max)
max=highs[i];
}
Alert("Самая высокая цена за 1000 свечей = ",max);
//Определяем сколько раз повторяется каждая цена
for (double d = min; d <= max; d += SymbolInfoDouble(Symbol(), SYMBOL_POINT))
{
double a = 0.0;
for(int i = 0; i < 1000; i++)
if(d > lows[i] && d < highs[i])
a+=1;
FileWrite(handle, d, a);
}
FileClose(handle);
}