初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 947

 
こんにちは、アドバイスお願いします。最新ビルドにアップグレード後、「SmoothAlgorithms」のエラーが飛び出すようになりました。そして、sma、lwma、parma、vidyaの平均が動かなくなりました。この行で悪態をついています:"array out of range in 'SmoothAlgorithms.mqh' (3394,9)".どのように修正すればよいのでしょうか?ありがとうございました。
ファイル:
 
007yurik:
こんにちは、アドバイスお願いします。最新ビルドにアップグレード後、「SmoothAlgorithms」のエラーが飛び出すようになりました。そして、sma、lwma、parma、vidyaの平均が動かなくなりました。この行で悪態をついています:"array out of range in 'SmoothAlgorithms.mqh' (3394,9)".どのように修正すればよいのでしょうか?ありがとうございました。
著者のライブラリーのディスカッションページに書き込みをする。
Библиотеки: SmoothAlgorithms
Библиотеки: SmoothAlgorithms
  • 2017.01.31
  • www.mql5.com
SmoothAlgorithms: Автор: Nikolay Kositsin...
 
Artyom Trishkin:
著者のライブラリーのディスカッションページで、著者にそのことを書き込んでください。
ありがとうございます、でも返信はありませんでした。 別のスレッドで、出品されているのを試してみます。
 

列挙要素に数値を使用する必要性がある。

enum ENUM_HOURS
{
 0,
 1,
 ..,
 23
};

これは許されないことです。コンパイルエラー 識別子が期待されます。これを回避する(数値だけを残す)方法はありますか?

 
Juer:

列挙要素に数値を使用する必要性がある。

これは許されないことです。コンパイルエラー 識別子が期待されます。これを回避する(数値だけを残す)方法はありますか?

//+------------------------------------------------------------------+
enum ENUM_HOURS
  {
   HOUR_0,  // 0
   HOUR_1,  // 1
   HOUR_2,  // 2
   HOUR_3,  // 3
   HOUR_4,  // 4
   HOUR_5,  // 5
   HOUR_6,  // 6
   HOUR_7,  // 7
   HOUR_8,  // 8
   HOUR_9,  // 9
   HOUR_10, // 10
   HOUR_11, // 11
   HOUR_12, // 12
   HOUR_13, // 13
   HOUR_14, // 14
   HOUR_15, // 15
   HOUR_16, // 16
   HOUR_17, // 17
   HOUR_18, // 18
   HOUR_19, // 19
   HOUR_20, // 20
   HOUR_21, // 21
   HOUR_22, // 22
   HOUR_23  // 23
  };
//+------------------------------------------------------------------+
 

これらの<> 記号が何を意味するのか、ドキュメントへのリンクを教えてください。

_GlobalVariableGet<string>("ResourceName")
 

最適化するパラメータのリストをプログラムで設定する方法はありますか?

パラメーターが多いことです。何千本も。別のプログラムに入れました。EA初期化時に外部ファイルから読み込む。ですから、私の仕事は今、これらのパラメーターを最適化することです。

それは例えば、最適化可能なパラメータのリストとその値や範囲をファイルにしておくことです。そこから読み出し、結果もそこに書き込む。

 

EAやスクリプトを使わずにチャートを閉じる関数を書いています。ChartGetString関数を使って、チャート上のExpert Advisorとスクリプトの名前を取得します。両方が空の場合は、閉じています。問題は、条件によってチャートが閉じるラインにあります。この条件が満たされることはありません。以下はそのコードです。

 if( ExpertName == "" && ScriptName == "" ){ChartClose ( prevChart );}
 else Print("Не закрываем график . Имя эксперта =",ExpertName,"= ScriptName =",ScriptName,"=");

以下は、Printが示すものです。

Не закрываем график . Имя эксперта == ScriptName ==

という条件に変更できることを理解しています。

StringLen(ExpertName) == 0 && StringLen(ScriptName) == 0

では、他にどのようにして文字列変数と空文字列を比較すればよいのでしょうか?

 

こんにちは!私は、データ処理とリソースへの 保存のために.mqhを作りました。すべてうまくいくのですが、ニュアンスが違っていて、インジケータをコンパイルすると、.mqhがリセットされて、保存のためのウェイト処理をやり直します。ターゲット -リソースにデータが ある 限り、リセットされることはありません。エラーの場所、修正方法を教えてください。

// Сохранение данных
#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166
#include <GlobalVariables.mqh> 

const RESOURCEDATA<MqlTick>m_Resource("::"+__FILE__); // Ресурс для передали данных (тики)
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CMyTicks
  {
protected:
public:
   //+------------------------------------------------------------------+
   //| Constructor.                                                     |
   //+------------------------------------------------------------------+      
   void CMyTicks()
     {
      _GlobalVariableSet("ResourceName",m_Resource.GetFullName()); // Записали в глобальную переменную полное имя ресурса (read-only)      
     }
   //+------------------------------------------------------------------+
   //| Destructor.                                                     |
   //+------------------------------------------------------------------+      
   void ~CMyTicks()
     {
      //_GlobalVariableDel("ResourceName");
     }

   //+------------------------------------------------------------------+  
   void CollectTicks()
     {
      MqlTick m_Ticks[];
      CopyTicks(_Symbol,m_Ticks,COPY_TICKS_ALL,0,5); // Сформировали данные
      m_Resource=m_Ticks; // Записали данные
     }
  };
//+------------------------------------------------------------------+
// Получение данных
#property indicator_chart_window
#property indicator_plots 0

#include <Test_Keep_Info_13.mqh>
CMyTicks  Test;

#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166
#include <GlobalVariables.mqh> 

static const RESOURCEDATA<MqlTick>Resource(_GlobalVariableGet<string>("ResourceName")); // Создали ресурс на основе переданного в глобальной переменной полного имени  
MqlTick Ticks[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,const int prev_calculated,const int,const double &[])
  {
   if(prev_calculated==0)
     {
      Resource.Get(Ticks); // Считали данные из ресурса.
      ArrayPrint(Ticks);   // Распечатали полученные данные

      if(ArraySize(Ticks)<1)
        {
         Test.CollectTicks();
         Print(" SAVE TICKS ");
        }

      Resource.Get(Ticks); // Считали данные из ресурса.
      ArrayPrint(Ticks);   // Распечатали полученные данные
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
pivomoe:

変数文字列と空文字列を正しく比較するにはどうしたらよいですか?

通常の空文字列は、""とNULLの2つです。また、カスタムの空文字列が存在することもあります。

理由: