Как определить пустую строковую переменную? - страница 2

 
komposter:
Собственно, объем и красота кода, насколько я понял, не обсуждается.
А быстродействие надо просто проверить (это Chen-у).
KimIV:
Пример навскидку привести не могу, но в моей программистской практике бывали такие случаи, когда, вроде бы, большой и не совсем логичный код работает намного быстрее компактного и логичного кода. Критерий истины здесь может быть только один - это практика. Не попробовав, утверждать нельзя.

Ясен перец, "Опять проверять надо..." Как о КэЦэ. Я сейчас, на ходу, поменять концепцию не могу. Пока она реализована в обработке именно стрингов. Подчищу все засранки, обработку ошибок всуну, потом проанализирую коректность сбора тиков и временнЫе затраты на исполнение этого кода.

Потом можно будет по варианту KimIV попробовать.

У меня приятель-трейдер-математик-статистик занимается тиковой стратегией (я-то скептически отношусь у этому). У него один ДЦ. Скоро будет еще один. Я ему своих двух дал. Т.е. ДЦ будет четыре или пять. Я сейчас собираю по двум. 48 инструментов на каждом. Субъективное впечатление - тиков не хватает. Объемы собираемых данных немного меньше, чем я имел уже на хорошо известных символах. А комп задыхается. Мне кажется - это в моменты обрывов связи и по другими причинам, приводящим к массовий переинициализации экспертов.

Попутно. Они ведь (эксперты) друг о друге не знают? Нельзя ли их в очередь построить? На момент массовой переинициализации.

 
Проблемная ситуации если тики один за одним идут. Будут не все сохраняться. Приложение на VB, по DDE получать в текстовое поле, тогда от каждого тика событие будет отработано. Но как быть с получением по DDE c нескольких терминалов не знаю не пробовал.
 
Действительно как? Если работает два терминала и у все включен DDE, как их различать?
 
Integer:
Действительно как? Если работает два терминала и у все включен DDE, как их различать?


По DDE - никак. Только один терминал. По-моему, последний запущенный, если до этого канал не был открыт. А если уже работал, то тот с которым на момент запуска других связь уже была. Я могу ошибаться, но это не принципиально. DDE-сервером выступает только один. Тут я DDE не использую. Чистый MQL. Взял за скелет Сборщик тиков (TickSave) komposter'a. Получил кое-какие разъяснения. Теперь дорабатываю с учетом своих требований. Вот там-то и возник трабл с пустой строкой. Именно в обработке ее MQL.

Я, когда закончу свой сборщик на MQL, займусь DDE и, когда все заработает без накладок, сравню параллельную работу сборщиков тиков по DDE и эксперта. Разумеется в облегченном режиме. Чтобы б-м чистый эксперимент получился.

 

В общем-то по первым двум пунктам вопрос остается открытым.

1. Какое значение получает строковая переменная при инициализации?

2. Как получить ее значение (сынициализированное)? Она не равна "" . С чем и как ее сравнивать?

Хотелось бы услышать начальника транспортного цеха (с)

Нет, ну без шуток, действительно как? Я уже, млин, с ног сбился. Все (по-моему) обыскал. Тут, похоже, собака порылась в преобразованиях типов. Я тоже в них порылся, но безуспешно. Ткните носом, если действительно пропустил и был невнимателен. Может ответ-то на поверхности, а я в упор не вижу.

 
Chen писал (а):
У меня приятель-трейдер-математик-статистик занимается тиковой стратегией (я-то скептически отношусь у этому). У него один ДЦ. Скоро будет еще один. Я ему своих двух дал. Т.е. ДЦ будет четыре или пять.
А сколько стОит сделать свой ДЦ? Ну или хотя бы представительство?
 
KimIV:
Chen писал (а):
У меня приятель-трейдер-математик-статистик занимается тиковой стратегией (я-то скептически отношусь у этому). У него один ДЦ. Скоро будет еще один. Я ему своих двух дал. Т.е. ДЦ будет четыре или пять.
А сколько стОит сделать свой ДЦ? Ну или хотя бы представительство?

Мне кажется разговор не про ДЦ а про сбор данных с ДЦ.
 
KimIV:
Chen писал (а):
У меня приятель-трейдер-математик-статистик занимается тиковой стратегией (я-то скептически отношусь у этому). У него один ДЦ. Скоро будет еще один. Я ему своих двух дал. Т.е. ДЦ будет четыре или пять.
А сколько стОит сделать свой ДЦ? Ну или хотя бы представительство?

:)) Конечно же не о собственном ДЦ идет речь. Integer прав - речь идет о сборе данных. Это имеет смысл делать только с реала. У него один реал. У меня два. Три разных. Он дополнительно открывается еще в одном. Будет четыре разных, но одинаково надежных (если можно употреблять этот термин) как в юридическо-финансовом плане, так и в торговом (качество связи, ассортимент инструментов, саппорт etc.)

Если он выстрадает свою МТС-ину, прогонит ее на данных с разных ДЦ, можно будет уже экспериментировать с денюжкой, и затачивать общую концепцию под конкретный ДЦ. Вот.

 

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

При обработке текущего элемента массива и присвоении ему некоего значения, следующему за ним элементу принудительно втыкается "". Что будет являться ограничителем при возможной обработке всего массива на этом этапе. Т.е. получается набор актуальных значений, требующих обработки, пустая строка "" останавливающая перебор элементов, устаревшие данные не требующие обработки.

Start()
 
  // code ...
 
  saTicks[i] = sRecord; // Put new tick record into buffer array
  saTicks[i + 1] = "";  // For possibility to check it for "" like end element in cycle
 
  // code ...
 
  if (... code ...) fFlushTicks(); // обработа массива по некоторым критериям
  return(0)
 
fFlushTicks()
 
  k = ArraySize(saTicks);
  for (i = 1; i <= (k - 1); i++)
     {
     if (saTicks[i] == "") break;
     Print(saTicks[i]);
     }
  return(0);
 
Но при этом, все элементы получают значение по умолчанию. Т.е. не читаемая пустая строка. А мне ее надо определить, чтобы остановить на таком элементе слив. Все предыдущиу-то имеют какое-то значение. На первом пустом встаем.

Можно, например, так:

string array[];

// ...

if (StringLen(array[i]) == 0)    // Этот элемент пустой

// ...

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