無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
ビュー:
853
評価:
(35)
パブリッシュ済み:
2016.04.25 15:58
アップデート済み:
2016.11.22 07:34
\MQL5\Scripts\
stoken.mq5 (22.71 KB) ビュー
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

内容

このスクリプトには、文字列として定義された数学および論理式の解決に使用できるクラスが含まれています。

スクリプトにはcTokenBaseとcToken(CTokenBaseのメンバ)の2つのクラスがあります。cTokenBaseクラスは使用前に設定する必要があります(下記を参照)。

下記のMQL5算術関数がサポートされています。abs, arccos, arcsin, arctan, ceil, cos, exp, floor, log, log10, max, min, mod, pow, rand, round, sin, sqrt, tan

論理および算術演算: /、%、*、+、-、>、<、 >=、<=、==、!=、&&、 ||。

表現は、二重番号、ユーザ変数およびユーザ配列を含む数字を含むことができます。ユーザ変数と配列を使用する場合は、これらの変数と配列の値を返す関数を追加する必要があります。関数はcTokenBaseクラスに追加される必要があります。

ユーザ変数と配列は文字で名づけられ(大文字小文字の区別はありません)、配列はe[0]、e[1]、f[0]、f[1] のように定義されます。

例:

sTokenデモ表現


sTokenデモ結果


cTokenBaseクラスの設定法

ユーザ変数およびユーザ配列の名前の登録が必要です。これはUsersVariables() 関数で行われます。ユーザ変数およびユーザ配列のリストは名前を含んで「;」で区切られます。

      void UsersVariables()
     {
         UserVariables="a;b;c;d"; // ユーザ変数のリスト
         UserArrays="e;f";       // ユーザ配列のリスト
      } 

2. 関数の呼び出しはUserFunc(string FuncName) 関数に追加されます。

      string UserFunc(string FuncName)
     {
         if(FuncName=="a")return(a()); 
         if(FuncName=="b")return(b());
         if(FuncName=="c")return(c());
         if(FuncName=="d")return(d());
         Alert("Function for "+FuncName+" variable is not defined");
         return("0");
      }

3. ユーザ変数の関数を追加します。

      string a()
      {
         return("1");
      }
      string b()
      {
         return("2");
      }
      string c()
      {
         return("3");
      }
      string d()
      {
         return("4");
      } 

4. (ArrNameに依存する) 関数の呼び出しをUserArray(string ArrName,int aIndex) 関数に追加します。配列要素のインデックスは aIndex 変数に指定されます。

      string UserArray(string ArrName,int aIndex){
         if(ArrName=="e")return(e(aIndex));
         if(ArrName=="f")return(f(aIndex));
         Alert("Function for "+ArrName+" array is not defined");
         return("0");
      }

5. それぞれの配列の関数を追加します。

      string e(int Index)
      {
         string v[]={"1","2","3","4","5","6","7","8","9"};
         return(v[Index]);
      }
      string f(int Index)
      {
         string v[]={"10","20","30","40","50","60","70","80","90"};
         return(v[Index]);
      }

クラスの使用

1. 表現の外部入力パラメータを宣言します。

input string Expression="enter expression here";

2. cTokenクラス変数をグローバルレベルで宣言します。

cToken token;

3. クラスを表現で初期化します。

   token.Init(Expression);

4. SolveExpression()メソッドを呼び出します。

double Value=token.SolveExpression();

クラスは単にcTokenクラスの複数のインスタンスを使用して、複数の式を解くために使用することができます。

cToken token1;
cToken token2;
cToken token3;
cToken token4;

この場合、すべてのクラスインスタンスが(cTokenBaseクラスで宣言された)同じユーザ変数と配列を使います。

独自の関数も追加できます。


cTokenクラスへの新しい関数の追加

  1. 新しい関数を登録します。これはInit()関数内で行われます。
  2. 計算コードを SolveFunc(string Func,string & aRes[]) 関数に追加します。関数の引数は aRes[] 配列にあります。引数の数には制限がありません。

MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/303

downloadhistory.mq5 downloadhistory.mq5

このスクリプトは、取引サーバで利用可能な(現在の銘柄の)履歴データをダウンロードします。

cIntSpeech cIntSpeech

音声エンジンを使用して、指定されたテキストを話します。

CDownLoadHistoryクラス CDownLoadHistoryクラス

CDownLoadHistoryクラスは履歴データダウンロードの方法を提供します。

iChartsSwitchSymbol iChartsSwitchSymbol

チャートの銘柄が変更されると、すべてのチャートでその銘柄を変更します。