string PriceToStr(double p){ return( DoubleToStr(p, Digits) ); } : datetime OOT = OrderOpenTime(); // Assumes OrderSelect() done already int iOOT = iBarShift(NULL,0, OOT); // Bar of the open. #define iBarCURRENT 0 // Include current bar. int nSince = iOOT - iBarCURRENT + 1; // No. bars since open. int iHi = iHighest(NULL,0, MODE_HIGH, nSince, iBarCURRENT); double HH = High[iHi]; // Highest high. Print( "High since order opened on ", TimeToStr(OOT)," is ", PriceToStr(HH) );
다음은 위의 코드에 대한 몇 가지 오류입니다.
'(' - 예기치 않은 기능 정의 D:\Program Files\FXDD Malta - MetaTrader 4\experts\test2.mq4 (343, 18)
문자열 PriceToStr에 대한 이 오류 ( 이중 p)
이 오류에 대해 어떻게 고칠 수 있는지 모르겠습니다
'iBarCurrent' - 정의되지 않은 변수 D:\Program Files\FXDD Malta - MetaTrader 4\experts\test2.mq4 (348, 30)
#define iBarCURRENT를 정의한 다음 iBarCurrent 로 지정 하기 때문에 이 오류가 발생합니다.
나는 그것을 고칠 것이다.
오류 2개,
시작 함수 외부 의 코드 맨 끝에 이 줄을 넣으십시오. . .
string PriceToStr( double p){ return ( DoubleToStr (p, Digits ) ); }
코딩을 배우고 싶다면 이것을 읽기 시작하십시오: https://book.mql4.com//
그것은 분명합니다 ( RaptorUK 및 WHRoeder ),
고맙습니다.
datetime OOT = OrderOpenTime (); // Assumes OrderSelect() done already int iOOT = iBarShift ( "EURUSD" , PERIOD_H1 , OOT); // Bar of the open. #define iBarCURRENT 0 // Include current bar. int nSince = iOOT - iBarCURRENT + 1 ; // No. bars since open. int iHi = iHighest ( "EURUSD" , PERIOD_H1 , MODE_HIGH, nSince, iBarCURRENT); double HH = High[iHi]; // Highest high. int iLi = iLowest ( "EURUSD" , PERIOD_H1 , MODE_LOW, nSince, iBarCURRENT); double LL = Low[iLi]; // Lowest low.
다른 질문이 있습니다.
2개의 주문이 있는 경우 하나는 매수용이고 다른 하나는 매도용입니다.
내 EA가 iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); // 오픈 바. 내가 거기에서 구매 위치를 얻은 막대에 대해 그 지점에서 가장 높은 값을 계산합니다.
그리고
iOOT = iBarShift("EURUSD",PERIOD_H1, OOT); // 오픈 바. 내가 판매 위치를 얻은 막대에 대해 그 지점에서 가장 낮은 값을 계산합니다.
많은 감사
for (pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--) if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/ && OrderMagicNumber () == magic.number // my magic number && OrderSymbol () == Symbol () // and my pair. ){ datetime OOT = OrderOpenTime (); // Assumes OrderSelect() done already int iOOT = iBarShift ( "EURUSD" , PERIOD_H1 , OOT); // Bar of the open. #define iBarCURRENT 0 // Include current bar. int nSince = iOOT - iBarCURRENT + 1 ; // No. bars since open. if ( OrderType == OP_BUY){ int iHi = iHighest ( "EURUSD" , PERIOD_H1 , MODE_HIGH, nSince, iBarCURRENT); double HH = High[iHi]; // Highest high. } else { int iLi = iLowest ( "EURUSD" , PERIOD_H1 , MODE_LOW, nSince, iBarCURRENT); double LL = Low[iLi]; // Lowest low. } }
OOT를 받으려면 이미 주문을 완료했어야 합니다.Select
고마워 얘들아.
또한 다른 질문이 있습니다.
이 조건을 어떻게 수행할 수 있습니까? (판매에 대한 마지막 OrderClosePrice() > 판매 에 대한 마지막 OrderClosePrice 이전) && (판매에 대한 마지막 OrderClosePrice 이전 >= 입찰)
포지션을 닫다
이대로 괜찮을거야
if ( ( OrderType == OP_SELL)&& OrderSelect (pos+ 1 , SELECT_BY_POS,MODE_TRADES ) ) { if ( pos>pos+ 1 && pos+ 1 > MarketInfo ( "EURUSD" ,MODE_BID); // close the position
단지,
나는 어떻게 얻을 수 있는지 알고 싶습니다: (구매 또는 판매)에 대한 마지막 주문(개방 또는 닫기) 이전의 주문 가격() 일부 선언을 위해 추가했습니다.
감사합니다.
나는 어떻게 얻을 수 있는지 알고 싶습니다: (구매 또는 판매)에 대한 마지막 주문(개방 또는 닫기) 이전의 주문 가격() 일부 선언을 위해 추가했습니다.
for (pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--) if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/ && OrderMagicNumber () == magic.number // my magic number && OrderSymbol () == Symbol () // and my pair. ){ datetime OOTlatest = OrderOpenTime (); // found latest open order break ; } for (pos--; pos >= 0 ; pos--) if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/ && OrderMagicNumber () == magic.number // my magic number && OrderSymbol () == Symbol () // and my pair. ){ datetime OOTprevious = OrderOpenTime (); // found the previous break ; } if (OOTlastest == 0 ) // no open orders if (OOTprevious == 0 ) // no previous :
WHRoeder님, 감사합니다.
당신의 진정한 도움을 위해. 구매에 대한 마지막 주문과 판매에 대한 마지막 주문을 가져와야 하는 경우 다음을 수행하여 비교합니다.
if ( 마지막 주문openforbuy == OOTlastest )
{ 뭔가 해 }
또 다른
{ } ....... 아래 코드가 작동합니다.
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--) if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/ && OrderMagicNumber () == magic.number // my magic number && OrderSymbol () == Symbol () // and my pair. ){ if ( OrderType () == OP_BUY){ int lastorderforbuy= OrderOpenPrice (); } else { int lastorderforsell= OrderOpenPrice (); } } for (pos--; pos >= 0 ; pos--) if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/ && OrderMagicNumber () == magic.number // my magic number && OrderSymbol () == Symbol () // and my pair. ){ if ( OrderType () == OP_BUY){ int previousorderforbuy= OrderOpenPrice (); } else { int previousorderforsell= OrderOpenPrice (); } } if ( ((lastorderforbuy+ previousorderforsell)/2)<=MarketInfo("EURUSD",MODE_BID)) { CLOSESHORT("EURUSD") ;}
친애하는,
누군가가 아래 링크를 확인하고 내 질문에 대답할 수 있습니까(orderopenprice가 열린 후 가장 높은 값을 얻을 수 있는 방법).
http://www.forexfactory.com/showthread.php?t=307937