Резольвинг возвращаемых значений...

 

Есть скрипт формирующий html файл с таблицей свойств инструментов.

(на основе SymbolInfo.mq4 от KimIV)

//------- Внешние параметры скрипта ---------------------------------+
extern string siFileName  = "SymbolInfo-FB.htm";
//------- Глобальные переменные скрипта -----------------------------+
string siMS[]={
"AUDCAD",
"BO",
"AFLRUR"
};
//+------------------------------------------------------------------+
void start()
{
  int    i;
  string st;
  FileDelete(siFileName);
  st="<DIV>Актуальные на: "+TimeToStr(LocalTime(), TIME_DATE)+" торговые условия в компании "+AccountCompany()+"</DIV><HR>";
  WritingLineInFile(siFileName, st);
  WritingLineInFile(siFileName, "");
  st="<TABLE><TR><TH>№</TH><TH>Символ</TH><TH>Рынок</TH><TH>Спрэд</TH></TR>";
  WritingLineInFile(siFileName, st);
  for (i=0; i<ArraySize(siMS); i++)
  { st="<TR><TD>"+DoubleToStr(i+1, 0)+"</TD><TD>"+ //№ п.п.
       siMS[i]+"</TD><TD>"+ // Символ
         "mkt"+"</TD><TD>"+ // Тип рынка
       DoubleToStr(MarketInfo(siMS[i], MODE_SPREAD), 0)+"</TD></TR>";// Спред
    WritingLineInFile(siFileName, st);
  }
  WritingLineInFile(siFileName, "</TABLE><HR>");
  st="Сформирован файл: "+siFileName;
  Comment(st);
}
//+------------------------------------------------------------------+
//| Запись строки в файл                                             |
//+------------------------------------------------------------------+
void WritingLineInFile(string FileName, string text)
{ int file_handle=FileOpen(FileName, FILE_READ|FILE_WRITE, " ");
    if (file_handle>0)
    {
        FileSeek(file_handle, 0, SEEK_END);
        FileWrite(file_handle, text);
        FileClose(file_handle);
    }
}
//+------------------------------------------------------------------+

Всё пока замечательно идёт за исключением одного момента...

По задумке, вместо:

"mkt"+"</TD><TD>"+ // Тип рынка

стояла строка:

DoubleToStr(MarketInfo(siMS[i], MODE_MARGINCALCMODE), 0)+ // Тип рынка


Работает великолепно, тип рынка определяем по возвращаемому значению:

Способ расчета залоговых средств. 0 - Forex; 1 - CFD; 2 - Futures; 3 - CFD на индексы

Однако в таблице это малоинформативно, да и некомильфо...


Так вот, найти способ резольвировать на лету эти значения в

"Валюты", "Фучерсы" и т.д.. УВЫ никак не получается...

Что делал и как приводить не стану, ибо длинно получится,

если кратко и IF и switch и попытка написать функцию... :(((


Попутно.

Видел, и сейчас ищу скрипт где для таблицы примелась зебра.

Насколько помню это по значению итераций i, чёт-нечёт.

Если не сложно, поделитесь что ЕЩЁ можно делать в пределах цикла.



ЗЫ: вэбмастеру форума:

в ИЕ6 почему то никак более одного кода не вставить

при попытке затирает первый заменяя его вставляемым...

 
 

Спасиб...

Нашел гораздо ближе: ;)))

'Report'

поиск по htm


Однако главный вопрос так и остался вопросом вопросов...


Ещё зебра.

В одном из кодов нашел рабочее решение, пригодится.


string clr = "";
if(Close[i] > Open[i]) clr = "bgColor=#f0fff0";
if(Close[i] < Open[i]) clr = "bgColor=#fff0f0";


Теперь осталось разработать условия когда i чёт-нечет...

 
kombat:

Теперь осталось разработать условия когда i чёт-нечет...

Из кода, ссылка на который приводилась:

    if (i%2 == 1) row = str_replace(row, "bgcolor=#FFFFFF", "bgcolor=#E0E0E0");
 

Тааак... чем дальше в лес, тем толще партизаны... :)))


Нашел, смотрю... и понимаю что ничего не понимаю...

Пойду листать учебник дабы понять роль каждого элемента в этой конструкции,

да и собственно как их создавать... ;))) но чуйствую без доп.вопросов таки никак.


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

( ссылка https://book.mql4.com/ru/basics/expressions уже в фаворитах...)

С толку сбило это:

% Остаток от деления

но вот, то, что например остаток от деления 14 на 2 неравен 1,

а 13 на 2 равен 1, в жисть недогадался бы...

Или там всё считается не по букварю из арифметики?

 

Однако...

Вбил ету строку, изменения есть, но только для первой строки.

Точнее

if (i%2 == 1) colcol = "bgcolor=#FFFFF1";

, первая строка без изменений, а все остальные с указанным цветом...

 
kombat:

Точнее, первая строка без изменений, а все остальные с указанным цветом...

Надо перед ней присваивать умолчательный цвет. Получится, что поменяются только те, которые попали под условие, остальные останутся цвета по умолчанию.

 

Зебра на то и зебра, что-б черезстрочно назначать свои чвета.

Наверное многие видели терминальный стейт, и там так-же зебра решена

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


Условие простое, на итерациях выявлять чёт-нечёт, вот так:

1 AUDCAD
2 AUDCHF
3 AUDHKD
4 AUDJPY
5 AUDNZD


Ладно. Зебра подождёт, щас куда более важно понять с парсингом-ресольвигом,

видиком-шмидиком и прочими циклотронами-сихрофазатронами... ;)))

 
kombat:

Ладно. Зебра подождёт

А я типа для самообразования и развития речи отвечал? Ок.

 

Ну я ж не в упрёк, или там чего.

Просто зебра это попутный вопрос а не основной темы.


Тем более он, или она, закрыты и решены проблемы... ;)))

Действительно. Пустого значения одного из цветов недостаточно.

Вторая моя ошибка не заметил что тег <TBODY bgColor=ivory> тоже "оцвЕтен",

Ну и третья самая главная в которой щас разбираюсь, это то, что разместил

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

и for его попросту не видел... лишь после размещения рядышком всё пошло путём...

Зазебрилась таки таблица!!!

//---- запись строк таблицы ---
for(int i = 0; i < ArraySize(siMS); i++)
{
   string colcol="#FFFFFF";
   if (i%2 == 1) colcol = "bgcolor=#FFFFF0";
   //if (MathMod(i, 2) == 1) colcol = "bgcolor=#FFFFF0";// даёт аналогичный результат !!!
   WriteString("<TR " + colcol + ">");
   WriteString("<TD>"+DoubleToStr(i+1, 0)+"</TD>");// номер по порядку
   WriteString("<TD>"+siMS[i]+"</TD>");// символ
   WriteString("<TD>"+DoubleToStr(MarketInfo(siMS[i], MODE_MARGINCALCMODE), 0)+"</TD>");// рынок
   WriteString("</TR>");
}

В изысканиях набрёл на ещё один вариант чёт-нечета...

Теперь буду вникать в смысл этих математических пертурбаций с остатками и вещественными.


Спасибо, огромнейшее, за помощь в решении этого участка темы!!!

ЗЫ: сорри за формат сообщения...

честно говоря уже задолбало это прыгание на месте

Не могу понять, толи браузер, толи скрипт едитора... :(((

 
kombat:

Просто зебра это попутный вопрос а не основной темы.

А в чем основной - в этом?

kombat писал (а):
Так вот, найти способ резольвировать на лету эти значения в "Валюты", "Фучерсы" и т.д.. УВЫ никак не получается...



Это еще проще:

string strMarketType()
{
   switch ( MarketInfo(siMS[i], MODE_MARGINCALCMODE) )
   {
      case 0: return("Forex");
      case 1: return("CFD");
      case 2: return("Futures");
      default: return("error!");
   }
}
Причина обращения: