如果我們需要做一些計算,如:
(iHigh(EURUSD,PERIOD_H1,0)-OrderOpenPrice())gt; 0.0030)並使用時間幀一小時,當我們移動到下一幀時的問題可能是條件不可用。我需要為我從其獲得OrderOpenPrice的欄指定iHigh。
有些人建議我使用OrderOpenTime()和shiftbar(),但我不知道如何使用它們請為我提供示例和非常感謝。
如果我們需要做一些計算,如:
(iHigh(EURUSD,PERIOD_H1,0)-OrderOpenPrice())gt; 0.0030)並使用時間幀一小時,當我們移動到下一幀時的問題可能是條件不可用。我需要為我從其獲得OrderOpenPrice的欄指定iHigh。
有些人建議我使用OrderOpenTime()和shiftbar(),但我不知道如何使用它們請為我提供示例和非常感謝。
您可以嘗試類似:Inserted Code int shift = iBarShift(EURUSD,PERIOD_H1,OrderOpenTime()); if(iHigh(EURUSD,PERIOD_H1,shift) - OrderOpenPrice()gt; 0.003){//做某事}文檔:Originally Posted by ;
http://docs.mql4.com/series/iBarShift
http://docs.mql4.com/series/iHigh
https://sites.google.com/site/market...OrderOpenPrice
https://sites.google.com/site/market...#OrderOpenTime
嗨,FXEZ,我有其他問題。現在我得到了從它獲得的酒吧的高價訂單開放價格()。下一個排隊將是:如果我想在orderopenprice()打開後獲得最高價格。這是正確的方法嗎?請給我舉個例子。 iHigh(EURUSD,0,iHighest(EURUSD,0,PRICE_HIGH,[//10/欄數],[//從這個欄開始//移動]));那麼if(iHigh(EURUSD,0,iHighest(EURUSD,0,PRICE_HIGH,[//10/條數],[//從這個條開始//移動]) - (OrderOpenPrice()gt; 0.003) ){//做點什麼}非常感謝int shift = iBarShift(EURUSD,PERIOD_H1,OrderOpenTime()); if(iHigh(EURUSD,PERIOD_H1,shift) - OrderOpenPrice()gt; 0.003){//做某事}
你需要這樣做。 。 。 iHigh(EURUSD,0,iHighest(EURUSD,0,PRICE_HIGH,shift-1,0));酒吧數量從右到左。 。 。 0是當前柱,shift是您的訂單打開的iBarShiftOriginally Posted by ;
由於當前條為0且iHighest函數返回移位(而不是計數),因此計數字段應為shift 1。如果最高柱是當前柱,則iHighest應返回0.代碼應為:插入代碼iHigh(EURUSD,0,iHighest(EURUSD,0,PRICE_HIGH,shift 1,0));但是,如果您嘗試:插入代碼打印(iHighest(NULL,0,MODE_HIGH,0,0));它似乎在整個數據系列中給出了最高的條形索引號(可能是默認設置)。當我嘗試:插入代碼打印(iHighest(NULL,0,MODE_HIGH,1,0));它返回0,因為當前條(始終)是最後1個條中的最高位。如果OP不希望包含條目欄的高位,那麼它應該只是移位而不是從幫助文件中移位 1.插入代碼雙倍val;/計算當前圖表中第4到第23個索引的20個連續條上的最高值val = High#91; iHighest(NULL,0,MODE_HIGH,20,4)#93 ;;Originally Posted by ;
這樣會好嗎:int shift = iBarShift(EURUSD,PERIOD_H1,OrderOpenTime()); iHigh(EURUSD,PERIOD_H1,iHighest(EURUSD,PERIOD_H1,MODE_HIGH,shift,0)); =========請注意:我不是程序員。我想要的是:1-在我得到orderopenprice之後,我希望clculate最高的一些酒吧獨立於以下條件之前不在orderopneprice之後。 2 - 我希望條形數從左到右而不是從右到左。請檢查並糾正錯誤(例如非常好)。 ====== if ihighest - orderopenpricegt; 0.0030(1.3061-1.3030)gt; 0.0030表示下一個條件是((0.00312)gt; bid)該位置將以0.0015 proft結束。如果((1.3090-1.3030)/2)這意味著我們得到30點int shift = iBarShift(EURUSD,PERIOD_H1,OrderOpenTime()); iHighest(EURUSD,PERIOD_H1,MODE_HIGH,shift-5,shift); if(((iHighest - OrderOpenPrice())gt; 0.0030)(((iHighest OrderOpenPrice())/2)gt; MarketInfo(EURUSD,MODE_BID))){close the position};我想如果我們用0代替shift-5,也許會更好。它將以換檔桿開始,並將以當前柱形結束,這意味著相同的柱。如果條件發生,它將尋找第二個條件換擋條= 1.3061和orderopenprice()= 1.3030這意味著它可能會在同一個柱中關閉價格達到1.3045或低點。如果沒有並且移動到下一個柱子意味著它將保持換檔桿的高位並在1.3045或者低位關閉,如果換擋杆後面的下一個柱子給我們新的高點像1.3091這意味著它將在價格達到時關閉1.3060或低等等....請幫我舉個很好的例子。
酒吧數從右到左。 。就是這樣,當前形成的條形是條形0,左邊的下一條是條形1,然後是條形2,等FXEZ說的是正確的。 。 。你需要這個 。 。 double HighestAfterOrder = iHigh(EURUSD,0,iHighest(EURUSD,0,PRICE_HIGH,shift,0));然後使用它。 。 。 if(HighestAfterOrder - OrderOpenPrice()gt; 0.0030 HighestAfterOrder (OrderOpenPrice()/2)gt; MarketInfo(EURUSD,MODE_BID)){close the position}
插入的代碼字符串PriceToStr(double p){return(DoubleToStr(p,Digits)); }:datetime OOT = OrderOpenTime();/假設OrderSelect()已經完成iOOT = iBarShift(NULL,0,OOT);/打開欄#define iBarCURRENT 0/包括當前欄int nSince = iOOT - iBarCURRENT 1;/號碼酒吧自開放以來。 int iHi = iHighest(NULL,0,MODE_HIGH,nSince,iBarCURRENT); double HH = High#91; iHi#93 ;;/最高打印(打開訂單時高,TimeToStr(OOT),是PriceToStr(HH));