有沒有人有任何關於如何在Metatrader 4中生成基於時間的輸入信號的示例代碼?例如在每天的特定時間和小時分鐘MT4 MetaTrader4中基於時間的輸入信號
回答
我一直就在這樣一個功能。它必須進行定製 - 我正在努力製作更通用的版本;它將會非常繁瑣,需要自己的include
文件。但值得一提的是,它可以在不改變代碼的情況下將其粘貼在不同的圖表上。這基本上是一個大案例陳述,我已經在這裏爲每個單獨的時間段定製了。
你在做什麼?感謝您對時間和外匯的興趣!
bool existordertime(datetime time, int otype = -37) {
// +---------------------------------------------------------------+
// | this function is intended for use inside of if() and other conditionals
// | usually called with TimeCurrent() example:
// |
// | if (!existordertime(TimeCurrent()))
// |
// | it accepts a datetime. A datetime is:
// | a number of seconds elapsed from 00:00 January 1, 1970
// | they can be treated as integers as such or accessed with other functions
// | so that if statements can be commented in and out easily based on what
// | timeframe we plan on looking at.
// | there is an optional parameter for an order type if you need it.
// |
// | KEEP IN MIND if you want to use this to trade something like a 5min 15min
// | or 4hr your gonna need a lot of if statements like:
// |
// | if ( MathMod(Minute() + 5, 5) == 0)
// |
// +------------------------------------------------------------------+
for (int cnt = 0; cnt < OrdersTotal(); cnt++) {
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderType() == otype || -37 == otype)
// COMMENT OUT THE if()S YOU DON'T NEED HERE:
// also add new lines as needed
// if ( MathMod(TimeMinute(time) + 5, 5) == 0) // 5min chart
// if ( MathMod(TimeMinute(time) + 15, 15) == 0) // 15min chart
// if ( MathMod(TimeMinute(time) + 30, 30) == 0) // 30min chart
// if ( MathMod(TimeHour( time) + 4, 4) == 0) // 4hour chart
int dbOrderOpenTime = OrderOpenTime(); // re-use SAVEs dbPOOL-access time ...
if ( TimeSeconds(time) == TimeSeconds(dbOrderOpenTime))
if ( TimeMinute( time) == TimeMinute( dbOrderOpenTime))
if ( TimeHour( time) == TimeHour( dbOrderOpenTime))
if ( TimeDay( time) == TimeDay( dbOrderOpenTime))
if ( TimeMonth( time) == TimeMonth( dbOrderOpenTime))
if ( TimeYear( time) == TimeYear( dbOrderOpenTime))
return (TRUE);
}
for (cnt = 0; cnt < OrdersHistoryTotal(); cnt++) {
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
if (OrderType() == otype || -37 == otype)
// COMMENT OUT THE if()S YOU DON'T NEED HERE:
// also add new lines as needed
// if ( MathMod(TimeMinute(time) + 5, 5) == 0) // 5min chart
// if ( MathMod(TimeMinute(time) + 15, 15) == 0) // 15min chart
// if ( MathMod(TimeMinute(time) + 30, 30) == 0) // 30min chart
// if ( MathMod(TimeHour( time) + 4, 4) == 0) // 4hour chart
int dbOrderOpenTime = OrderOpenTime(); // re-use SAVEs dbPOOL-access time ...
if ( TimeSeconds(time) == TimeSeconds(dbOrderOpenTime))
if ( TimeMinute( time) == TimeMinute( dbOrderOpenTime))
if ( TimeHour( time) == TimeHour( dbOrderOpenTime))
if ( TimeDay( time) == TimeDay( dbOrderOpenTime))
if ( TimeMonth( time) == TimeMonth( dbOrderOpenTime))
if ( TimeYear( time) == TimeYear( dbOrderOpenTime))
return (TRUE);
}
return (FALSE);
}
你的代碼看起來不像代碼。而且,它不能被人類編輯。你可以幫助縮進四個空格嗎?它會增加可讀性 – eeerahul 2011-12-09 06:00:18
@eeerahul是的,正確。 MQL4社區有一個非常奇怪的習慣,產生MQL代碼(C語法),就好像他們必須爲它上面的每個字符支付一美元......這個習慣是IMO不可改變的。上一次見過類似那是在360KB軟盤的時代,在那裏大型的基於LISP的軟件模塊被完全刪除,只保留語法上「必要」的字符,然後代碼看起來像哈希碼d,因爲需要適合FDD媒體的有限存儲容量。 (孩子們幾乎不會相信有些電腦沒有硬盤,並從FDD啓動+運行......) – user3666197 2014-06-14 18:50:38
@nbrooks在對代碼塊進行了幾次重新編輯之後,請考慮到,最初有一個意圖使作者對算法的處理方式保持不變。當你修改格式和邏輯時,你可能會被告知,通過'Time [iShift(...)]'和其他主要項目在不同時間範圍內進行操作的算法會更好,超越了不那麼清晰的定義的問題有待回答。代碼塊在最初的問題的方向上沒有做任何事情,而是廣泛地重新讀取dbpool(不考慮'.Select()'結果) – user3666197 2014-06-14 19:13:52
TimeLocal()
爲您提供自本地計算機(終端客戶端)1970年1月1日午夜起的秒數。
TimeCurrent()
給出自您經紀商計算機(服務器)1970年1月1日午夜以來的秒數。
您可以對這些轉換爲字符串,像這樣:
string ct = TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS);
Print("Client Time: ", ct);
string st = TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);
Print("Server Time: ", st);
您還可以得到像這樣的日期數字的各個元素:
Print("Year:",TimeYear(TimeCurrent())," Month:",TimeMonth(TimeCurrent()));
的MQL4在線程序員指南可發現here。
希望這會有所幫助。
乾杯,
馬克
- 1. 基於信號控制simulink可變時間步長大小
- 2. 如何更改服務器時間MT4
- 3. 如何從python控制MT4?
- 4. Python:自動提交基於時間的輸入?
- 5. InstallTapOnBus - 用於輸出信號
- 6. 基於輸入線
- 7. WebAudioAPI:基於輸入
- 8. 套接字通信中客戶端輸入之間的時間
- 9. 基於Wi-Fi信號的基於接近度的操作
- 10. 基於輸入的JavaScript setTimeout
- 11. 計算信號時間
- 12. 基於時間戳
- 13. 基於文本輸入值的待發信息
- 14. 怎麼去問問,我使用<a href="https://github.com/Uriil/MetaTrader4.Manager.Wrapper" rel="nofollow noreferrer">MetaTrader4.Manager.Wrapper</a></p> <p>我想所有貨幣(符號在MT4)和他們的出價&從MT4要求從.net ClrWrapper
- 15. 當用戶輸入到輸入中時符號後的自動空間
- 16. 用於指定Django信號中定性時間信息的性能影響?
- 17. 神經網絡的信號輸入
- 18. 構建基於其他多個輸入的輸入值中,
- 19. 基於HTML/CSS/JS中先前輸入字段的新輸入
- 20. 基於數學輸入
- 21. 基於時間的數據
- 22. neo4j中的基於時間的數據
- 23. Elixir中的基於時間的測試
- 24. 將平滑信號與輸入信號進行比較
- 25. 插入基於特定的時間間隔/字符
- 26. 基於SQL中所需的列信息的序列號
- 27. 基於R中的日期/時間範圍加入數據
- 28. 基於R中的移動時間窗口加入數據
- 29. 基於其他字段的值從python的json輸入中提取信息
- 30. html5時間輸入的更改值格式時間輸入
有沒有這個你正在尋找的某個部分(例如邏輯來告訴它是什麼時候,啓動交易的邏輯等)?或者你在尋找所有的東西? – malonso 2010-01-29 23:04:22
只是尋找方法。如果符合其他標準,我期待在特定時間使用它開設交易。 – PeanutPower 2010-01-30 16:11:23