orderopenprice가 열린 후 가장 높은 값을 얻으려면 어떻게 해야 합니까?

 

친애하는,

누군가가 아래 링크를 확인하고 내 질문에 대답할 수 있습니까(orderopenprice가 열린 후 가장 높은 값을 얻을 수 있는 방법).

http://www.forexfactory.com/showthread.php?t=307937

 
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) );
 
WHRoeder :


다음은 위의 코드에 대한 몇 가지 오류입니다.

'(' - 예기치 않은 기능 정의 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); // 오픈 바. 내가 판매 위치를 얻은 막대에 대해 그 지점에서 가장 낮은 값을 계산합니다.

많은 감사

 
OOT를 받으려면 이미 주문을 완료했어야 합니다.Select
 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. 
    }
}
 
WHRoeder :
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
 

단지,

나는 어떻게 얻을 수 있는지 알고 싶습니다: (구매 또는 판매)에 대한 마지막 주문(개방 또는 닫기) 이전의 주문 가격() 일부 선언을 위해 추가했습니다.

감사합니다.

 
답변이 없습니다. 그냥 마지막 주문 전에 주문을 받아야 합니다. 매수 또는 매도는 오픈 주문 또는 마감 주문일지라도 도움을 기다리고 있습니다.
 
Hand :
나는 어떻게 얻을 수 있는지 알고 싶습니다: (구매 또는 판매)에 대한 마지막 주문(개방 또는 닫기) 이전의 주문 가격() 일부 선언을 위해 추가했습니다.
마지막 순서를 찾고 기억하고 다음 순서를 찾으십시오.
     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") ;}