MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1138 1...113111321133113411351136113711381139114011411142114311441145...1953 新しいコメント Maksym Mudrakov 2020.04.24 19:21 #11371 Igor Makanu: SBは長いこと使っていないので半分も覚えていませんが、OBJ_EDITオブジェクトのChartRedraw()を毎回やってソフト選択と選択解除をしてみてください、SBからオブジェクトの名前を取得できます、きっとNameメソッドがあるのでしょう たられば HH: と Sleep() は ChartRedraw() に必要だと思われますが、Sleep() は指標では機能しません。 オブジェクトプロパティOBJPROP_SELECTEDを TRUEにするという意味であれば、この限りではありません。なぜなら、この場合、オブジェクトはチャート上でハイライトされますが、入力ボックスはアクティブにならないからです。 Igor Makanu 2020.04.24 19:33 #11372 Maksym Mudrakov:オブジェクトプロパティOBJPROP_SELECTEDを TRUEにするということであれば、それは違いますね。なぜなら、この場合、オブジェクトはチャート上でハイライトされますが、入力ボックスはアクティブにならないからです。 すべてのパネルでチェックを入れると、OBJ_EDITオブジェクトのハイライトが効かなくなる 分からないので、フォーラムを検索してください。 タブ タブ "入力フォーカス" ascerdfg 2020.04.24 19:41 #11373 ターミナルを閉じずに、MQL5/logs/*.logファイルを更新する方法はありますか?その新鮮なコンテンツを見るために。 Igor Makanu 2020.04.24 21:41 #11374 ascerdfg: ターミナルを閉じずに、MQL5/logs/*.logファイルを更新する方法はありますか?その新鮮なコンテンツを見るために。 コンテキストメニューの 端末で右クリック - 開く , これは、ログファイルにアクセスすることができます。 都合が悪い ascerdfg 2020.04.25 04:40 #11375 Igor Makanu: コンテキストメニューの端末で右クリック - 開く , これは、ログファイルにアクセスすることができます。 都合が悪い どこをクリックすればよいのですか? Artyom Trishkin 2020.04.25 04:42 #11376 ascerdfg: どこをクリックすればよいのですか? Rzewskiは黙らせる必要があった...。 Maksym Mudrakov 2020.04.25 10:34 #11377 Maksym Mudrakov: グラフはOBJ_EDIT 型の2つのオブジェクトを持っています。 この2つの入力フィールドの間をTabキーを押すことで遷移させることが目的です。 キーボードイベントを読み取ることではなく、入力フィールドをプログラム的にアクティブにする方法が主な問題です。 user32.dllを使用する必要があるのは理解できるのですが、苦手なため、よろしくお願いします。 ありがとうございます。 解が見つかります。 #property strict struct RECT { int Left; // x position of upper-left corner int Top; // y position of upper-left corner int Right; // x position of lower-right corner int Bottom; // y position of lower-right corner }; struct POINT { int posX; // x position int posY; // y position }; #import "user32.dll" void mouse_event(int dwFlags,int dx,int dy,int dwData,int dwExtraInfo); bool GetWindowRect(int hWnd,RECT &lpRect); int GetSystemMetrics(int nIndex); bool GetCursorPos(POINT &lpPoint); bool SetCursorPos(int x,int y); #import string edits[], pref; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { pref="EA_EDIT_SELECT_"; int size=6; ArrayResize(edits,size); int width=100, heigh=25; int x=width, y=heigh; for(int i=0; i<size; i++) { string num=(string)(i/2+1); string text="Name "; edits[i]=pref+(string)i; if(i%2==0) { text="First "+text+num; x=width; y+=heigh+5; } else { text="Last "+text+num; x=2*width+5; } EditCreate(edits[i],x,y,width,heigh,text); } EventEditSelect(edits); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectsDeleteAll(0,pref,-1,-1); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id == CHARTEVENT_KEYDOWN) EventEditSelect(edits); else if(id == CHARTEVENT_OBJECT_ENDEDIT) { bool stateTab=TerminalInfoInteger(TERMINAL_KEYSTATE_TAB)<0; if(stateTab) EventEditSelect(edits); } } //--------------------------------------------------------------------+ // Create Edit | //--------------------------------------------------------------------+ void EditCreate(string name="Edit", // object name int x=0, // X coordinate int y=0, // Y coordinate int width=50, // width int height=18, // height string text="Text") // text { ObjectCreate(0,name,OBJ_EDIT,0,0,0) ; ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y); ObjectSetInteger(0,name,OBJPROP_XSIZE,width); ObjectSetInteger(0,name,OBJPROP_YSIZE,height); ObjectSetString(0,name,OBJPROP_TEXT,text); ObjectSetString(0,name,OBJPROP_FONT,"Arial"); ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12); ObjectSetInteger(0,name,OBJPROP_ALIGN,ALIGN_CENTER); ObjectSetInteger(0,name,OBJPROP_READONLY,false); ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER); ObjectSetInteger(0,name,OBJPROP_COLOR,clrBlack); ObjectSetInteger(0,name,OBJPROP_BGCOLOR,clrWhite); ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,clrGray); ObjectSetInteger(0,name,OBJPROP_BACK,false); ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false); ObjectSetInteger(0,name,OBJPROP_SELECTED,false); } //--------------------------------------------------------------------+ // MOVE BETWEEN OBJ_EDIT BY TAB KEY | //--------------------------------------------------------------------+ void EventEditSelect(string &editNames[]) { bool back=TerminalInfoInteger(TERMINAL_KEYSTATE_SHIFT)<0; int size=ArraySize(editNames); if(size==0) return; static int index=0; if(!back) { if(index==size-1) index=0; else index++; } else { if(index==0) index=size-1; else index--; } string name=editNames[index]; int x=(int)ObjectGetInteger(0,name,OBJPROP_XDISTANCE); int y=(int)ObjectGetInteger(0,name,OBJPROP_YDISTANCE); int width=(int)ObjectGetInteger(0,name,OBJPROP_XSIZE); int height=(int)ObjectGetInteger(0,name,OBJPROP_YSIZE); MouseClick(int ((2*x+width)/2),int((2*y+height)/2)); } void MouseClick(const int x, const int y) { Sleep(50); POINT currentPoint; GetCursorPos(currentPoint); POINT clickPoint=ConvertXY(x,y); mouse_event(0x8007,clickPoint.posX,clickPoint.posY,0,0); SetCursorPos(currentPoint.posX,currentPoint.posY); Sleep(50); } POINT ConvertXY(const int x,const int y) { POINT AbsolutePoint; RECT WndRect; int BorderX=5,BorderY=5; int screenX=GetSystemMetrics(0); int screenY=GetSystemMetrics(1); GetWindowRect(WindowHandle(_Symbol,_Period),WndRect); AbsolutePoint.posX=int ((x+WndRect.Left+BorderX)*65535/screenX); AbsolutePoint.posY=int ((y+WndRect.Top +BorderY)*65535/screenY); return(AbsolutePoint); } Roman Sharanov 2020.04.25 15:54 #11378 MQL5では、ObjectCreateは何も描画せず、オブジェクトはオブジェクトリストにさえ表示されません。作成はOnInitで行われますが、もしかしたらそれが問題なのでしょうか? 同時に、ロボットをチャートから削除すると、作成されたオブジェクトが 表示されます Alexey Viktorov 2020.04.25 16:04 #11379 Roman Sharanov: MQL5では、ObjectCreateは何も描画せず、オブジェクトはオブジェクトリストにさえ表示されません。作成はOnInitで行われますが、もしかしたらそれが問題なのでしょうか? しかし、ロボットをチャートから外すと、作成されたオブジェクトが 表示されます オブジェクトの座標の価格と時間がゼロに等しい可能性があります。Ctrl+Bを押し、表示されたダイアログボックスで「すべて」ボタンを押し、既存のオブジェクトのリストを見てください。ある場合は、プロパティを開いて座標を確認します。 ascerdfg 2020.04.25 16:05 #11380 Artyom Trishkin: Rzewskiは黙らせる必要があった...。 どのタイミングで右クリックをするのですか? 1...113111321133113411351136113711381139114011411142114311441145...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
SBは長いこと使っていないので半分も覚えていませんが、OBJ_EDITオブジェクトのChartRedraw()を毎回やってソフト選択と選択解除をしてみてください、SBからオブジェクトの名前を取得できます、きっとNameメソッドがあるのでしょう
たられば
HH: と Sleep() は ChartRedraw() に必要だと思われますが、Sleep() は指標では機能しません。
オブジェクトプロパティOBJPROP_SELECTEDを TRUEにするということであれば、それは違いますね。なぜなら、この場合、オブジェクトはチャート上でハイライトされますが、入力ボックスはアクティブにならないからです。
すべてのパネルでチェックを入れると、OBJ_EDITオブジェクトのハイライトが効かなくなる
分からないので、フォーラムを検索してください。
タブ
タブ
"入力フォーカス"
ターミナルを閉じずに、MQL5/logs/*.logファイルを更新する方法はありますか?その新鮮なコンテンツを見るために。
コンテキストメニューの 端末で右クリック - 開く , これは、ログファイルにアクセスすることができます。
都合が悪い
コンテキストメニューの端末で右クリック - 開く , これは、ログファイルにアクセスすることができます。
都合が悪い
どこをクリックすればよいのですか?
Rzewskiは黙らせる必要があった...。
グラフはOBJ_EDIT 型の2つのオブジェクトを持っています。
この2つの入力フィールドの間をTabキーを押すことで遷移させることが目的です。
キーボードイベントを読み取ることではなく、入力フィールドをプログラム的にアクティブにする方法が主な問題です。
user32.dllを使用する必要があるのは理解できるのですが、苦手なため、よろしくお願いします。
ありがとうございます。
解が見つかります。
同時に、ロボットをチャートから削除すると、作成されたオブジェクトが 表示されます
MQL5では、ObjectCreateは何も描画せず、オブジェクトはオブジェクトリストにさえ表示されません。作成はOnInitで行われますが、もしかしたらそれが問題なのでしょうか?
しかし、ロボットをチャートから外すと、作成されたオブジェクトが 表示されます
オブジェクトの座標の価格と時間がゼロに等しい可能性があります。Ctrl+Bを押し、表示されたダイアログボックスで「すべて」ボタンを押し、既存のオブジェクトのリストを見てください。ある場合は、プロパティを開いて座標を確認します。
Rzewskiは黙らせる必要があった...。