看板 ForeignEX 關於我們 聯絡資訊
各位版大好 想請問MT4的新手問題,反覆測試仍無解 1. 原本想達到的效果: 買單送出,停損掛日K低點,賣單掛日K高點 ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,mktifL,Ask+tp*Point,"",56,0,Blue); 其中第6,第7個參數分別是 6.停損 7.停利 2. 目前作法及矛盾點: 目前是用在OnTick()裡面設的double mktifH, mktifL自設變數 : mktifH=NormalizeDouble(MarketInfo(NULL,MODE_HIGH),5); // 今日高 mktifL=NormalizeDouble(MarketInfo(NULL,MODE_LOW),5); // 今日低 但跑EA就是SL掛不上去不知道為什麼(無論有無標準化位數都一樣) 另外用了自設變數測試就可以, 下面的MA31max, MA31med, MA31min (一樣double) 不知道為什麼這樣就可以,剛剛就不行,完全不明白中間的邏輯 MaList[0]=ma5d; MaList[1]=ma10d; MaList[2]=ma20d; ArraySort(MaList,WHOLE_ARRAY,0,MODE_DESCEND); MA31max=MaList[0]; MA31med=MaList[1]; MA31min=MaList[2]; 3. 要問的問題: 1)為什麼會這樣 哭哭 2)追加:如果我在OrderSend以後馬上用OrderSelect OrderModify改sl tp 是有辦法辦到的嗎? 因為假設單一多用for迴圈找就麻煩多了 剛接觸,遇到無數瓶頸 懇請各位版上先進技術指導 大感謝 T T -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.176.113 ※ 文章網址: https://www.ptt.cc/bbs/ForeignEX/M.1536845648.A.D79.html
yinzhiping: 阿,忘了說是H1或M30策略,但變數是日高日低5/10/20MA 09/13 21:39
vesta9: MarketInfo 第一個參數換成 _Symbol 09/14 02:50
n33222: 有顯示ERROR嗎? 你試試看用F5一條一條跑跑看 09/14 15:28
ducati5566: 有compile error嗎?用High[0], Low[0]看看 09/14 16:15
n33222: 這有幾點可能會發生,第一就是停損數值錯誤,這種偵錯法你 09/14 20:39
n33222: 可以使用PRINT來確認數字對不對,或是停損離下單點位有時 09/14 20:39
n33222: 近,另外一種可能就是你的ORDERSEND的邏輯指令錯誤,根本 09/14 20:40
n33222: 不進去,沒看到ERROR代碼或是語法很難判斷,最好辦法你使 09/14 20:40
n33222: 用F5和F9調試,一行一行去檢驗跑到哪裡就跳掉了。 09/14 20:41
回覆: 有Print過,沒Error, 回測OrderSend沒問題,只是停損掛不上去(TP可以) 換另外一組自訂的double就可以,也就是文中的三均線 參數我用NULL, Symbol(), _Symbol Print都沒錯,但就是不能掛 QQ 最後解法如下: mktifH=iMA(NULL,1440,1,0,MODE_SMA,PRICE_HIGH,0); //NormalizeDouble(MarketInfo(Symbol(),MODE_HIGH),6); // 今日高 mktifL=iMA(NULL,1440,1,0,MODE_SMA,PRICE_LOW,0); //NormalizeDouble(MarketInfo(Symbol(),MODE_LOW),6); // 今日低 有成功掛上,但還是很納悶中間的邏輯到底是什麼 @ @ 另外n33222之前PO的模板對新手幫助很多,我都是用您的改的,在此感謝。 ※ 編輯: yinzhiping (49.218.115.104), 09/14/2018 23:43:49
n33222: 明天幫你看 09/15 00:53