初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 217 1...210211212213214215216217218219220221222223224...260 新しいコメント Maxim Kuznetsov 2020.10.14 09:40 #2161 alex_xss:うーん、そうかもしれませんね。まだ持っていないのはあなたが初めてです))しかし、それは問題ではない、誰にでもポップアップすることができます - ので、あなたは、残念ながら、それを修正する必要があります。MT4のバージョンにもよりますが(私はAlpariのものを持っています)、たくさん持っています。 私は異なるバージョンのものをたくさん持っていて、それらのためにプログラミングをしています :-) しかし、ソフトウェアはまだ同じで、それらは小さなブランドとインジケータ/アドバイザの小さなチップだけが異なっています。 PS/カラートリックは、モニターのDPI設定の誤り、「色温度補正ユーティリティ」の存在、「ビデオカードゲーム拡張機能」などが原因で発生する場合があります。などなど。 PPS/ところで、どのDCも独自の指標/アドバイザー/スクリプト/ツールパッケージを克服していない(欲深さ、お金のためと思われる)。せいぜいコーポレートカラーの安っぽいダッシュボードくらいです。を示唆するようなものです。 Nauris Zukas 2020.10.16 12:24 #2162 こんにちは!OBJPROP_XSIZEが 0になる理由を教えてください。 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnInit() { ObjectsDeleteAll(); } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- string mnth=(string)TimeMonth(TimeCurrent())+"."; string dy=(string)TimeDay(TimeCurrent())+" "; string hr=(string)TimeHour(TimeCurrent())+":00 "; string TimeSig1=TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES); string Label1=" TEST "+Symbol()+" "+TimeSig1+" Test: "+mnth+dy+hr+" 1 2 3 4 5 6 7 8 9 10 11"; //string Label1="123456789"+"1"+"123456789"+"2"+"123456789"+"3"+"123456789"+"4"+"123456789"+" 5 "+"123456789"; obj_create("Sym",Label1,50,clrWhite,15); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void obj_create(string name,string object,int Y_distance,color Color,int size) { if(ObjectFind(name)==-1) { ObjectCreate(0,name,OBJ_LABEL,0,0,0); ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER); ObjectSetInteger(0,name,OBJPROP_FONTSIZE,size); ObjectSetString(0,name,OBJPROP_FONT,"Rockwell"); ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false); ObjectSetInteger(0,name,OBJPROP_SELECTED,false); ObjectSetInteger(0,name,OBJPROP_HIDDEN,true); ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_LEFT); ObjectSetInteger(0,name,OBJPROP_XDISTANCE,10); ObjectSetInteger(0,name,OBJPROP_YDISTANCE,Y_distance); ObjectSetInteger(0,name,OBJPROP_COLOR,Color); } ObjectSetString(0,name,OBJPROP_TEXT,object); //text size int text_sizeX=int(ObjectGetInteger(0,name,OBJPROP_XSIZE)); Print(" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ obj_create text_sizeX: ",text_sizeX); } //+------------------------------------------------------------------+ Maxim Kuznetsov 2020.10.16 14:40 #2163 Nauris Zukas:こんにちは!OBJPROP_XSIZEが 0になる理由を教えてください。 OBJ_LABELは 非常に特殊なオブジェクトで、配置後、最初のチャート更新前では、幅(X_SIZE)は定義されていません。 フォント、画面のdpiに依存します。レンダリングが完全に機能するまでは、実幅については何とも言えません。 Vitaly Muzichenko 2020.10.16 15:44 #2164 Maxim Kuznetsov:OBJ_LABELは 非常に特殊なオブジェクトで、配置後、最初のチャート更新前では、幅(X_SIZE)が不定になります。フォントや画面のdpiなど、一般的な条件によって異なります。レンダリングが完全に機能するまでは、実幅については何とも言えません。 再描画してみてから確認する ObjectSetString(0,name,OBJPROP_TEXT,object); ChartRedraw(); //text size int text_sizeX=int(ObjectGetInteger(0,name,OBJPROP_XSIZE)); Nauris Zukas 2020.10.16 16:11 #2165 Vitaly Muzichenko:再描画をしてみて、その後で確認するありがとうございます!挑戦してみます。 うまくいかなかった。 Nauris Zukas 2020.10.16 16:17 #2166 Maxim Kuznetsov:OBJ_LABELは 非常に特殊なオブジェクトで、配置後、最初のチャート更新前では、幅(X_SIZE)が不定になります。フォントや画面のdpiなど、一般的な条件によって異なります。レンダリング機能が完全に動作するまでは、実幅については何とも言えません。 ありがとうございます!発想は明快です!何か実験してみます。 Maxim Kuznetsov 2020.10.17 07:21 #2167 Nauris Zukas: ありがとうございます、イメージがわきました、実験してみます。 ChartRedrawは直接再描画 するのではなく、ターミナルの深さのどこかに「チャートはできるだけ早く再描画されるべき」という目印を置くだけです。 テキストマークの幅を知るには、TextSetFontやTextGetSizeを試すとよいでしょう。あるいは、そうでないかもしれません :-) 私は試していません。 または、次のtick/chart_eventで既に実際のOBJ_LABELの 幅を取得する、つまり、再描画の後に正確に取得する。 Nauris Zukas 2020.10.17 07:43 #2168 Maxim Kuznetsov:ChartRedrawは直接再描画 するのではなく、ターミナルの深さのどこかに「チャートはできるだけ早く再描画されるべき」という目印を置くだけです。テキストマークの幅を知るには、TextSetFontとTextGetSizeを試してみてください - 大きな違いはHiDPIでのみ現れます。あるいは、そうでないかもしれません :-) 私は試していません。あるいは、次のtick/chart_eventで既に実際のOBJ_LABELの 幅を取得する、つまり、再描画の後、正確に すでに動作するようになりました、ありがとうございますOnDeinit()を追加し、そこにディレイを置き、さらにOBJPROP_XSIZEを追加しました。 P.S.スクリプトの遅延について、他にいい方法が思いつかなかった。 for(int i=100000000; i>0; i--) {} Maxim Kuznetsov 2020.10.17 08:59 #2169 Nauris Zukas:ありがとうございます!すべてうまくいきました。OnDeinit()を追加し、そこにdelayを置き、OBJPROP_XSIZEを追加しました。 P.S.スクリプトの遅延について、他にいい方法が思いつかなかった。 // задержка 500 милисекунд, годная для тестера ulong timestamp=GetTickCount64(); do { Sleep(500/4); // в тестере не сработает, зато спасёт GetTickCount } while(GetTickCount64()-timestamp<500); Nauris Zukas 2020.10.17 09:21 #2170 Maxim Kuznetsov: // задержка 500 милисекунд, годная для тестера ulong timestamp=GetTickCount64(); do { Sleep(500/4); // в тестере не сработает, зато спасёт GetTickCount } while(GetTickCount64()-timestamp<500); ありがとうございます!うまくいきました。 do{} while(GetTickCount()-Time11<1000); 1...210211212213214215216217218219220221222223224...260 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
うーん、そうかもしれませんね。
まだ持っていないのはあなたが初めてです))
しかし、それは問題ではない、誰にでもポップアップすることができます - ので、あなたは、残念ながら、それを修正する必要があります。
MT4のバージョンにもよりますが(私はAlpariのものを持っています)、たくさん持っています。
私は異なるバージョンのものをたくさん持っていて、それらのためにプログラミングをしています :-) しかし、ソフトウェアはまだ同じで、それらは小さなブランドとインジケータ/アドバイザの小さなチップだけが異なっています。
PS/カラートリックは、モニターのDPI設定の誤り、「色温度補正ユーティリティ」の存在、「ビデオカードゲーム拡張機能」などが原因で発生する場合があります。などなど。
PPS/ところで、どのDCも独自の指標/アドバイザー/スクリプト/ツールパッケージを克服していない(欲深さ、お金のためと思われる)。せいぜいコーポレートカラーの安っぽいダッシュボードくらいです。を示唆するようなものです。
こんにちは!
OBJPROP_XSIZEが 0になる理由を教えてください。
こんにちは!
OBJPROP_XSIZEが 0になる理由を教えてください。
OBJ_LABELは 非常に特殊なオブジェクトで、配置後、最初のチャート更新前では、幅(X_SIZE)は定義されていません。
フォント、画面のdpiに依存します。レンダリングが完全に機能するまでは、実幅については何とも言えません。
OBJ_LABELは 非常に特殊なオブジェクトで、配置後、最初のチャート更新前では、幅(X_SIZE)が不定になります。
フォントや画面のdpiなど、一般的な条件によって異なります。レンダリングが完全に機能するまでは、実幅については何とも言えません。
再描画してみてから確認する
再描画をしてみて、その後で確認する
ありがとうございます!挑戦してみます。
うまくいかなかった。OBJ_LABELは 非常に特殊なオブジェクトで、配置後、最初のチャート更新前では、幅(X_SIZE)が不定になります。
フォントや画面のdpiなど、一般的な条件によって異なります。レンダリング機能が完全に動作するまでは、実幅については何とも言えません。
ありがとうございます!発想は明快です!何か実験してみます。
ありがとうございます、イメージがわきました、実験してみます。
ChartRedrawは直接再描画 するのではなく、ターミナルの深さのどこかに「チャートはできるだけ早く再描画されるべき」という目印を置くだけです。
テキストマークの幅を知るには、TextSetFontやTextGetSizeを試すとよいでしょう。あるいは、そうでないかもしれません :-) 私は試していません。
または、次のtick/chart_eventで既に実際のOBJ_LABELの 幅を取得する、つまり、再描画の後に正確に取得する。
ChartRedrawは直接再描画 するのではなく、ターミナルの深さのどこかに「チャートはできるだけ早く再描画されるべき」という目印を置くだけです。
テキストマークの幅を知るには、TextSetFontとTextGetSizeを試してみてください - 大きな違いはHiDPIでのみ現れます。あるいは、そうでないかもしれません :-) 私は試していません。
あるいは、次のtick/chart_eventで既に実際のOBJ_LABELの 幅を取得する、つまり、再描画の後、正確に
すでに動作するようになりました、ありがとうございますOnDeinit()を追加し、そこにディレイを置き、さらにOBJPROP_XSIZEを追加しました。
P.S.スクリプトの遅延について、他にいい方法が思いつかなかった。
for(int i=100000000; i>0; i--) {}
ありがとうございます!すべてうまくいきました。OnDeinit()を追加し、そこにdelayを置き、OBJPROP_XSIZEを追加しました。
P.S.スクリプトの遅延について、他にいい方法が思いつかなかった。
// задержка 500 милисекунд, годная для тестера
ulong timestamp=GetTickCount64();
do {
Sleep(500/4); // в тестере не сработает, зато спасёт GetTickCount
} while(GetTickCount64()-timestamp<500);
// задержка 500 милисекунд, годная для тестера
ulong timestamp=GetTickCount64();
do {
Sleep(500/4); // в тестере не сработает, зато спасёт GetTickCount
} while(GetTickCount64()-timestamp<500);
ありがとうございます!うまくいきました。