Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 715

 
ALXIMIKS:

Если данные изменились надо поставить указатель в то место от куда будем их перезаписывать fileseek, перез аписать обычным методом filewrite..., запомнить место окончания файла и обрезать WinApi функцией

Или штатным методом - в самый конец файла дописывать  позицию где заканчивается полезная иформация, а при с ледующей работе считывать эту позицию. (Можно писать позицию в другой файл)

Но все равно лучше обрезать, а штатного средства по обрезке нет (( 

это Zhunko 12.09.2014 20:19 #

Было бы интересно так же WinApi функции

Печаль, сложно то как 

 
Есть какой то простой пример перезаписи строки?
 
VOLDEMAR:
Есть какой то простой пример перезаписи строки?
А чем тебе не нравится пример в справке?
 
AlexeyVik:
А чем тебе не нравится пример в справке?
Либо сложный либо не работает ...
 

Помогите отредактировать скрипт переноса отчета на график. Не могу найти причину, по которой не отрисовывает... 

Сылка на codebase.

Немного подправленный мной вариант в прицепе.  |

                                                                        \    |    /

                                                                          \     /

                                                                             \/ 

Файлы:
 

int RegisterWindowMessageA (string param);

с эти скорее всего проблемы, надо пошаманить 

 
Heroix:

Помогите отредактировать скрипт переноса отчета на график. Не могу найти причину, по которой не отрисовывает... 

Сылка на codebase.

Немного подправленный мной вариант в прицепе. 

1. Нету в импорте PostMessageA, а в коде есть

2. Формат поменялся в общении с api (вот пример работающий Pavlick 28.07.2014 17:24 #

 

Добрый день! Помогите пжл. Используется индикатор CCI с периодом 34 и с периодом 170. Мне нужно установить проверку пересечения CCI 170 нулевой линии CCI 34. Другими словами, нужно отследить момент, когда сначала CCI 34 пересекает нулевую линию, а вслед за ним эту линию пересекает CCI 170. В этот момент CCI 170 может иметь любое значение, нулевые линии этих индикаторов на графике не совпадают.

Каким образом это сделать? Нужно использовать графические операторы? Какие и как? Заранее огромное спасибо.

 
VOLDEMAR:
Либо сложный либо не работает ...

В чём сложность? Поставить файловый указатель в начало строки? Или чтение строки заменить на запись?

Вот-же тебе дали подсказку.

r772ra:

FileSeek() , в помощь.

Выборка из справки:

//--- откроем файл
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_TXT|InpEncodingType);
//////////////////////////////////

//--- получим позицию начала для каждой строки в файле
      GetStringPositions(file_handle,pos);
// Эту функцию возьми в справке.
///////////////////////////////////////

//--- сдвинем позицию на начало этой строки
      if(FileSeek(file_handle,pos[ind],SEEK_SET)==true)
// Здесь надо pos[ind] заменить на ArrayMaximum(). Это будет последняя строка.

////////////////////////////////////

//--- прочитаем и распечатаем строку с номером ind
         PrintFormat("Текст строки с номером %d: \"%s\"",ind,FileReadString(file_handle));
// А это замени на uint  FileWrite()
///////////////////

 
Zeta:

Добрый день! Помогите пжл. Используется индикатор CCI с периодом 34 и с периодом 170. Мне нужно установить проверку пересечения CCI 170 нулевой линии CCI 34. Другими словами, нужно отследить момент, 1. когда сначала CCI 34 пересекает нулевую линию, а вслед за ним эту линию (нулевую - я правильно понял ?) пересекает CCI 170. В этот момент CCI 170 может иметь любое значение, нулевые линии этих индикаторов на графике не совпадают.

Каким образом это сделать? 2. Нужно использовать графические операторы? Какие и как? Заранее огромное спасибо.


2. Зачем ?  iCCI(......);

Один из вариантов: 

1. Заводим счетчик. Один или 2 - по выбору.

Дальше алгоритм для одного счетчика:

1. Инициализируем 0.

2. Определяем момент пересечения нулевой отметки CCI(34) и инициируем счетчик. Например, если пересечение UP, то +1, если DN -1.

3. Если счетчик = 0 - ждем следующий бар. 

4. Если значения счетчика отлично от 0 - Проверяем пересечение CCI(170).

4.1 Если пересечения нет  - увеличиваем(UP)/уменьшаем(DN) значения счетчика.

4.1 Если произошло UP - смотрим значение  счетчика: если отлично от нуля и меньше нужного значения (например, мы ожидаем пересечения CCI(170) в течение 5 баров после пересечения CCI(34) - тогда нужно значение 5).

4.1.2 Если все условия выполнены на текущем баре или прошло количество баров больше ожидаемого - сбрасываем счетчик в 0 .

4.1.3 Если условия не выполнены - увеличиваем значение счетчика.

4.2 Если DN  - аналогично, только для отрицательных значений.

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