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") ;}