Скрипты: ZigZag to File

 

ZigZag to File:

Скрипт записывает значения индикатора ZigZag в файл формата CSV.

Author: Анатолий Сергеев

 

Правильно ли я понимаю, что если в строке:

date = iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, shift);
поменять значения iCustom, то можно записать данные с любого индикатора. А если добавить double date01, date02, date03, ........, то можно получить данные с кучи индикаторов и\или буферов?
 
Azerus:

Правильно ли я понимаю, что если в строке:

date = iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, shift);
поменять значения iCustom, то можно записать данные с любого индикатора. А если добавить double date01, date02, date03, ........, то можно получить данные с кучи индикаторов и\или буферов?

Совершенно верно, данный код можно использовать как шаблон, и с легкостью переделать под запись данных любых индикаторов, просто изменяя функцию iCustom() и ее параметры.

 

Подскажите, ежели вместо: " isAllZigZagDate - количество сохраняемых данных, false - только последнюю точку ZigZag, true - все точки на текущей истории.", сделать

extern int No_of_bars = 50;

что определяет\ограничивает количество баров, с которых снимаются\записываются показания индикатора; 0 - означает все бары в истории.

В этом случае, мы заменяем, насколько я понимаю:

for(int shift = 0; shift <= Bars-1; shift++){
// следующей строкой:
for(int shift = 0; shift <= No_of_bars; shift++){

 А как дальше?

 
Azerus:

Подскажите, ежели вместо: " isAllZigZagDate - количество сохраняемых данных, false - только последнюю точку ZigZag, true - все точки на текущей истории.", сделать...
А как дальше?

И удалите строчку:  

if(!isAllZigZagDate)break;

Тем самым вы ограничите поиск точек, количеством баров указанным в параметре No_of_bars, соответственно параметр isAllZigZagDate тоже можно удалить.

  0 - означает все бары в истории.

В init() добавте этот код: 

if(No_of_bars == 0)No_of_bars = Bars-1;
 

Отличная вещь!

Автору - огромная благодарность.... 

 
99% прог по анализу используют общепринятый стандарт ;20080715,140000,210.38,210.51,210.00,210.14,2694 20080715,150000,210.12,210.15,208.91,209.18,3132....... 20100712,070000,133.43,133.46,132.78,133.02,1535 20100712,080000,133.01,133.26,132.89,133.13,1589 20100712,090000,133.12,133.28,132.95,133.01,773.. а здесь ; 2010.07.13 07:00.132,91.132,91.132,61.132,66.132,61 2010.07.13 01:15.133,46.133,61.133,45.133,57.133,61.... 2009.08.31 20:15.151,16.151,24.151,10.151,15.151,10 2009.08.31 17:00.151,39.151,53.151,29.151,39.151,53..., что ставит ее в разряд не употребляемых, по скольку гнать в ексель переворачивать даты в нормальное положение и гнать в прогу для анализа смысла нет . Я имею ввиду убывание и возрастание дат, да и с знаками табуляции есть на фороксе стандарт .Нельзя ли привести скрипт к стандарту, ну хотя бы по убыванию дат .
 

AAAksakal:
 99% прог по анализу используют общепринятый стандарт... 

Из той «каши» цифр и точек, которую вы представили очень трудно понять, какой именно стандарт вы имеете в виду, и какой результат вам нужен на выходе.
Этот скрипт записывает в файл данные, которые ему предоставляет терминал, в том формате, в котором терминал сам с ними работает. Исключение составил лишь разделитель целой и дробной частей котировок, измененный мною исключительно для удобства, чтобы не перенастраивать русскую локализацию, при работе в Excel. Впрочем, данная опция легко отключается, и вы получете в файлах полный аналог данных из терминала.

Формат даты терминала: "yyyy.mm.dd [hh:mi]"

...что ставит ее в разряд не употребляемых, по скольку гнать в ексель переворачивать даты в нормальное положение и гнать в прогу для анализа смысла нет...

"переворачивать даты" в каком смысле? в наш формат "dd.mm.yyyy [hh:mm]" ? А Excel это делает автоматически, потому что как я уже сказал, он "локализован".

  да и с знаками табуляции есть на фороксе стандарт

О каких именно знаках табуляции идет речь? На форексе стандартов нет, они есть в терминале, и скрипт будучи частью этого ПО им стало быть соответствует.
Есть такая замечательная вещь, парсинг называется, с его помощью текстовые данные можно привести в любой удобный вид и формат, только вот вопрос в какой?
 

Вот первая строчка из вашего скрипта :2010....07....13 07:00.132,91.132,91.132,61.132,66.132,61


...Вот первая строчка из МТ : 2009.....01....05,051500,148.23,148.25,148.09,148.15,922..


...Вот последняя строчка из МТ:

2010...01....05,051500,148.23,148.25,148.09,148.15,922...разная последовательность дат в столбце, по этому ваш график в большинстве программ будет вывернут на изнанку.

 
AAAksakal: ...

Честно признаться понятней не стало ...

Вот первая строчка из вашего скрипта :2010....07....13 07:00.132,91.132,91.132,61.132,66.132,61  

Вроде все нормально, или вас смущает, что в первую строчу, записаны значения последнего экстремума? Ну, так это же нормально, так организованы массивы таймсерий, хотя в принципе «развернуть» не долго.

...Вот первая строчка из МТ :
2009.....01....05,051500,148.23,148.25,148.09,148.15,922...

...Вот последняя строчка из МТ:
2010...01....05,051500,148.23,148.25,148.09,148.15,922...

Странно строчки отличаются только датами, это нормально?
 

Ладно. Вот элементарный пример работы в Excel с данными сгенерированными скриптом, и никаких проблем не возникло. https://www.mql5.com/ru/forum/111497/page748#352301

Причина обращения: