MQL5におけるOOPに関する質問 - ページ 91 1...84858687888990919293949596 新しいコメント Igor Makanu 2020.09.23 16:01 #901 Dmitry Fedoseev:なぜ、いきなりうまくいかないのでしょうか?3つの列挙、いずれも10以上ではない 中学2年生の算数。 3つの列挙と2つのintで、4バイト=intが必要です。 int +1000 - -1000 の範囲で必要です。+1000 , pips, それはちょうど2^10です。 int intは検討する価値がある、1pipsのステップは重要ではない、2.5-...9pipsも可能、すなわち離散性はあまり重要ではない Dmitry Fedoseev 2020.09.23 16:07 #902 Igor Makanu:3つの列挙と2つのint、4バイトが必要int +1000 - -1000 の範囲で必要です。+1000 , pips, それはちょうど2^10です。intはまだ検討する価値がある、1pip単位は重要ではない、2.5-...9pipを持つことができる、すなわち離散性はそれほど重要でない 十分すぎるほどのスペースがあります。int_max=2147483647 です。 ストレートにぶっきらぼうにするのではなく、テンスにして、8*8*4で惜しみなく作ればいいんです。考えるのは自分だけでいい)))でも、その必要はなく、とにかくすべてがフィットする。 そして、チェックするために、INT_MAXまでのサイクルを開始するのはいかがでしょうか。 Igor Makanu 2020.09.23 16:25 #903 Dmitry Fedoseev:十分すぎるほどの広さ。int_max=2147483647 です。また、ピンチのときに行うために、占有して、経済的に、 - 8 * 8 * 4を愚かにも、ストレートすることはできません。考えるのは自分だけでいい)))でも、その必要はなく、とにかくすべてがフィットする。そして、チェックするために、INT_MAXまでのサイクルを作るのはどうでしょうか。これはハードウェアによってチェックされるので、自分で結果ファイルを見る必要はありません。 気にしない...評価するためのコードが必要であり、変換方法よりも方法論が重要である Alexandr Andreev 2020.09.23 16:33 #904 Igor Makanu:気にしない...評価するためのコードが必要であり、テスト方法は変換方法よりも重要である ビット単位のプライム化、ダメですか?ビット値で数値を文字列に変換するようなものです。一つは整数用、もう一つはドットとチェック用です。それはあくまでもデバッグのためです。 Igor Makanu 2020.09.23 16:42 #905 Alexandr Andreev:ビットワイズ・アンライト、ダメ?ビット値で数値を列挙するようなもの。一つは整数用、もう一つはドットとチェック用です。それはあくまでもデバッグのためです。 うん、それはわかるけど、どうやって検証を自動化するんだ? 問題は、私の例ではなく、まだ他のデータの3つのintをパックする必要があるという事実で、私はそれぞれのパックをチェックするのにあまり時間を費やしたくない。 ZS: アイデアは素晴らしいのですが、ビット単位の値ではなく、16進数の値です。 Alexandr Andreev 2020.09.23 16:51 #906 Igor Makanu:はい、すべてクリアです。しかし、チェックを自動化するにはどうしたらいいのでしょうか?問題は、私の例ではなく、まだ他のデータの3つのintをパックする必要があるという事実で、私はそれぞれのパックをチェックするために多くの時間を費やすことはしたくありませんHH: いい考えですが、ビット単位の値ではなく、16進数です。printf() というか、stringformat() から取得できます。 )) 何が必要なのかがわからない v = (V)(data & 0x3); d = (D)((data >> 2) & 0x7); t = (T)((data >> 5) & 0x7); uint tmp = ((data >> 8) & 0xFFF); param2 = (tmp & 0x800) == 0x800 ? -(int)(tmp & 0x7FF) : (int)(tmp & 0x7FF); tmp = data >> 20; param1 = (tmp & 0x800) == 0x800 ? -(int)(tmp & 0x7FF) : (int)(tmp & 0x7FF); オフセットを自動化するのか、何なのか? このチェックは何ですか? そして、いつでもソースと変換後の値を確認すればいいのです。 Dmitry Fedoseev 2020.09.23 16:56 #907 Igor Makanu:気にしない...評価するためのコードが必要であり、変換方法よりも検証の方法論が重要である 変換方法が明確で理解しやすいものであれば、あまりチェックする必要はないでしょう。 Vladimir Simakov 2020.09.23 17:01 #908 ... static int sign; static int _sign; static int mean; public: ... int Get() const; static void Print(int val); private: int GetInt12(int val) const {return ((val&sign)>>20)|(val&mean);} static int GetInt(int val) {return (val&_sign)<<20|(val&mean);} }; ... //------------------------------------------------------------------------ int CSetting::Get() const{ return t<<29|d<<26|v<<24|GetInt12(param1)<<12|GetInt12(param2); } //------------------------------------------------------------------------ void CSetting::Print(int val){ PrintFormat("%s, %s, %s, %i, %i",EnumToString(T(val>>29)),EnumToString(D(val>>26)),EnumToString(V(val>>24)),GetInt(val>>12),GetInt(val)); } int CSetting::sign=1<<31; int CSetting::_sign=1<<11; int CSetting::mean=0xFFFFFFFF>>21; void OnStart(void) { CSetting test(Input_p1,Input_p2,Input_T,Input_D,Input_V); int res=test.Get(); Print ("int=",res); CSetting::Print(res); } Alexandr Andreev 2020.09.23 17:06 #909 Vladimir Simakov: まあ、変数が増えるのは明らかなので、私としては構造体のバイトコピーで済ませた方がいいと思います(おそらく、この処理では速度の最適化は必要ないでしょうが、利便性は高くなるでしょう)。 Dmitry Fedoseev 2020.09.23 17:11 #910 void OnStart() { int a=9; int b=8; int c=7; int d=12345; int v=pack(a,b,c,d); int a2,b2,c2,d2; unpack(v,a2,b2,c2,d2); Alert(a2," ",b2," ",c2," ",d2); } void unpack(int val,int & a,int & b,int & c,int & d){ d=val/1000; val%=1000; c=val/100; val%=100; b=val/10; a=val%10; } int pack(int a,int b,int c,int d){ return(a+b*10+c*100+d*1000); } 安い、安い 1...84858687888990919293949596 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
なぜ、いきなりうまくいかないのでしょうか?3つの列挙、いずれも10以上ではない 中学2年生の算数。
3つの列挙と2つのintで、4バイト=intが必要です。
int +1000 - -1000 の範囲で必要です。+1000 , pips, それはちょうど2^10です。
int intは検討する価値がある、1pipsのステップは重要ではない、2.5-...9pipsも可能、すなわち離散性はあまり重要ではない
3つの列挙と2つのint、4バイトが必要
int +1000 - -1000 の範囲で必要です。+1000 , pips, それはちょうど2^10です。
intはまだ検討する価値がある、1pip単位は重要ではない、2.5-...9pipを持つことができる、すなわち離散性はそれほど重要でない
十分すぎるほどのスペースがあります。int_max=2147483647 です。
ストレートにぶっきらぼうにするのではなく、テンスにして、8*8*4で惜しみなく作ればいいんです。考えるのは自分だけでいい)))でも、その必要はなく、とにかくすべてがフィットする。
そして、チェックするために、INT_MAXまでのサイクルを開始するのはいかがでしょうか。
十分すぎるほどの広さ。int_max=2147483647 です。
また、ピンチのときに行うために、占有して、経済的に、 - 8 * 8 * 4を愚かにも、ストレートすることはできません。考えるのは自分だけでいい)))でも、その必要はなく、とにかくすべてがフィットする。
そして、チェックするために、INT_MAXまでのサイクルを作るのはどうでしょうか。これはハードウェアによってチェックされるので、自分で結果ファイルを見る必要はありません。
気にしない...評価するためのコードが必要であり、変換方法よりも方法論が重要である
気にしない...評価するためのコードが必要であり、テスト方法は変換方法よりも重要である
ビット単位のプライム化、ダメですか?ビット値で数値を文字列に変換するようなものです。一つは整数用、もう一つはドットとチェック用です。それはあくまでもデバッグのためです。
ビットワイズ・アンライト、ダメ?ビット値で数値を列挙するようなもの。一つは整数用、もう一つはドットとチェック用です。それはあくまでもデバッグのためです。
うん、それはわかるけど、どうやって検証を自動化するんだ?
問題は、私の例ではなく、まだ他のデータの3つのintをパックする必要があるという事実で、私はそれぞれのパックをチェックするのにあまり時間を費やしたくない。
ZS: アイデアは素晴らしいのですが、ビット単位の値ではなく、16進数の値です。
はい、すべてクリアです。しかし、チェックを自動化するにはどうしたらいいのでしょうか?
問題は、私の例ではなく、まだ他のデータの3つのintをパックする必要があるという事実で、私はそれぞれのパックをチェックするために多くの時間を費やすことはしたくありません
HH: いい考えですが、ビット単位の値ではなく、16進数です。printf() というか、stringformat() から取得できます。
)) 何が必要なのかがわからない
オフセットを自動化するのか、何なのか?
このチェックは何ですか?
そして、いつでもソースと変換後の値を確認すればいいのです。
気にしない...評価するためのコードが必要であり、変換方法よりも検証の方法論が重要である
変換方法が明確で理解しやすいものであれば、あまりチェックする必要はないでしょう。
まあ、変数が増えるのは明らかなので、私としては構造体のバイトコピーで済ませた方がいいと思います(おそらく、この処理では速度の最適化は必要ないでしょうが、利便性は高くなるでしょう)。
安い、安い