mql5言語の特徴、微妙なニュアンスとテクニック - ページ 83 1...767778798081828384858687888990...247 新しいコメント Aleksey Vyazmikin 2018.04.13 09:05 #821 fxsaber私の答えをもう一度読んでください。短いソースコードを開き、それを理解し...プロフィット!もちろん、ソースコードも開きましたよ。MT5で全部必要とは言っていないのですが、何かいい案はないでしょうか。 関数GetBarSize()のどの行がこの問題(隠れたアイデア)を解決しているか教えてください。 #property show_inputs extern int Width = 1280; extern int Height = 800; #import "user32.dll" int GetClientRect( int hWnd, int lpRect[] ); #import #define BORDER_SIZE 44 int GetBarSize() { int Rect[4], PrevBars, PrevRect, Res = 1; int hwnd = WindowHandle(Symbol(), Period()); GetClientRect(hwnd, Rect); PrevRect = Rect[2] - BORDER_SIZE; PrevBars = WindowBarsPerChart(); PrevBars += PrevBars; while(PrevBars <= PrevRect) { Res += Res; PrevBars += PrevBars; } return(Res); } string StrNumToLen( string Num, int Len ) { Len -= StringLen(Num); while (Len > 0) { Num = "0" + Num; Len--; } return(Num); } void start() { int Pos = WindowFirstVisibleBar(), Step, i = 1; string Directory = Width + "x" + Height + "_" + Symbol() + Period() + " (" + TimeToStr(Time[Pos], TIME_DATE) + "-" + TimeToStr(Time[0], TIME_DATE) + ")/"; Pos += 2; Step = 1 + (Width - BORDER_SIZE) / GetBarSize(); while (Pos >= 0) { WindowScreenShot(Directory + StrNumToLen(i, 5) + ".gif", Width, Height, Pos); i++; Pos -= Step; } return; } fxsaber 2018.04.13 09:14 #822 アレクセイ・ヴャジミキンもちろん、ソースコードも開きましたよ。MT5で全部必要とは明記していないものの、アイデア募集中です・・・。 関数GetBarSize()のどの行がこの問題(隠れたアイデア)を解決しているか教えてください。 int GetBarSize( const ulong Chart = 0 ) { return(1 << (int)ChartGetInteger(Chart, CHART_SCALE)); } Aleksey Vyazmikin 2018.04.13 09:33 #823 fxsaberバカみたい、「<<」ってなんだ?それと、グラフのスケールと どう関係があるのでしょうか? Ihor Herasko 2018.04.13 09:43 #824 アレクセイ・ヴャジミキンバカみたいだ。"<<"ってどういう意味? ビット単位で左にシフト します。1(2進数表現で0000 0001)は、ChartGetIntegerが返す値の数だけ左にシフトされます。基本的には2のべき乗です。 その結果が1バーあたりの画素数となります。 Aleksey Vyazmikin 2018.04.13 09:47 #825 イホル・ヘラスコ ビット単位で左にシフト します。1(2進数表現で 0000 0001)は ChartGetInteger が返す値の数だけ左にシフトされます。基本的には2のべき乗です。 その結果が1バーあたりの画素数となります。分かりやすい説明ありがとうございます!実行してみます。 fxsaberありがとうございました。 fxsaber 2018.04.13 12:11 #826 Roshさん、探していただきありがとうございました。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム バグ、バグ、質問 イリヤス さん 2016.08.24 11:08 配列("inside")には、その配列が 何個の要素に割り当てられて いるかが格納される。 アロケートされたものを扱うロジック(条件分岐コード)です。ArrayResize(arr,int size,int reserve) { if(arr.allocated<size) if(!ArrayAllocateMemory(arr,size+reserve)) // -> arr.allocated=size+reserve; return(-1); //--- CallConstructorsOrDestructors(arr,size); //--- arr.size=size; return(size); } 全く使えないのが残念(配列ラッパーは選択肢にない)。まだ機能を追加できるかも? int ArrayAllocated( const void& array[] );文字列の場合はStringBufferLenがありますね、やはり。 Artyom Trishkin 2018.04.14 17:14 #827 このトピックに関係のないコメントは、「バグ、不具合、問題」に移動しました。 Artyom Trishkin 2018.04.14 17:18 #828 このトピックに関係のないコメントは、「バグ、不具合、問題」に移動しました。 fxsaber 2018.04.16 11:23 #829 string Str = "123.456"; double Num1 = StringToDouble(Str); double Num2 = (double)Str; // Быстрее この方法ではるかに高速化(デバッグではなく、リリース) double StringToDouble2( const string Str, const uint StartPos = 0 ) { const uint Size = StringLen(Str); bool Sign = false; uint i = StartPos; while (i < Size) { const int Digit = Str[i]; if ((Digit != ' ') && (Digit != '\t') && (Digit != '\n') && (Digit != '\r')) { if ((Sign = (Digit == '-')) || (Digit == '+')) i++; break; } i++; } long Res = 0; int point = 0; while (i < Size) { const int Digit = Str[i]; if (!point && (Digit == '.')) point = 1; else if (((Digit >= '0') && (Digit <= '9'))) { Res = Res * 10 + Digit - '0'; if (point) point *= 10; } else break; i++; } if (Sign) Res = -Res; return((point > 1) ? Res / (double)point : Res); // Возможна потеря точности при делении } 大量のデータを解析する場合、大幅なスピードアップが得られる。 Alain Verleyen 2018.04.16 11:38 #830 fxsaber この方法ではるかに高速化(デバッグではなく、リリース) 大量のデータを解析する場合、大幅なスピードアップが 得られる。それを実証するベンチマークコードを提供してもらえますか? 1...767778798081828384858687888990...247 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
私の答えをもう一度読んでください。短いソースコードを開き、それを理解し...プロフィット!
もちろん、ソースコードも開きましたよ。MT5で全部必要とは言っていないのですが、何かいい案はないでしょうか。
関数GetBarSize()のどの行がこの問題(隠れたアイデア)を解決しているか教えてください。
もちろん、ソースコードも開きましたよ。MT5で全部必要とは明記していないものの、アイデア募集中です・・・。
関数GetBarSize()のどの行がこの問題(隠れたアイデア)を解決しているか教えてください。
バカみたい、「<<」ってなんだ?それと、グラフのスケールと どう関係があるのでしょうか?
バカみたいだ。"<<"ってどういう意味?
ビット単位で左にシフト します。1(2進数表現で0000 0001)は、ChartGetIntegerが返す値の数だけ左にシフトされます。基本的には2のべき乗です。
その結果が1バーあたりの画素数となります。
ビット単位で左にシフト します。1(2進数表現で 0000 0001)は ChartGetInteger が返す値の数だけ左にシフトされます。基本的には2のべき乗です。
その結果が1バーあたりの画素数となります。
分かりやすい説明ありがとうございます!実行してみます。
ありがとうございました。
Roshさん、探していただきありがとうございました。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
バグ、バグ、質問
イリヤス さん 2016.08.24 11:08
配列("inside")には、その配列が 何個の要素に割り当てられて いるかが格納される。アロケートされたものを扱うロジック(条件分岐コード)です。
全く使えないのが残念(配列ラッパーは選択肢にない)。まだ機能を追加できるかも?
文字列の場合はStringBufferLenがありますね、やはり。
この方法ではるかに高速化(デバッグではなく、リリース)
大量のデータを解析する場合、大幅なスピードアップが得られる。
この方法ではるかに高速化(デバッグではなく、リリース)
大量のデータを解析する場合、大幅なスピードアップが 得られる。
それを実証するベンチマークコードを提供してもらえますか?