[舉手] MT4之MQL4語法問題

作者: ColiColi (☠Busy Life☠)   2019-03-15 16:52:03
我目前著手寫的程式
出場問題比較令我困擾一些
目前出場情況有四種
其中兩種沒什麼問題
出場後可以繼續正常開新倉
另兩種出場情況則不太一樣
只要符合條件就會出場且
當日不會再進行任何交易
想問的是 我已寫好當日交易時間的濾網
例如一天只在9~21之間開新部位
而且我把這個時間濾網是放在開新倉指令的開頭 若在這段期間外會用return跳出
至於這個當日某筆止損金額達到一定程度的出場條件
我會用Bool撰寫 若達到條件為True 否則為False 我也想把他放到開新倉指令的開頭
也就是
if (TimeCurrent()<StrToTime("09:00") || TimeCurrent()>StrToTime("21:00") ||
BuyClose5==True || SellClose5==True)
return;
現在第一個問題是當日最大止損 我參考別人的語法寫了兩種最大止損
一個是檢查未平倉交易 達到條件就出場 另一個是檢查已平倉交易
按照這個邏輯 我可以在出場指令那邊結束這個部位
同時會再寫一個Bool是去抓歷史交易資料
第二個問題就是若我依據這個止損條件作為開新倉的標準
他有辦法做為當日有效的指令嗎?
還是說隔天符合開新倉的時間時 他一樣會去檢查是否有最大止損情況發生嗎?
如果是這樣的話 請問我需要怎麼調整才能讓單筆最大止損每日重新計算
避免永遠開不了新倉 囧 我找了很多網站但都沒看到相關討論
用英文搜尋也一樣 所以只好上來問各位前輩了@@ 問題若過於初淺
還請見諒
Bool_BuyClose5()
{
for(int i=OrdersHistoryTotal()-1,i>=0,i
作者: ducati5566 (on the way!!!)   2019-03-16 09:19:00
意思是你要在止損後,再用這個止損價位作為新倉標準?
作者: ColiColi (☠Busy Life☠)   2019-03-16 10:16:00
就是一旦達到這個止損條件 當天就不再進場 我用bool或直接加在進場前的if裡都沒辦法順利執行這個濾網…
作者: ducati5566 (on the way!!!)   2019-03-16 10:54:00
嘗試看做一個開關,停損後設成 false, 然後做一個newbar(1440),當newbar等於true,再把開關賦值true。然後執行其他程式碼。我不確定是否可行
作者: chkuya (chk)   2019-03-16 10:56:00
9點到21點那邊不是應該用&&嗎?停損變數可以抓今日內歷史平倉損益,加上未平倉損益
作者: ducati5566 (on the way!!!)   2019-03-16 11:06:00
其實我不太明白你的問題,你是停損後無法再次開單,還是再次開單的時候沒有在濾鏡條件內?
作者: chkuya (chk)   2019-03-16 11:08:00
他應該是停損值沒有重新reset應該不用再用另一個時間變數判斷是否換日直接抓今日的資料就好
作者: ducati5566 (on the way!!!)   2019-03-16 13:36:00
你嘗試一下c大的方法吧。跨TF的newbar在backtest好像做不到。
作者: chkuya (chk)   2019-03-16 21:59:00
他應該也沒有要跨TF抓當日用迴圈去累加今日平倉後再加未平倉這樣比用變數判斷是否跨日再累加損益方便

Links booklink

Contact Us: admin [ a t ] ucptt.com