Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1018

 
Money_Maker:
Merci beaucoup, ce sera plus rapide, c'est pourquoi j'ai aussi décidé de faire du "lippy". Un grand merci pour les codes de caractères, maintenant je n'aurai plus à les chercher.

J'ai écrit pour remplacer les noms courts des personnages, diviser les lignes en lettres, et faire le remplacement.

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 est-ce le mauvais ?

non ce n'est pas le cas ... la signification du décodage est la suivante : chaque lettre russe a une valeur, par exemple "a" qui est une combinaison de \u0430

pour convertir, vous devez déterminer quelle lettre a telle ou telle valeur et ensuite remplacer ces valeurs par des lettres ... Il semble qu'il soit possible de passer par KernelDll mais cette méthode est très confuse, du moins elle n'a pas fonctionné pour moi, il n'y a pas beaucoup d'informations et il semble que ce ne soit pas tout à fait correct ... mais une fonction personnalisée est la seule solution facile à mon avis.
 
Trader76:

J'ai écrit pour remplacer les noms courts des personnages, décomposer les chaînes de caractères en lettres, et effectuer le remplacement.

Merci beaucoup, je vais le faire.
 

Bon après-midi. J'ai un petit problème lorsque j'utilise l'indicateur et que je passe à une autre période, le terminal commence à ralentir, et parfois il se bloque complètement.

L'indicateur est celui des bandes de Bollinger avec la valeur de l'écart affichée. Je ne sais pas exactement ce qui, dans le code, cause la dégradation des performances.

Quelqu'un peut-il me dire comment résoudre ce genre de problème en général, ou par où commencer ?

 
FiVik:

Bon après-midi. J'ai un petit problème lorsque j'utilise l'indicateur et que je passe à une autre période, le terminal commence à ralentir, et parfois il se bloque complètement.

L'indicateur est celui des bandes de Bollinger avec la valeur de l'écart affichée. Je ne sais pas exactement ce qui, dans le code, cause la dégradation des performances.

Quelqu'un peut-il me dire comment résoudre ce genre de problème en général, ou par où commencer ?

Il est probable qu'il y ait une grande période pour le calcul, c'est pourquoi il se bloque, je ne pense pas que vous ayez besoin de compter pour 5000 barres dans l'historique pour obtenir les valeurs actuelles.
 

Trader76 voici la fonction qui a été ajoutée : iMAOnArray. Vous devez y spécifier le nombre d'éléments à calculer. J'ai spécifié tous les éléments du tableau ; c'est la seule façon d'obtenir la valeur correcte de la moyenne de l'écart-type.

Je l'ai vérifié en superposant une moyenne mobile sur l'indicateur de déviation standard. Si je spécifie un nombre particulier d'éléments, la valeur calculée change.

Peut-être que l'indicateur est lent parce qu'il calcule le tableau entier, mais il ne le calcule pas correctement par d'autres moyens.

La période de calcul de la moyenne est de 30.

 
FiVik:

Trader76 voici la fonction qui a été ajoutée : iMAOnArray. Vous devez y spécifier le nombre d'éléments à calculer. J'ai spécifié tous les éléments du tableau ; c'est la seule façon d'obtenir la valeur correcte de la moyenne de l'écart-type.

Je l'ai vérifié en superposant une moyenne mobile sur l'indicateur de déviation standard. Si je spécifie un nombre particulier d'éléments, la valeur calculée change.

Peut-être que l'indicateur est lent parce qu'il calcule le tableau entier, mais il ne le calcule pas correctement par d'autres moyens.

La période de calcul de la moyenne est de 30.

Montrez-moi le code
 

C'est exactement ce que j'ai ajouté, avant cela l'indicateur ne ralentissait pas.

//+------------------------------------------------------------------- 
//|Расчет среднего значения девиации
//+------------------------------------------------------------------- 
      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:

C'est exactement ce que j'ai ajouté, avant cela l'indicateur ne ralentissait pas.

Eh bien, si tu ne veux pas le faire, c'est très bien.
 
Vinin:
Eh bien, si tu ne le veux pas, très bien.

Je ne comprends pas. Comment ça, tu ne veux pas ?

Vous voulez le code entier ? Ok. (gloussements)

Le nom est en cyrillique, c'est pourquoi il est en hiéroglyphes.

Dossiers :
Raison: