どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 1018

削除済み  
Money_Maker:
ありがとうございます。

文字の短い名前を置き換え、行を文字に分解し、置き換えを行うように書きました。

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()

それとも、間違っているのか?

ロシア語の文字はそれぞれ値を持って います。例えば、"a "は "ä "の組み合わせです。

変換するには、どの文字がこの値またはこの値を持っているかを判断し、これらの値を文字に置き換える必要があります ...それはKernelDllを介して可能であるように見えるが、その方法は、少なくともそれは私のために動作しませんでした非常に混乱している、多くの情報がなく、それはかなり正しくないと思われる... しかし、カスタム関数は、私の意見では、唯一の簡単な方法です。
 
Trader76:

文字の短い名前を置換し、文字列を文字に分解し、置換を行うように書いています。

ありがとうございます、そうします。
 

こんにちは。インジケータを使用しているときに、他のタイムフレームに切り替えると、ターミナルが遅くなり、時には完全にハングアップしてしまうという小さな問題があります。

インジケータはボリンジャーバンドで、偏差値が表示されます。コードの具体的などこが性能低下を引き起こしているのかがわからないのです。

一般的にこのような問題はどのように解決されるのか、あるいは何から手をつければいいのか、どなたかアドバイスをお願いします。

削除済み  
FiVik:

こんにちは。インジケータを使用しているときに、他のタイムフレームに切り替えると、ターミナルが遅くなり、時には完全にハングアップしてしまうという小さな問題があります。

インジケータはボリンジャーバンドで、偏差値が表示されます。コードの具体的などこが性能低下を引き起こしているのかがわからないのです。

一般的にこのような問題はどのように解決されるのか、あるいは何から手をつければいいのか、どなたかアドバイスをお願いします。

おそらく、計算のための大きな期間があり、それがハングアップする理由です。現在の値を取得するために、履歴の5000バーを数える必要はないと思います。
 

Trader76 ここに、追加された機能である iMAOnArrayがあります。その中で、計算する要素数を指定する必要があります。配列の全要素を指定しました。これだけでは、標準偏差の平均値を正しく求めることはできません。

標準偏差のインジケーターに移動平均を重ね合わせて確認しました。特定の要素数を指定すると、計算値が変わってしまう。

おそらく、インジケータが遅いのは配列全体を計算しているからで、他の方法では正しく計算されません。

算出された平均値の期間は30である。

 
FiVik:

Trader76 ここに、追加された機能である iMAOnArrayがあります。その中で、計算する要素数を指定する必要があります。配列の全要素を指定しました。これだけでは、標準偏差の平均値を正しく求めることはできません。

標準偏差のインジケーターに移動平均を重ね合わせて確認しました。特定の要素数を指定すると、計算値が変わってしまう。

おそらく、インジケータが遅いのは配列全体を計算しているからで、他の方法では正しく計算されません。

算出された平均値の期間は30である。

コードを表示する
 

これはまさに私が追加したもので、これ以前はインジケータが遅くなることはありませんでした。

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

これはまさに私が追加したもので、これ以前はインジケータが遅くなることはありませんでした。

まあ、やりたくないならいいんですけどね。
 
Vinin:
まあ、いらないならいいんですけどね。

理解できない。嫌とはどういうことですか?

全コードが欲しいのか?なるほど。

名前はキリル文字だから、象形文字になるんです。

ファイル: