MQL4問題請教 - 財經

Table of Contents

關於MT4自帶的範例MACD Sample,有些疑問一直想不清楚,

google半天也找不到答案,想請教版上的前輩高手

以下為第89行到123行的程式碼

//--- it is important to enter the market correctly, but it is more important to exit it correctly...
for(cnt=0;cnt<total;cnt++)
{
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) <------(1)
continue;
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
//--- long position is opened
if(OrderType()==OP_BUY)
{
//--- should it be closed?
if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
MacdCurrent>(MACDCloseLevel*Point))
{
//--- close order and exit
if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet)) <--(2)
Print("OrderClose error ",GetLastError());
return;
}
//--- check for trailing stop
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
//--- modify order and exit
(3)----> if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
Print("OrderModify error ",GetLastError());
return;
}
}
}
}

我用括號標註了3個地方(抱歉,不知道怎麼上色...)
(1)第92行的!OrderSelect
(2)第105行的!OrderClose
(3)第117行的!OrderModify

想請問是只要有寫==false的情況,==true的狀況就不用寫了嗎?
另外這樣寫有什麼用意或好處嗎?

希望有好心人能解答我的疑問,先謝謝了...

--

All Comments

Faithe avatarFaithe2019-01-04
先提程式技術方面, 這是所謂的防衛子句寫法
Tom avatarTom2019-01-06
這廣泛出現在許多類似 C 與 C++ 的程式語言的程式中
這有點像是站衛兵的意思, 如果符合條件就會被衛兵趕出去
Ula avatarUla2019-01-08
趕出去的方法有 continue 與提早的 return
Zanna avatarZanna2019-01-13
那麼在程式交易方面, 例如 Easy Lang 或 Power Lang
或是一些 C# Based 的開發環境, 例如 Wealth-Lab 都有把
Oscar avatarOscar2019-01-14
掛單的流程責任切得很清楚, 基本原則就是每個動作都要查
Rachel avatarRachel2019-01-19
他不能不給你查, 所以設計上 Order Command 都會有 return
Erin avatarErin2019-01-20
但是共識上會假設程式執行很快, 所以不會幫你鎖單
George avatarGeorge2019-01-23
也就是如果你 OrderSelect 但是其他 EA 也在跑他也能動他
所以你通常都會看到只對 Error Path (出錯的執行路徑)
Yuri avatarYuri2019-01-26
的處理, 就像是一堆 !OrderSelect, !OrderClose
Jessica avatarJessica2019-01-28
但是是不是執行成功就不用檢查? 實務上還是要
Gilbert avatarGilbert2019-01-30
因為有時候銀行端/伺服器端, 會幫你自動撤單(不知道原因)
又自動幫你補單(感覺像他手殘按到) 銀行端補單的 Magic
Carol avatarCarol2019-02-02
Number 會非常詭異, (通常伴隨著錯誤的 lots...)
所以其實還是要做, 但是你在網路上查得的各種資源
Oliver avatarOliver2019-02-05
原則上還是會假設 Order Cmd 出去就穩了
Joseph avatarJoseph2019-02-07
難得看到 MQL 的文, 推推 QQ!!
Gary avatarGary2019-02-10
想不到這麼快就能有這麼詳盡又專業的回覆
Queena avatarQueena2019-02-13
真的非常感謝rcwang大,解答了我大部分的疑惑
Hedwig avatarHedwig2019-02-14
好專業!!!
Robert avatarRobert2019-02-17
推,專業回
Todd Johnson avatarTodd Johnson2019-02-19
專業 跪