Я понимаю, что нужно создать массив, и туда записать все.
А потом массив записать в файл.
Как записать следующие с троки в массив?
if (CandleCode_1==0) Code_0++; if (CandleCode_1==1) Code_1++; if (CandleCode_1==2) Code_2++; if (CandleCode_1==3) Code_3++; if (CandleCode_1==4) Code_4++; if (CandleCode_1==5) Code_5++; if (CandleCode_1==6) Code_6++; if (CandleCode_1==7) Code_7++; if (CandleCode_1==8) Code_8++; if (CandleCode_1==9) Code_9++; if (CandleCode_1==10) Code_10++; if (CandleCode_1==11) Code_11++; if (CandleCode_1==12) Code_12++; if (CandleCode_1==13) Code_13++; if (CandleCode_1==14) Code_14++; if (CandleCode_1==15) Code_15++; if (CandleCode_1==16) Code_16++; if (CandleCode_1==17) Code_17++; if (CandleCode_1==18) Code_18++; if (CandleCode_1==19) Code_19++; if (CandleCode_1==20) Code_20++; if (CandleCode_1==21) Code_21++; if (CandleCode_1==22) Code_22++; if (CandleCode_1==23) Code_23++; if (CandleCode_1==24) Code_24++; if (CandleCode_1==25) Code_25++; if (CandleCode_1==26) Code_26++; if (CandleCode_1==27) Code_27++; if (CandleCode_1==28) Code_28++; if (CandleCode_1==29) Code_29++; if (CandleCode_1==30) Code_30++;
Я понимаю, что нужно создать массив, и туда записать все.
А потом массив записать в файл.
Как записать следующие с троки в массив?
как вариант объявим массив и затем
1
code [I] = code [I]+ 1;
еще можно так
2
code [I]++;
где I = CandleCode
---
приятно когда код из 30 строчек переливается в одну строку :-) ?
как вариант объявим массив и затем
1
code [I] = code [I]+ 1;
еще можно так
2
code [I]++;
где I = CandleCode
---
приятно когда код из 30 строчек переливается в одну строку :-) ?
Спасибо! Вроде понял как массив создать.
А вот на запись в массив у меня компилятор ругается, что-то я не так делаю. Подскажите что?
//+------------------------------------------------------------------+ //| CandleCode_Scet_3.mq4 | //+------------------------------------------------------------------+ static datetime PrevTime=0; int Code[130]; int start() { if (PrevTime!=Time[0]) { PrevTime=Time[0]; int CandleCode_1=iCustom(NULL,0,"to_ind_CandlCode_ICS",0,1); Code[CandleCode_1]=Code[CandleCode_1]++; } return(0); } void TestWrite(string Array[],string FileName) { int handle=-1; int size=ArraySize(Array); if (size==0 || StringLen(FileName)==0) return; if (StringLen(FileName)==0) { Print("Не задано имя для отладочного файла!"); return; } //---- handle=FileOpen(FileName,FILE_WRITE|FILE_CSV); if (handle==-1) { Print("Не удалось открыть файл ",FileName); return; } if (handle>0) for (int i=0;i<size;i++) FileWrite(handle,Array[i]); if (handle>0) FileClose(handle); //---- return; }
Так, одну ошибку нашел, почему не компилировался советник.
Осталось одно предупреждение:
Function "TestWrite" is not referenced and will be removed from exp-file
Что в переводе означает:
Функция "TestWrite" не ссылалась на и будет удалена из экс-файла
Мне вот тут 'Статистику в файл', Rosh, подсказал как массив в файл записать, а я все никак не могу применить.
Подскажите, что надо сделать, чтоб в файл вывести массив?
//+------------------------------------------------------------------+ //| CandleCode_Scet_3.mq4 | //+------------------------------------------------------------------+ static datetime PrevTime=0; int Code[130]; int temp; int start() { if (PrevTime!=Time[0]) { PrevTime=Time[0]; int CandleCode_1=iCustom(NULL,0,"to_ind_CandlCode_ICS",0,1); Code[CandleCode_1]++; } return(0); } void TestWrite(string Code[],string FileName) { int handle=-1; int size=ArraySize(Code); if (size==0 || StringLen(FileName)==0) return; if (StringLen(FileName)==0) { Print("Не задано имя для отладочного файла!"); return; } //---- handle=FileOpen(FileName,FILE_WRITE|FILE_CSV); if (handle==-1) { Print("Не удалось открыть файл ",FileName); return; } if (handle>0) for (int i=0;i<size;i++) FileWrite(handle,Code[i]); if (handle>0) FileClose(handle); //---- return; }
Так, одну ошибку нашел, почему не компилировался советник.
Осталось одно предупреждение:
Function "TestWrite" is not referenced and will be removed from exp-file
Что в переводе означает:
Функция "TestWrite" не ссылалась на и будет удалена из экс-файла
Мне вот тут 'Статистику в файл', Rosh, подсказал как массив в файл записать, а я все никак не могу применить.
Подскажите, что надо сделать, чтоб в файл вывести массив?
это не ошибка это предупреждение о том что функция не задействована и не бдет включена в исполняемый файл
т к не нужна
Вы статистику как хотите собрать ? 130 тиков ?
и записать их ?
а когда прийдет еще 130 тиков старую статистику убивать будете ?
просто судя по коду вы именно так хотите
Вы статистику как хотите собрать ? 130 тиков ?
и записать их ?
а когда прийдет еще 130 тиков старую статистику убивать будете ?
просто судя по коду вы именно так хотите
Извиняюсь, что долго не писал - уезжал.
Статистику я не по 130 тиков хочу собрать а по другому.
Алгоритм такой:
1. Появился 1 тик 0 свечи, значит 1 свеча сформировалась и изменяться не будет. Считываем значение индикатора to_ind_CandlCode_ICS на 1 свече т.е. цифровой код свечи.
2. Значение ячейки массива соответствующей коду свечи увеличиваем на еденицу. В итоге после прохода советником по истории, мы имеем массив с количеством свечей каждого кода.
3. Записываем массив в файл.
Пример:
1. Началась новая свеча. Считываю значение индикатора
int CandleCode_1=iCustom(NULL,0,"to_ind_CandlCode_ICS",0,1);
2. Предположим код 1-ой свечи 24, то значение 24 ячейки в массиве увеличиваем на 1 типа Code[24]++; в коде это я прописал как
Code[CandleCode_1]++;
С появлением новой свечи опять считываем ее код (предположим код новой свечи 68), то значение в 68 ячейке увеличиваем на 1 типа Code[68]++; как выглядит в коде я уже писал.
3. Записываем массив в файл.
Предполагаю, что должно получится типа:
4
8
23
...
38
Номер стрики в файле будет соответствовать коду свечи, а выведенное в файл значение будет соответствовать количеству свечей на истории с таким кодом.
Вот вроде бы то что Вам нужно, но реализовал в виде скрипта(на мой взгляд выгоднее советника), и индикатор у меня по другому называется.
extern datetime BeginDateCalc = D'2008.01.01'; extern datetime EndDateCalc = D'2008.05.01'; int Code[130]; int temp; int i; int start() { for (i=Bars-3; i>0; i--) { if (Time[i]>=BeginDateCalc && Time[i]<=EndDateCalc) { int CandleCode_1=iCustom(NULL,0,"CandleCode",4,i); Code[CandleCode_1]++;Print(CandleCode_1); } } TestWrite(Code,Symbol()+" "+Period()+".csv"); } void TestWrite(int Code[],string FileName) { int handle=-1; int size=ArraySize(Code); if (size==0 || StringLen(FileName)==0) return; if (StringLen(FileName)==0) { Print("Не задано имя для отладочного файла!"); return; } handle=FileOpen(FileName,FILE_WRITE|FILE_CSV); if (handle==-1) { Print("Не удалось открыть файл ",FileName); return; } if (handle>0) for (int i=0;i<size;i++) FileWrite(handle,Code[i]); if (handle>0) FileClose(handle); return; }
Вот вроде бы то что Вам нужно, но реализовал в виде скрипта(на мой взгляд выгоднее советника), и индикатор у меня по другому называется.
Спасибо за помощь.
В коде твоего скрипта изменил дату начала теста и название индикатора
extern datetime BeginDateCalc = D'2001.01.01'; ... int CandleCode_1=iCustom(NULL,0,"to_ind_CandlCode_ICS",0,1);
А можешь подсказать как сделать чтоб при старте запрашивал дату начала теста?
Скрипт файл пишет, но в файле:
0 |
0 |
0 |
0 |
0 |
1918 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Такое впечатление, что в шестую ячейку скрипт записал все колическво свечей с начала теста.
Ну это дело техники, буду разбираться.
Спасибо за помощь.
В коде твоего скрипта изменил дату начала теста и название индикатора
А можешь подсказать как сделать чтоб при старте запрашивал дату начала теста?
Скрипт файл пишет, но в файле:
0 |
0 |
0 |
0 |
0 |
1918 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Такое впечатление, что в шестую ячейку скрипт записал все колическво свечей с начала теста.
Ну это дело техники, буду разбираться.
Не правильный индекс у функции!
int CandleCode_1=iCustom(NULL,0,"to_ind_CandlCode_ICS",0,i);В коде дату менять не обязательно, при запуске скрипта её можно установить...
Не правильный индекс у функции!
В коде дату менять не обязательно, при запуске скрипта её можно установить...StatBars, спасибо. Как только заменил 1 на i так все прекрасно в файл записалось.
А вот установить дату при запуске скрипта, он мне не предлагает. Хоть я перетаскиваю скрипт на график, хоть в контекстном меню выбираю "Исполнить на графике".
Ну это мелочи. Главное все работает. Еще раз - спасибо!!!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Написал советника, который должен выводить инфу в файл, но инфы много и советник не компилируется.
Подскажите как оптимизировать код, чтобы всю инфу в файл вывести? У эксперта CandleCode_Scet.mq4. Второй файл - индикатор из которого он берет инфу.