ボタン付きのダッシュボードのような複雑なプログラミング?自動取引は必要ありません。監視とアラートのためだけ。私は午後@です。
こんにちは、私はここで質問することができますか?それは長い間私を混乱させてしまった。ありがとうございました!ビジュアルモードでバックテストを実行すると、自動的に進行するのではなく、F12キーを押して手動でバーを1つずつ表示することができます。私がしたいのは、例えばSキー(キーコードは0x53)のような一つのキーを押すと、F12がMT4に5回送られるということです。コードは以下の通りです。その結果、バックテストでSキーを押すとF12が入力されたようにバーが表示されますが、たびに3つのバーが1つまたは2つだけ出てきます。私はなぜそれが5つのバーを表示しないのだろう...あなたは良い解決策はありますか?前もって感謝します! #import user32.dll void keybd_event(int bVk、int bScan、int dwFlags、int dwExtraInfo);キーを入力します。 #import #define KEYEVENTF_KEYUP 0x0002/キーが離された(押されていない)void OnChartEvent(const int id、//イベント識別子const long lparam、//long型のイベントパラメータconst double dparam、//doubleのイベントパラメータタイプconst string sparam)//文字列型のイベントパラメータ{if(id == CHARTEVENT_KEYDOWN){switch(int(lparam)){case 0x53://'S' keybd_event(0x7B、0、0、0);/F12 1番目のkeybd_event(0x7B、0、KEYEVENTF_KEYUP、0); keybd_event(0x7B、0、0、0);/F12第2のkeybd_event(0x7B、0、KEYEVENTF_KEYUP、0); keybd_event(0x7B、0、0、0);/F12第3のkeybd_event(0x7B、0、KEYEVENTF_KEYUP、0); keybd_event(0x7B、0、0、0);/F12 4番目のkeybd_event(0x7B、0、KEYEVENTF_KEYUP、0); keybd_event(0x7B、0、0、0);/F12 5番目のkeybd_event(0x7B、0、KEYEVENTF_KEYUP、0);ブレーク;デフォルト:break; }}}
F12はMT4で何をしますか? F12ボタンにXYZ()関数を割り当てたと仮定します。したがって、Sを押すと、XYZ()メソッドを5xOriginally Posted by ;
挿入されたコード#import user32.dll void keybd_event(int bVk、int bScan、int dwFlags、int dwExtraInfo); int SendInput(int nInputs、int pInputs、int cbSize)。 string GetLastError(); #import #define KEYEVENTF_KEYUP 0x0002/キーが離された(押されていない)void OnChartEvent(const int id、//イベント識別子const long lparam、//long型のイベントパラメータconst double dparam、//doubleのイベントパラメータタイプconst string sparam)//文字列型のイベントパラメータ{if(id == CHARTEVENT_KEYDOWN){switch(int(lparam)){case 0x53://'S' keybd_event(0x41、0、0、0); keybd_event(0x41,0、KEYEVENTF_KEYUP、0); keybd_event(0x41、0、0、0); keybd_event(0x41,0、KEYEVENTF_KEYUP、0); keybd_event(0x41、0、0、0); keybd_event(0x41,0、KEYEVENTF_KEYUP、0); keybd_event(0x41、0、0、0); keybd_event(0x41,0、KEYEVENTF_KEYUP、0); keybd_event(0x41、0、0、0); keybd_event(0x41,0、KEYEVENTF_KEYUP、0);ブレーク;ケース0x08://バックスペースアラート(削除)。ブレーク;ケース0x41://'a' Print(A);ブレーク; }}}上記のコードを使用してSをクリックすると、AをクリックしてAを5回印刷しますOriginally Posted by ;
添付ファイル1あなたの素早い返信をありがとう! gt; F4はMT4で何をするのですか?手動でバックテストを行う場合、F12は一度に1つの燭台でチャートを前方に移動します。以下のURLはこれを説明しています。
https://www.fxdayjob.com/manual-backtesting-in-mt4gt;上のコードでSをクリックすると、AをクリックしてAを5回印刷します。ただし、これはF12には適用されません。私が昨日書いたように、Sキーを押すと、1つか2つのバーが表示されます。これはMT4バックテストのバグでしょうか?
問題はおそらく、MT4はBackTestで実行中のOnChartEvent()を許可していない可能性があります。つまり、マウスのクリックやキーボードのOnChartEvent()をクリックすると周辺機器からの入力が許可されません。Originally Posted by ;
私はあなたのコードを試して、バックテストで見つかったAは5回印刷されました。だから、私はBacktestのウィンドウがF12 5xを受け取ると思う何らかの理由で対処することはできません。回避策がある場合は、他の人に尋ねるスレッドを新たに用意します。あなたの時間とアドバイスをいただきありがとうございます!