將數據從一個MT4客戶端傳遞到另一個客戶端 - Page 2
2 頁面的第 565 頁 FirstFirst 1234 ... 上一個上一個
Results 11 to 20 of 41

Thread: 將數據從一個MT4客戶端傳遞到另一個客戶端

  1. #11
    感謝羅伊斯的職位..它確實讓我想到了你可以永遠保持循環並以任何方式睡覺它。 Kenz當然你可以在C#中做到這一點,但是我不知道你為什麼要這樣做,除非你想修改/擴充它,如果你想這樣做,那麼對你來說顯而易見。我已經用C語言編寫了很多年並且出於幾個原因,主要是因為你可以在delphi中做任何可以在C中完成的事情(所有條形虛擬設備驅動程序)Delphi提供了更豐富的組件/對象集。因為它更易讀,所以更不容易出現錯誤,如果你需要從例程中獲得最大的速度,編譯器允許你編寫內聯彙編代碼。如果你的地獄傾向於轉換它:那麼所有的windows函數都來自user32.dll你必須構建自己的TStringList類,它只是一個存儲字符串的鍊錶對象(據我所知,C仍然不提供這樣的基礎但是非常有用的類作為標準)或者您可以使用動態數組實現自己的字符串處理。

  2. #12

    Quote Originally Posted by ;
    您無法直接在DLL中創建共享內存空間。有幾種方法可以讓DLL相互通信。這取決於你是否想要雙向com,以及他們需要交談的頻率。最簡單的方法包括:1)在DLL中打開套接字,通過TCP或其他協議進行通信。 (可能最簡單,如果MT4應用程序位於局域網上的不同計算機上或超過inet)2)有一個MT4使用創建“輔助”窗口(可見或不可見)的DLL,然後直接從MT4使用SendMessage實現WM_COPYDATA消息或來自另一個DLL。如果這超出了你的範圍,那麼你可以使用磁盤文件來傳遞數據,如果你沒有過於頻繁地傳輸,你只需要使用輔助文件作為信號量機制。再次,它真的取決於你如何嘗試傳播,但這應該在EA(不是一個indior)內部工作。 (但是你必須使用windows API文件函數,因為據我所知MT4不會在自己的目錄結構之外寫或讀)'Datafile.txt'包含你的數據'app1lock.txt'...虛擬鎖文件' app2lock.txt'...在啟動任何一個MT4應用程序之前的虛擬鎖文件確保沒有文件存在App1 ...如果app2lock.txt不存在{create file app1lock.txt//此時可能兩個應用程序都鎖定了同時等待並再次檢查睡眠(1000);/如果app2lock.txt不存在則等待一秒{createmodifyread'datafile.txt'} else標記我們需要通過刪除文件'app1lock.txt'重做下一次}} App2 ...如果app1lock.txt確實如此不存在{create file app2lock.txt Sleep(1500)如果app1lock.txt不存在{createmodifyread'datafile.txt'} else標誌,用於下次運行刪除文件'app2lock.txt'}
    你知道如果使用更新版本的MT4,他們現在可以在他們自己的目錄之外讀/寫TXT文件嗎?我想做一些你所說的話。謝謝編輯:我創建了一個小循環DOS批處理文件,它將文件從一個目錄複製到另一個目錄,但是在滿足某些條件時,我需要創建文件並讀取文件的正確mq4代碼是什麼?謝謝如果有興趣,這是批處理文件; :loop xcopy c:\ temp \ test.csv c:\ temp2 del c:\ temp \ test.csv goto:loop

  3. #13
    我知道我說過我不會再發帖了,但我處於絕對的約束狀態。本週末我浪費了近20個小時來研究這個問題,我開始感到無助了。我的問題是我沒有visual c 或VB我有Dev C ,但不知道如何使用MingW創建DLL 我附加了我在DLL上的嘗試,以便在MT4終端之間進行通信。這個想法是使用Win32環境變量一個信號量和參數傳遞者。 COMMAND_SENT變量是一個信號量,OPERATION用於交換信息。請....我不能繼續用DLL來浪費所有這些時間..../copy.cpp #include lt; windows.hgt; #include lt; stringgt; #include lt; cstdlibgt; extern C {////////////////////////////////////////////////////////broker A調用它來發出一個新任務的信號(在它找到false之後wcheckCommand()....因此,信號量。)void WINAPI CommandSent(void){int success = 0 ; while(!success)success = putenv(COMMAND_SENT = 1); }///////////////////////////////////////////////////////代理B在完成它的活動後調用它(將其設置為false,讓代理A知道前一個活動已完成)void WINAPI CommandExecuted(void){int success = 0; while(!success)success = putenv(COMMAND_SENT = 0); }///////////////////////////////////////////////////////代理A調用它來檢查新任務//代理B調用它來檢查前一個活動字符串的完成情況WINAPI CheckCommand(void){return getenv(COMMAND_SENT); }///////////////////////////////////////////////////////打開訂單格式:B_001_45_115/關閉訂單格式:C_001_______ void WINAPI SetOperation(字符串op,字符串票證,字符串停止,字符串tp){int success = 0; string s = OPERATION = op _ ticket _ stop _ tp; char * x = new char [21]; strcpy(x,s.c_str());而(!成功)putenv(x);刪除[] x; }/////////////////////////////////////////////////////string WINAPI CheckOperation(void){return getenv(OPERATION); }/////////////////////////////////////////////////////}如果您能提供幫助,請發佈建議或PM我!謝謝!

  4. #14
    今晚我發現kernal32.dll內置了一些環境變量getter和setter。所以(理論上)我可以將kernal32.dll導入到我的MQ4代碼中,然後調用這些函數。我擔心它返回一個指向字符數組的指針而不是MQ4的標準字符串數據類型。這是我正在閱讀的鏈接:
    http://babek.info/libertybasicfiles/.../nl126/api.htm你們有什麼感想?有任何人對此有經驗嗎?

  5. #15
    Tdion:我很好奇為什麼你不使用#7後的rangebound提供的聊天...... ???謝謝,Ken(ps:RB:我想在C#中使用它,因為我在NinjaTrader工作)。

  6. #16
    Tdion:正如Kenz建議為什麼不使用提供的DLL?我提供了源代碼和編譯的DLL作為免費軟件....你可以將它用於任何目的,即使它最終在一個可銷售的系統...我不打算起訴你的屁股!或要求財產權。至於你的DLL代碼,我不確定你的確切問題是什麼?你可以編譯成可調用的DLL嗎?代碼/邏輯是否表現不如慾望?乍一看,我可以看到你的egy中有一個缺陷。我懷疑windows函數是否可以獲取和設置environ vars是可重入的(很少有Winapi函數)這引發了與文本文件示例中看到的相同的問題 - 即 - 因為你有兩個獨立的進程檢查和修改同一個loion它完全是當另一個應用程序檢查/設置var時,一個進程可能在中途檢查/設置var。如果不使用已建立的多任務操作系統信號量機制,很可能會發生這種情況。肯茲:好的。我沒有使用Ninja交易者,雖然它已經在我的待辦事項清單上。 (這是我期待打開賬戶的期貨投注)我知道的關於NT的唯一信息是它在語言中使用C語法。我想有一些語法差異可能會出現在某個地方的bonafide C.如果DLL調用不是問題,你應該能夠移植delphi代碼。您應該使用以下其中一個包括儘管您可能需要使用sendmessageA而不是sendmessage等)winuser.h windows.h您仍然需要'重新發明'Tstringlist類但是可以使用相同的方法來實現一個靜態大小(足夠大)的字符串數組,然後在getmsg函數中將字符串重新排列到數組中。只要DLL導入/調用在NT中可用,您仍然可以使用提供的Delphi DLL。我想你最大的(可能的)問題是在NinjaT中獲得一個窗口的句柄?如果這是您唯一的問題,那麼您可以檢查/試用Delphi DLL,如果您有C#或visual studio,那麼您可以通過使用Spy 或其“studio .net”等效來獲取NinjaT中任何窗口的句柄。一旦你有一個句柄,你可以硬編碼調用來啟動消息dll,看看它是否會按要求工作。如果它工作正常,那麼你可以使用一些Winapi調用來自動獲取Ninja窗口的句柄。你可以發布一些Ninja代碼塊,最好是一些包含DLL導入調用的代碼

  7. #17
    1附件RB:示例C#用於NT的尖銳代碼底部的大部分令人討厭的代碼都是由NT生成的,但你可以看到它與C 有很大不同我沒有一個叫做dll的indior,但我認為需要這樣的東西:[DllImport(user32.dll,EntryPoint = GetDesktopWindow)] public static extern IntPtr GetDesktopWindow();我沒有時間來測試它 - 我想要一個能做SendKeys的dll的調用。也許以後可能會有兩種方式做DDE。只是需要時間來測試。如果您打算學習這一點,那麼在microsoft msdn網站上有很多信息。肯。
    https://www.forex-pedia.com/attachme...1882749462.txt

  8. #18
    好。快速瀏覽一些Ninja論壇等。看起來他們已經在後期版本中實現了.NET框架,所以你應該可以使用DLL,但是他們的支持團隊不會給出DLL調用的例子(奇怪!)無論如何。你能澄清一下你想要做什麼1)調用一個'Sendkeys'DLL來自哪個App? - 按下哪個App鍵? 2)你想要DDE之間哪兩個APP?

  9. #19
    RB:謝謝你的關注。 NT是在.NET 2上。我在VB中有代碼來做我想要的不同的事情,但C#對我來說是一個新的野獸 - 我無法獲得dll調用的正確語法 - 在編譯時它告訴我格式無效在user32上調用。由於我正在進行其他項目,因此這個優先級稍低。對於這樣的事情,NT支持並不是那麼好 - 他們的標準答案不受支持。我想做的第一件事就是簡單地調用PlaySound。這將給我語法和起點。之後我可以做代碼。肯。

  10. #20
    我有一個簡單的MsgBox來顯示彈出消息。任何更符合的事情都會給我一個錯誤。試圖讀取/更新受保護的內存。到目前為止,這需要太多時間。

發布權限

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