Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1018

 
Money_Maker:
Muito obrigado, isto será mais rápido, por isso também decidi "lippy" agradecimentos especiais pelos códigos de caracteres, agora não terei que procurá-los.

Eu escrevi para substituir nomes curtos por caracteres, quebrar linhas em letras e fazer a substituição.

string sub_symb[];
ushort u_sep=StringGetCharacter(" ",0);
string SymbolArr[]={
//-------------------- в конце ставить запятую и писать через пробел
// СЕЛЬХОЗ.ПРОДУКЦИЯ
 "Молоко DC",
 "Корм GF",
 "Свинина HE",
 "Рогатый_скот LE",
 "Кукуруза ZC",
 "Соевое_масло ZL",
 "Соевая_мука ZM",
 "Соевые_бобы ZS",
 "Пшеница ZW",
// ЭНЕРГИЯ
 "#BRENT CL",
 "Мазут HO",
 "Газ NG",
 "Газ(мини) QG",
 "Нефть_WTI_(мини) QM",
 "Бензин RB",
// ИНДЕКСЫ
 "S&P_(мини) ES",
 "NASDAQ_(мини) NQ",
 "S&P_500 SP",
 "#DJI30 YM",
 "#DAX30 FDAX",
// МЕТАЛЛЫ
 "Золото GC",
 "Медь HG",
 "Палладий PA",
 "Платина PL",
 "Серебро SI",
 "IndexUSD DX",

//+---------------------------------------------------------------------------------------------+
};

string SubSymbols(string CurSymb)
 {
 for(int i=0; i<ArraySize(SymbolArr); i++)
  {
   StringSplit(SymbolArr[i],u_sep,sub_symb);
   if(CurSymb==sub_symb[0])
    {
     return(sub_symb[1]);
    }
  }
//-
 return(_Symbol);
 }
 
eevviill:

StringGetChar()

StringGetChar()

Ou é o errado?

não é ... o significado da decodificação é este: cada letra russa tem um valor, por exemplo "a" que é uma combinação de \u0430

para converter você precisa determinar qual letra tem este ou aquele valor e depois substituir estes valores por letras ... Pode ser possível através do KernelDll, mas é um caminho lamacento, pelo menos não funcionou para mim, não tem muita informação e parece que não está bem ... mas uma função personalizada é a única saída fácil na minha opinião
 
Trader76:

Tenho escrito para substituir nomes curtos por caracteres, quebrar as cordas em letras, e fazer a substituição.

Muito obrigado, eu o farei.
 

Boa tarde. Tenho um pequeno problema ao usar o indicador ao mudar para outro período de tempo, o terminal começa a desacelerar, e às vezes fica completamente pendurado.

O indicador é o Bollinger Bands com o valor do desvio exibido. Não sei o que exatamente no código está causando a degradação do desempenho.

Alguém pode aconselhar como esses problemas são resolvidos em geral, ou por onde começar?

 
FiVik:

Boa tarde. Tenho um pequeno problema ao usar o indicador ao mudar para outro período de tempo, o terminal começa a desacelerar, e às vezes fica completamente pendurado.

O indicador é o Bollinger Bands com o valor do desvio exibido. Não sei o que exatamente no código está causando a degradação do desempenho.

Alguém pode aconselhar como esses problemas são resolvidos em geral, ou por onde começar?

O mais provável é que haja um grande período para o cálculo, é por isso que ele pende, não acho que você precise contar por 5000 barras na história para obter os valores atuais.
 

Trader76 aqui é a função que foi adicionada: iMAOnArray. Nele, é preciso especificar o número de elementos a serem calculados. Eu especifiquei todos os elementos da matriz; esta é a única maneira de obter o valor correto da média de desvio padrão.

Verifiquei-o sobrepondo uma média móvel no indicador de desvio padrão. Se eu especificar um determinado número de elementos, o valor calculado muda.

Talvez o indicador seja lento por causa do cálculo de toda a matriz, mas não o calcula corretamente de outras maneiras.

O período de média calculada é de 30.

 
FiVik:

Trader76 aqui é a função que foi adicionada: iMAOnArray. Nele, é preciso especificar o número de elementos a serem calculados. Eu especifiquei todos os elementos da matriz; esta é a única maneira de obter o valor correto da média de desvio padrão.

Verifiquei-o sobrepondo uma média móvel no indicador de desvio padrão. Se eu especificar um determinado número de elementos, o valor calculado muda.

Talvez o indicador seja lento por causa do cálculo de toda a matriz, mas não o calcula corretamente de outras maneiras.

O período de média calculada é de 30.

Mostre-me o código
 

Isto é exatamente o que eu acrescentei, antes disso o indicador não estava desacelerando.

//+------------------------------------------------------------------- 
//|Расчет среднего значения девиации
//+------------------------------------------------------------------- 
      Averagedeviation=iMAOnArray(deviationBuffer,0,30,0,MODE_SMA,i);
//+------------------------------------------------------------------- 
//|Вывод значения на экран отдельным объектом
//+------------------------------------------------------------------- 
      string Text =DoubleToStr(deviation,4);                   // Текст для отображения с указанием количества знаков ппосле запятой
      if(deviation<=(Averagedeviation*1.1)&&deviation>=(Averagedeviation*0.9))// Выбор цвета зависит от динамики
      Color_Day_Percent = Color_0;                             // Цвет для 0
      if(deviation>Averagedeviation*1.1)                       // Выбор цвета зависит от динамики
      Color_Day_Percent = Color_Up;                            // Цвет для +
      if(deviation<Averagedeviation*0.9)                       // Выбор цвета зависит от динамики
      Color_Day_Percent = Color_Dn;                            // Цвет для -
      
      if(ObjectFind(Obj_Name)==-1)                             // Если объекта нет..
      {
      ObjectCreate(Obj_Name,OBJ_LABEL,0,0,0);                  // Создаём новый объект 
      ObjectSet    (Obj_Name,OBJPROP_CORNER,    1);            // Угол привязки            
      ObjectSet    (Obj_Name,OBJPROP_XDISTANCE,15);            // Координата Х
      ObjectSet    (Obj_Name,OBJPROP_YDISTANCE,15);            // Координата Y
      }
      ObjectSetText(Obj_Name,Text,10,"MS Sans Serif",Color_Day_Percent);// Текстовое описание объекта      
      i--;   
     }
//----------------------------------------------------------------------
   return(0);
  }
int deinit()
   {
   ObjectDelete(Obj_Name);                                      // Удаление объекта при выходе
   return(0);
   }
//+------------------------------------------------------------------+
 
FiVik:

Isto é exatamente o que eu acrescentei, antes disso o indicador não estava desacelerando.

Bem, se você não quiser fazer isso, tudo bem.
 
Vinin:
Bem, se você não quiser, tudo bem.

Eu não entendo. O que você quer dizer com "não quer"?

Você quer o código completo? Certo. (risos)

O nome está em cirílico, por isso está em hieróglifos.

Arquivos anexados: