MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1877 1...187018711872187318741875187618771878187918801881188218831884...1953 新しいコメント Mihail Matkovskij 2022.01.22 10:16 #18761 Maksim Emeliashin 静的に 配列し、この配列の中で文字列検索を行うなどの自転車操業が必要です。 MQLの場合、この機能は正しく動作しません template<typename T> bool StringToEnum(const string i_str, T &o_val) { for(int i = 0; i < 256; i++) { o_val = (T)i; if(StringCompare(EnumToString(o_val), i_str, false) == 0) return(true); } o_val = WRONG_VALUE; return(false); } https://www.mql5.com/ru/docs/strings/stringcompare パラメータ ストリングス1 [in] 最初の文字列。 ストリングス2 [in] 2番目の文字列。 case_sensitive=true [in] 大文字・小文字を区別するモード。真であれば、"A">"a "となる。 偽の 場合、"A"="a " となる。デフォルトはtrueである。 enumに2つの定数、例えばENUM1とenum1がある場合、i_str:"enum1" 関数で定数ENUM 1の値を返すことができます。なぜStringCompare なのか?もし、それが次のような方法で可能なら。 template<typename T> bool StringToEnum(const string i_str, T &o_val) { for(int i = INT_MIN; i <= INT_MAX && !IsStopped(); i++) // перебор всех возможных значений int { o_val = (T)i; if(i_str == EnumToString(o_val)) return(true); } o_val = WRONG_VALUE; return(false); } Vladimir Karputov 2022.01.22 10:22 #18762 Amon1953 ポジションのクローズ 理由の取得方法がわかりません。 次に何をすべきかを判断するために必要なのです。 MT5端末の履歴ウィンドウで、取引、注文、ポジションを選択することができます。 取引履歴から、DEAL_REASONとDEAL_REASON_SLが等しい取引を探す必要があります。 追加:それは単純化することができます - OnTradeTransactionでちょうどトランザクションTRADE_TRANSACTION_DEAL_ADDをキャッチし、取引履歴にこのトランザクションを作成したDEALを 探すために呼び出すことです。そして、同じレシピ:...DEAL_REASONイコールDEAL_REASON_SL Mihail Matkovskij 2022.01.22 10:24 #18763 Mihail Matkovskij #:この関数は、MQLでは正しく動作しませんhttps://www.mql5.com/ru/docs/strings/stringcompareenumに2つの定数、例えばENUM1とenum1がある場合、i_str:"enum1" とすると、関数は定数ENUM 1の値を返すかもしれません。ところで、なぜStringCompareが 必要なのでしょうか?もし、それが次のような方法で可能なら。 そして、より高速なバリアント。 template<typename T> bool StringToEnum(const string i_str, T &o_val, int i_min_enum, int i_max_enum) { for(int i = i_min_enum; i <= i_max_enum && !IsStopped(); i++) { o_val = (T)i; if(i_str == EnumToString(o_val)) return(true); } o_val = WRONG_VALUE; return(false); } bool StringToEnum(const string i_str, T &o_val) { return StringToEnum(i_str, o_val, INT_MIN, INT_MAX); } // медленный вариант Maksim Emeliashin 2022.01.22 12:41 #18764 Alexey Viktorov #:これは何のためにあるのでしょうか?ENUM_TIMEFRAMESの数値を独自のものに置き換えるか?それとも何? さて、今はインジケータの設定やEAのパラメータをデータベースに書き込む必要があります。同時に、私も欲しいと思っています。 1. 人間が読める記録 2. 機械読み取り可能な記録 3.カスタムenumで新しい値を追加できる安定性(必ずしも最後でなくてもよい)。 record - EnumToStringは問題ないのですが、他の型と違って逆関数を作っていないのが残念です。 Maksim Emeliashin 2022.01.22 12:46 #18765 Mihail Matkovskij #:そして、より高速なバージョン。大文字小文字を区別しない比較については同感です。私は自分自身のenumについて、小文字を使用しないより一般的なバイクを書きました。しかし、ENUM_TIMEFRAMESの場合は、このバリアントを実行します。bool StringToEnum(const string i_str, T &o_val) { return StringToEnum(i_str, o_val, INT_MIN, INT_MAX); } // медленный вариант PERIOD_MN1 :) の間、コーヒーを飲む時間を作ることができます。 12345678902003 2022.01.22 12:53 #18766 Valeriy Yastremskiy #:各バー上の直線から価格を求め、比較したり、交差する差の符号が変わるところで、差を求めたりする)ちなみに、バー上に等差がない場合もあります。 その際、どのような機能が使われているのでしょうか?MqlRates?また、ObjectGetを使用する場合、オブジェクトのプロパティを指定する必要がありますが、OBJPROP_PRICEを取る場合、現在のバーより前の価格を取得するようにするにはどうすればよいでしょうか。 Tretyakov Rostyslav 2022.01.22 14:47 #18767 12345678902003 #: 助けてください。2本のGann線を描き、ある点で交差します。これらの線の交点の座標を知りたいのです。 ギャンラインの2点目の価格を判断できれば、KimIVは さらにお役に立てます Mihail Matkovskij 2022.01.22 14:53 #18768 Maksim Emeliashin #:大文字小文字を無視した比較については同感です。私は自分自身のenumについて、小文字を使用しない、より一般的な自転車を書きました。しかし、ENUM_TIMEFRAMES の場合は、このバリアントが実行されます。 PERIOD_MN1 :) のために、ピックアップする前にコーヒーを飲む時間があるかもしれません。 さて、ENUM_TIMEFRAMESでは、最小値と最大値が既知で ある。そのため、明示的に指定することができるのです。 残りのenumについては,おおよその値の範囲を知っていれば十分である。enum 宣言で定数が指定されていない場合は、通常0からとなる。i_max_enumには、2桁または3桁の任意の数値(50、100、255)を指定することができる。 Alexey Viktorov 2022.01.22 15:09 #18769 Maksim Emeliashin #:今現在、インジケータの設定やEAのパラメータをデータベースに書き込む必要があります。同時に、私も欲しいと思っています。 1. 人間が読める記録2. 機械読み取り可能な記録3.そのカスタムenumに新しい値を追加する安定性、必ずしも最後でなくてもよい。record - EnumToStringについては問題ありませんが、他の型と異なり、開発者は逆関数を作りませんでした。 列挙を印刷しようとしたことがありますか? Print(PERIOD_M5); 何が印刷されると思いますか? しかし、プログラムで列挙を作成するのは...そうです。それはそれで面白いかもしれませんね。 Yurij Kozhevnikov 2022.01.22 16:26 #18770 x572intraday #: なぜ、入力パラメータを ループさせることができないのでしょうか?なぜ、こんな仕打ちをするのですか? もちろんこれは松葉杖ですが、私は使っています。必要なデータをすべて文字列入力変数に所定のセパレータを介して入力し、StringSplitを使って 配列にオーバーフローさせるのです。 1...187018711872187318741875187618771878187918801881188218831884...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
MQLの場合、この機能は正しく動作しません
https://www.mql5.com/ru/docs/strings/stringcompare
パラメータ
ストリングス1
[in] 最初の文字列。
ストリングス2
[in] 2番目の文字列。
case_sensitive=true
[in] 大文字・小文字を区別するモード。真であれば、"A">"a "となる。 偽の 場合、"A"="a " となる。デフォルトはtrueである。
enumに2つの定数、例えばENUM1とenum1がある場合、i_str:"enum1" 関数で定数ENUM 1の値を返すことができます。なぜStringCompare なのか?もし、それが次のような方法で可能なら。
次に何をすべきかを判断するために必要なのです。
MT5端末の履歴ウィンドウで、取引、注文、ポジションを選択することができます。
取引履歴から、DEAL_REASONとDEAL_REASON_SLが等しい取引を探す必要があります。
追加:それは単純化することができます - OnTradeTransactionでちょうどトランザクションTRADE_TRANSACTION_DEAL_ADDをキャッチし、取引履歴にこのトランザクションを作成したDEALを 探すために呼び出すことです。そして、同じレシピ:...DEAL_REASONイコールDEAL_REASON_SL
この関数は、MQLでは正しく動作しません
https://www.mql5.com/ru/docs/strings/stringcompare
enumに2つの定数、例えばENUM1とenum1がある場合、i_str:"enum1" とすると、関数は定数ENUM 1の値を返すかもしれません。ところで、なぜStringCompareが 必要なのでしょうか?もし、それが次のような方法で可能なら。
そして、より高速なバリアント。
これは何のためにあるのでしょうか?ENUM_TIMEFRAMESの数値を独自のものに置き換えるか?それとも何?
さて、今はインジケータの設定やEAのパラメータをデータベースに書き込む必要があります。同時に、私も欲しいと思っています。
1. 人間が読める記録
2. 機械読み取り可能な記録
3.カスタムenumで新しい値を追加できる安定性(必ずしも最後でなくてもよい)。
record - EnumToStringは問題ないのですが、他の型と違って逆関数を作っていないのが残念です。
そして、より高速なバージョン。
大文字小文字を区別しない比較については同感です。私は自分自身のenumについて、小文字を使用しないより一般的なバイクを書きました。
しかし、ENUM_TIMEFRAMESの場合は、このバリアントを実行します。
PERIOD_MN1 :) の間、コーヒーを飲む時間を作ることができます。各バー上の直線から価格を求め、比較したり、交差する差の符号が変わるところで、差を求めたりする)ちなみに、バー上に等差がない場合もあります。
助けてください。2本のGann線を描き、ある点で交差します。これらの線の交点の座標を知りたいのです。
大文字小文字を無視した比較については同感です。私は自分自身のenumについて、小文字を使用しない、より一般的な自転車を書きました。
しかし、ENUM_TIMEFRAMES の場合は、このバリアントが実行されます。
PERIOD_MN1 :) のために、ピックアップする前にコーヒーを飲む時間があるかもしれません。さて、ENUM_TIMEFRAMESでは、最小値と最大値が既知で ある。そのため、明示的に指定することができるのです。
残りのenumについては,おおよその値の範囲を知っていれば十分である。enum 宣言で定数が指定されていない場合は、通常0からとなる。i_max_enumには、2桁または3桁の任意の数値(50、100、255)を指定することができる。
今現在、インジケータの設定やEAのパラメータをデータベースに書き込む必要があります。同時に、私も欲しいと思っています。
1. 人間が読める記録
2. 機械読み取り可能な記録
3.そのカスタムenumに新しい値を追加する安定性、必ずしも最後でなくてもよい。
record - EnumToStringについては問題ありませんが、他の型と異なり、開発者は逆関数を作りませんでした。
列挙を印刷しようとしたことがありますか?
何が印刷されると思いますか?
しかし、プログラムで列挙を作成するのは...そうです。それはそれで面白いかもしれませんね。
なぜ、入力パラメータを ループさせることができないのでしょうか?なぜ、こんな仕打ちをするのですか?