[舉手] MT4之MQL4語法問題
我目前著手寫的程式
出場問題比較令我困擾一些
目前出場情況有四種
其中兩種沒什麼問題
出場後可以繼續正常開新倉
另兩種出場情況則不太一樣
只要符合條件就會出場且
當日不會再進行任何交易
想問的是 我已寫好當日交易時間的濾網
例如一天只在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--)
{
OrderSelect(i, Select_by_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
{
if(OrderType()=OP_BUY) && (OrderOpenPrice()-OrderClosePrice()>=0.002))
True
Else
False
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.200.26.252
※ 文章網址: https://www.ptt.cc/bbs/ForeignEX/M.1552639926.A.07F.html
→
03/16 09:19,
6年前
, 1F
03/16 09:19, 1F
→
03/16 10:16,
6年前
, 2F
03/16 10:16, 2F
→
03/16 10:16,
6年前
, 3F
03/16 10:16, 3F
推
03/16 10:54,
6年前
, 4F
03/16 10:54, 4F
→
03/16 10:54,
6年前
, 5F
03/16 10:54, 5F
→
03/16 10:54,
6年前
, 6F
03/16 10:54, 6F
→
03/16 10:56,
6年前
, 7F
03/16 10:56, 7F
→
03/16 11:00,
6年前
, 8F
03/16 11:00, 8F
推
03/16 11:06,
6年前
, 9F
03/16 11:06, 9F
→
03/16 11:06,
6年前
, 10F
03/16 11:06, 10F
我是設了這個停止繼續下單的濾網後
經回測發現符合條件的單子沒有被過濾掉
發生當日連續虧損的時候會一直被停損
還是其實用accountequity或accountbalance也可以呢
用原本的方式換了好多種都沒辦法順利運作…
推
03/16 11:08,
6年前
, 11F
03/16 11:08, 11F
→
03/16 11:09,
6年前
, 12F
03/16 11:09, 12F
→
03/16 11:09,
6年前
, 13F
03/16 11:09, 13F
※ 編輯: ColiColi (175.96.101.245), 03/16/2019 13:30:47
→
03/16 13:36,
6年前
, 14F
03/16 13:36, 14F
→
03/16 13:36,
6年前
, 15F
03/16 13:36, 15F
我會試試看C大的方法
從當日未實現損益的方式研究看看
謝謝大家
※ 編輯: ColiColi (175.96.101.245), 03/16/2019 13:40:51
→
03/16 21:59,
6年前
, 16F
03/16 21:59, 16F
→
03/16 22:01,
6年前
, 17F
03/16 22:01, 17F
→
03/16 22:03,
6年前
, 18F
03/16 22:03, 18F
我最後解決問題了
應該是笨方法吧XD
但我沒輒了
我用void
然後用for(int i=,OrdersHistoryTotal()…)
加上if
條件是
TimeCurrent()<=OrderCloseTime()+36000
但解決一個問題就會繼續碰到下個問題
真心佩服很會寫程式的人~
※ 編輯: ColiColi (27.147.12.214), 03/18/2019 00:11:16
ForeignEX 近期熱門文章
PTT職涯區 即時熱門文章