mql4言語の特徴、微妙なニュアンスとテクニック - ページ 16

 
友達になってほしい)
 
Fast528:
友達になってほしい)

"タイタンの戦い "は実現しない。

 
枝が枯れていないことを祈ります。私は4Kモニターを使用しているため、Windowsではフォントが拡大されます(200%サイズ)。インジケーターのテキストオブジェクトを 作る際、文字のサイズをWindowsの設定から取得して拡大縮小しているため、通常のシステムで普通に見えるものを私のパソコンでやると文字同士が重なってしまい、私用に通常の設定でやると文字が小さくなりすぎてしまうのです。インジケータにスケーリングするかしないか選択できる設定を作りましたが、あまり好きではありません。

現在ウィンドウズに表示されているフォント(拡大されているかどうか)をプログラムから直接知ることができ、ユーザーに触れることなく、コード内でこの修正を行う方法はないでしょうか?ただ、4Kモニターで文字を拡大縮小している人もいるでしょうし、市場からの指標(文字が使われているもの)のほとんどは醜く見栄えが悪いです。
 
Olga Miakhovich:
スレッドが死んでいないことを祈ります。私は4Kモニターを使用しているため、Windowsではフォントが拡大されています(サイズ200%)。インジケータ用のテキストオブジェクトを 作るとき、文字のサイズはWindowsの設定から取得し、さらに拡大縮小しているため、通常のシステムでは普通に見えるものを作っても、私のパソコンでは文字同士が重なってしまい、私にとっては普通に作ると、通常の設定では文字が小さくなってしまうのです。インジケータにスケーリングするかしないか選択できる設定を作りましたが、あまり好きではありません。

現在ウィンドウズに表示されているフォント(拡大されているかどうか)をプログラムから直接知ることができ、ユーザーに触れることなく、コード内でこの修正を行う方法はないでしょうか?4Kモニターで文字を拡大縮小している人もいるでしょうし、市場からの指標(文字が使われているもの)はほとんど醜く見えます。

リソースやCCanvasを使った作業に切り替えた方がいいのでは?

そして、そこでOSの設定に従ってフォントサイズを設定することができます。

TextOut()、TextSetFont()についてお読みください。

Документация по MQL5: Графические объекты / TextSetFont
Документация по MQL5: Графические объекты / TextSetFont
  • www.mql5.com
Устанавливает шрифт для вывода текста методами рисования и возвращает результат успешности этой операции. По умолчанию используется шрифт Arial и размер -120 (12 pt). [in]  Размер шрифта, который может задаваться положительными и отрицательными значениями. При положительных значениях размер выводимого текста не зависит от настроек размеров...
 
以上、解決編でした。TerminalInfoInteger(TERMINAL_SCREEN_DPI)関数を使用し、標準のスケーリングでは96になります。2倍であれば、それに応じて2倍に拡大されます。
 
Olga Miakhovich:
これで解決です。TerminalInfoInteger(TERMINAL_SCREEN_DPI)関数を使用し、標準のスケーリングでは96になります。2倍であれば、それに応じて2倍に拡大されます。

解決方法はヘルプに記載されています

スケーリングファクターの計算

//--- 幅1のボタンを作成します。5" を画面に 表示
int screen_dpi =TerminalInfoInteger(TERMINAL_SCREEN_DPI);//--- ユーザーモニタの DPI を取得
int base_width =144;//DPI=96 の標準的なモニタの場合,画面ポイントでの基本幅
int width = (button_width *)screen_dpi) / 96;//ユーザーモニタのボタン幅を計算(DPI付き)
...

//--- パーセント単位でスケールファクターを計算
int scale_factor=(TerminalInfoInteger(TERMINAL_SCREEN_DPI))*
//--- スケールファクターを使用
width=(base_width * scale_factor) / 100;

 
Vladimir Pastushak:

解決方法はヘルプに記載されています

ええ、でも、フォント用ではありません。

オルガ・ミアホビッチ
これで解決です。

スケーリングはモニタのdpiに影響するのですか?

 
多次元配列 に対するArrayResizeの機能
void OnStart()
{
  int Array[][2];
  
  Print(ArrayResize(Array, 7)); // MQL5 - 7, MQL4 - 14
  Print(ArraySize(Array));      // 14
}
 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

mql5言語の特殊性、ヒントとコツ

fxsaber, 2019.02.19 22:28

ポジションが同じ価格でオープンし、クローズしているのがわかります。しかし、正規化せずに比較すると、その価格は同等ではありません

 
まあ、そうなんですけどね。