創建多個SubWindow MT4
Results 1 to 4 of 4

Thread: 創建多個SubWindow MT4

  1. #1
    1附件嗨,

    只是一個問題:是否有人知道是否可以從一個indior內創建一些SubWindows。

    例如室內:應創建子窗口1和子窗口2,以及子窗口3。

    我用它們來繪製不同的對象:目前我用一個單獨的indior創建每個SubWindow,所以我可能也許有人知道從一個indior中創建它們的方法。

    如果有可能並且有人想出來讓我知道。謝謝MJ。


    以下圖片為例:目前我使用5個獨立的indior來創建圖片。

    https://www.forex-pedia.com/cryptocu...rogrammed.html

  2. #2
    mt4不是這樣設計的。所以不行。但是,如果你想要完成的是讓一個indior做一堆計算,然後將它們吐出到不同的區域,你可以多次加載相同的indior然後讓它檢測它是哪個子窗口,因此它是什麼片段數據僅用於顯示。也就是說,每個indior都能夠搜索其他子窗口的名稱。使用基本名稱和偏移索引號,您可以通過搜索基本名稱並迭代索引偏移號來唯一地自我命名一個indi子窗口,直到找到一個尚不存在的組合。在init部分執行此操作以初始提供唯一名稱。 base = name; i = 0; while(windowfind(base i)lt; 0)i ;為了適應在某些時候印象的副本將被刪除的可能性(即使偶然),你需要不斷重新包裝正在使用的名稱。如果你在每次開始運行時搜索一個唯一的未使用名稱,並且還確認索引偏移量小於你以前用來自稱為indior子窗口的名稱,那麼你將使用0到拷貝的名稱將其名稱包裝起來 - 每次迭代1次。如果你不確定你檢查找到的可用名稱 偏移量是否使用小於當前使用的偏移量的偏移量將會發現它將在使用中找到它自己的名稱,然後找到一個比自身更高的自由組合,將自己重命名為這個更高的數字,因此在使用的名稱中留下間隙。當進一步的副本執行相同的過程時,它們會在一定程度上填補這個空白,但是最後一個要運行的副本會發現自己命名自己比以前少了一個,所以現在差距是它之前使用的名稱(因為副本是最初被命名為錯誤的人會將自己命名為高於最高命名的偏移量,現在只能將其自己的名稱移動一個偏移量。現在,你使用windowfind注意當前indi窗口的子窗口號...然後你遍歷你正在運行的indi的整個副本列表並比較它們的windowfind結果....但是很多windowfinds返回一個值小於當前副本的是當前位於當前indi子窗口上方的副本數量。即你的圖表將類似於以下MAIN CHART - 窗口0一些indi - 窗口1另一個indi - 窗口2 name0 - 窗口3 name1 - window 4 name2 - window 5 name3 - window 6 super dooper indi - window 7 from a perspective of name2它最終會計算出有4個副本正在運行,它正好運行的窗口是窗口5.當它遍歷indi的列表時,它發現name0和name1在它們自身的子窗口中。 ..因此它是第三個窗口....因此它應該顯示您想要在每個子窗口中唯一顯示的第三類數據。類似地,name0將找不到上面的窗口,因此它知道它是第一個窗口。你有這種方式創建了一個以這樣的方式命名自己的indior:所有名稱都有一個順序的偏移索引,從中你可以發現當前副本在子窗口中的位置與運行的任何其他副本相比。現在使用switch語句,您可以根據此窗口上方運行的副本數量顯示所需的特定數據類型。你可能會問為什麼原因是必須計算當前副本上方窗口中有多少副本,而不僅僅是指索引偏移數,這應該是完全相同的東西......很棒的問題!你需要這樣做的原因是如果你刪除一個副本,然後加載一個新的副本,在發生勾號之前,並導致所有窗口重新包裝他們的名字,你將擁有一個位於所有其他副本下面的副本,但它會自動命名本身就是您剛剛刪除的副本的編號。例如MAIN CHART name0 name1 name2 name3在您刪除name0的刻度之間然後加載新副本的新副本將找到name0作為第一個可用的base offset索引組合,因此您將擁有以下內容... MAIN CHART name1 name2 name3因此,如果你只是簡單地引用偏移索引來決定indi應該顯示什麼,那麼你將得到數據,並以錯誤的順序顯示。因此,您必須讓每個indi遍歷所有已知的活動副本,然後找到它們與自身相比的位置。通過這種方式,name0仍然會發現name1到3位於其自身之上,因此一旦到達switch語句,它就會知道它應該顯示第四種數據而不是第一種數據。這與為什麼你必須不斷重新打包每個滴答名稱的原因相同。如果你不重新打包每個滴答的名稱,你碰巧刪除了一個窗口的副本,然後加載少於你刪除的副本數量,你將再次在使用的名稱中創建一個間隙(所以你將不知道實際運行了多少副本,因此在檢查子窗口位置時需要多少次迭代)。例如如果您刪除了2份副本,那麼只加載一份副本,新副本將找到第一個已刪除副本使用的免費名稱,但您仍然沒有使用第二個已刪除的副本名稱,這可能會在所使用的名稱序列中產生間隙。如果你刪除任何副本,不要重新打包,並且刪除的副本不是要加載的最後一個副本,那麼你又有一個空白。總而言之,您需要重新打包每個滴答的名稱,以確保任何已刪除的副本的名稱由不同的副本重複使用,並確保所有副本按順序命名(允許您遍歷所有找到的名稱)。

  3. #3

  4. #4
    好吧,我已經編輯了我的上一篇文章了很多次。我現在將停止編輯並不管它。

發布權限

  • 您不可發布新主題
  • 您不可回复
  • 您不可發布附件
  • 您不可編輯您的帖子
  •  
  • BB代碼是打開的
  • 表情符號是打開的
  • [IMG]代碼是打開的
  • [視頻]代碼是打開的
  • HTML代碼是關閉的
forex-pedia網站使用cookie 文字跟蹤
forex-pedia.com網站使用cookie 文字跟蹤,某些設定已經固定。您可以點擊此處閱讀我們的Cookie使用說明。 請點擊右鍵接受我們的cookies。如果您選擇繼續使用forex-pedia.com網站,我們將認為您接受我們的cookies。