你好,
我搜索了高位和低位,尋找一種從按鈕打開現有圖表的方法。情景是我有一個主屏幕,上面顯示了我的所有貨幣對,並突出顯示了任何可能的和實際的交易。我希望能夠創建具有配對名稱的按鈕,當按下它時,它會直接進入該現有圖表。這將節省我滾動屏幕底部的列表。我不想要新圖表,因為現有圖表已經在運行並附加了 EA。除了一件我無法上班的物品外,我找不到任何東西。我曾考慮過運行一個 EA 的所有對,然後打開一個新圖表並附加一個模板,但這意味著我的 EA 的重寫。
請有任何想法。
你好,
我搜索了高位和低位,尋找一種從按鈕打開現有圖表的方法。情景是我有一個主屏幕,上面顯示了我的所有貨幣對,並突出顯示了任何可能的和實際的交易。我希望能夠創建具有配對名稱的按鈕,當按下它時,它會直接進入該現有圖表。這將節省我滾動屏幕底部的列表。我不想要新圖表,因為現有圖表已經在運行並附加了 EA。除了一件我無法上班的物品外,我找不到任何東西。我曾考慮過運行一個 EA 的所有對,然後打開一個新圖表並附加一個模板,但這意味著我的 EA 的重寫。
請有任何想法。
嗨,只是想發布一個正在進行的工作,有些位不正確但不影響工作原理。這會將屏幕更改為定義的對,下一步是對其進行參數化,以便按鈕提供對名稱。我已經完成了那一點,只是沒有鏈接。謝謝你的帖子。我將發布最終版本,因為其他人可能需要幫助。 Regards Steve #import user32.dll #define WM_MDIACTIVATE 0x222 #define WM_MDIMAXIMIZE 0x0225 #define WM_COMMAND 0x111 #define MT4_WMCMD_PERIOD_D1 33134 #define MT4_WMCMD_PERIOD_H1 33135 #define MT4_WMCMD_PERIOD_H4 33136 #define MT4_WMCMD_PERIOD_M1 33137 #define MT4_WMCMD_PERIOD_M5 33138 #define MT4_WMCMD_PERIOD_M15 33139 #define MT4_WMCMD_PERIOD_M30 33140 #define MT4_WMCMD_PERIOD_W1 33141 int GetParent(int hWnd); int SendMessageA(int hWnd, int Msg, int wParam, int lParam); int GetAncestor (int hwnd, int gaFlags); #import int ChangePair_Window() { int win_handle=WindowHandle(GBPUSD,PERIOD_D1);/if(win_handle!=0) { Alert(Window with GBPUSD,H1 detected. ,win_handle);} int p = GetParent(win_handle); SendMessageA(GetParent(p), WM_MDIMAXIMIZE, p, 0); SendMessageA(GetAncestor(win_handle,3), WM_COMMAND, MT4_WMCMD_PERIOD_D1,GBPUSD);返回(0); }
嗨謝謝你的代碼。這看起來像是從頭開始打開一個新圖表。我已經與其他 25 個運行相同 EA 的人一起打開了圖表。我需要 EA 持續運行以發出信號。這是一個不錯的選擇,但從谷歌搜索和論壇中看起來這可能是不可能的。我可能會重新構建 EA 以從一個屏幕運行所有對,並使用類似的東西來檢查。看起來很高興有很多工作。 Ctrl F6 只是滾動瀏覽。Originally Posted by ;
是的你是對的。讓我重述一下。按下按鈕時將焦點放在現有圖表上。我有 26 張圖表打開運行 EA。有些可能是可行的交易,所以我有一個控制面板,上面有所有貨幣對的名稱和指示是否值得一看。只想將名稱轉換為按鈕以直接進入該圖表。謝謝Originally Posted by ;
如果太囉嗦,那一定是您正在做的真正花哨的交易祝您好運與您的第一個世界問題Originally Posted by ;
謝謝您的回复。 Ctrl Tab 等在滾動每個圖表時過於冗長,我想從一個按鈕直接進入它。該代碼看起來很有希望,所以我會嘗試一下。不知道如何顯示屏幕截圖,我會嘗試明天..
抱歉 - 你是對的... CTRL Tab 與 CTRL F6 的作用相同(Tab 可能比 F6 更容易讓手指抓住Originally Posted by ;
)
請嘗試 Ctrl Tab 會發生什麼?Originally Posted by ;
創建該對名稱按鈕對象並單擊時,您在所有打開的圖表中搜索該符號並將其置於頂部,不是用該符號打開的圖表,您打開一個新的並在其上應用您的模板。類似... 插入代碼 void OpenChart(int ind) { long nextchart = ChartFirst(); do { string sym = ChartSymbol(nextchart); if (StringFind(sym,TradePairs#91;ind#93 gt;= 0) { ChartSetInteger(nextchart,CHART_BRING_TO_TOP,true);/ChartSetSymbolPeriod(nextchart,TradePairs#91;ind#93;,TradePairs_TradingTimeFrame#91;ind#93;/ChartApplyTemplate(nextchart,usertemplate);返回; } } while ((nextchart = ChartNext(nextchart)) != -1); long newchartid = ChartOpen(TradePairs#91;ind#93;,TradePairs_TradingTimeFrame#91;ind#93; ChartApplyTemplate(newchartid,usertemplate); }Originally Posted by ;
所以,不是按照標題,打開一個圖表,只去那個圖表嗎?我們在談論多少個圖表,10、20、30?如果您排列圖表,展開第一個圖表,那麼您可以使用 Ctrl Tab 相當快地從圖表推進到圖表。