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

 

네 말 뜻은:

 double LastOpenPrice( int ordertype)    { 
double OpenPrice;                            
datetime lastOpen;    
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)       
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
    && OrderMagicNumber () == MagicNumberLong || MagicNumberShort // my magic number
    && OrderSymbol () == Symbol ()     // and my pair.
    && OrderType () == ordertype       
    && OrderOpenTime () > lastOpen )  {        
             if (OpenPrice = OrderOpenPrice ()&&OpenPrice!= 0 )          
               break ;          }
               return (OpenPrice);} //  
제발 내가 당신의 sulution를 볼 필요가
 
Hand :

제발 내가 당신의 sulution를 볼 필요가

아니요 . . . 당신은 배울 필요가 있습니다. . . 변경을 위해 스스로 노력을 기울이고 책( https://book.mql4.com// )을 읽으십시오. 설명서( https://docs.mql4.com// )를 읽으십시오. . . 장기 및 정렬 거래에 대해 서로 다른 매직 번호를 갖는 것은 어리석은 일이며 필요 하지 않습니다. . .
 

아마도 이런 식으로 작동할 것입니다.

if ( ( (LastOpenPrice(OP_SELL)+ 0.0030 )< MarketInfo ( "EURUSD" ,MODE_BID) )&&( LastOpenPrice(OP_SELL)>0) ) <--------------- 0+0.0030 =0.0030<Bid: TRUE // 작동할 것 같습니다.
{ BUY( "EURUSD" ,B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1, "만약 (

 
Hand :

아마도 이런 식으로 작동할 것입니다.

if ( ( (LastOpenPrice(OP_SELL)+ 0.0030 )< MarketInfo ( "EURUSD" ,MODE_BID) )&&( LastOpenPrice(OP_SELL)>0) ) <--------------- 0+0.0030 =0.0030<Bid: TRUE // 작동할 것 같습니다.
{ BUY( "EURUSD" ,B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1, "만약 (

내가 "당신의 게임 계획은 무엇입니까?"라고 물을 때 진심이야. 다시 말해서, 당신의 전략은 무엇입니까?

마지막 시가 가 없을 때 거래를 하고 싶지 않다면 그렇게 고려할 수 있습니까?

if(LastOpenPrice(OP_SELL) <=0) { 반환? 무엇을? -----판매의 경우

if(LastOpenPrice(OP_BUY) <=0) { return?...또는 무엇을 할까요? ------ 구매 케이스

그런 다음 나머지 코드가 진행됩니다....

이와 같은 오류로 인해 코드의 여기 저기에 "구멍을 채울" 수 없습니다. 당신의 전략이 망가진 것 같습니다.

이러한 종류의 오류는 더 높은 수준에서 전략을 수정할 필요가 있음을 "알려줍니다" ---> 거래할 때(그리고 하지 말아야 할 때). 이에 대한 답, 아이디어 등이 있습니까?

 
Hand :

네 말 뜻은:

제발 내가 당신의 sulution를 볼 필요가

나는 이것에 대해 언급하는 것을 완전히 잊어버렸지만 이것은 관련된 것 전체와 영원을 위해 가장 중요 합니다. 당신이 MY=당신의 솔루션을 보고 싶다는 생각을 하는 것은 완전히 미친 짓입니다. 나는 그렇지 않습니다.

당신은 지구 어디에 있습니까? 날 뭘로 봐요? 당신의 수호천사, 무당, 개인 지니 등?

당신이 당신의 머리에 무엇을 집어넣든, 나는 당신의 정보를 위해 정말로 도울 수 없습니다.

 

얘들아,

아래 기능 을 확인하십시오(정확한 경우). 이 조건을 수행해야 합니다.

if ( lastOpenedOpenPriceBuy()-lastOpenedOpenPriceSell() )>=0.0060

{ 뭔가 해 }

 double lastOpenedOpenPriceBuy()
  {
   double ret = 0 ;
   datetime time= 0 ;
   for ( int i= 0 ; i< OrdersTotal (); i++) {
       OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
       if ( OrderType ()==OP_BUY && OrderOpenTime ()>time) {
         time = OrderOpenTime ();
         ret = OrderOpenPrice ();
      }
   }
   
   return (ret);
  }


double lastOpenedOpenPriceSell()
  {
   double ret = 0 ;
   datetime time= 0 ;
   for ( int i= 0 ; i< OrdersTotal (); i++) {
       OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
       if ( OrderType ()==OP_SELL && OrderOpenTime ()>time) {
         time = OrderOpenTime ();
         ret = OrderOpenPrice ();
      }
   }
   
   return (ret);
  }



double lastClosedClosePrice()
  {
   double ret = 0 ;
   datetime time = 0 ;
   for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--) {
       OrderSelect (i, SELECT_BY_POS, MODE_HISTORY);
       if ( OrderType ()< 2 && OrderCloseTime ()>time) {
         time = OrderCloseTime ();
         ret = OrderClosePrice ();
      }
   }
   
   return (ret);
  }



double beforelastClosedClosePrice()
  {
   double ret = 0 ;
   double ret2 = 0 ;
   datetime time = 0 ;
   for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--) {
       OrderSelect (i, SELECT_BY_POS, MODE_HISTORY);
       if ( OrderType ()< 2 && OrderCloseTime ()>time) {
         time = OrderCloseTime ();
         ret = ret2;
         ret2 = OrderClosePrice ();
      }
   }
   if (ret== 0 ) {
      ret = ret2;
   }
   
   return (ret);
  }
 

내가 첫 번째 것을 도울 수 있고 나머지는 다른 사람들이 올 수 있습니다.

 <-------------------- can consider to use if(OrdersTotal()>0..then proceed  ---------------->
double lastOpenedOpenPriceBuy()  <----- what a name...confusing, maybe.
  {
   double ret = 0 ;
   datetime time= 0 ; <---- can consider setting Lowest Limit to -9999, at least -1, rather than 0.  
   for ( int i= 0 ; i< OrdersTotal (); i++) { <----- do consider counting down.
      OrderSelect (i, SELECT_BY_POS, MODE_TRADES); <------ This returns some BOOLEAN result.then what? -----(?)
      if ( OrderType ()==OP_BUY && OrderOpenTime ()>time) { <------ This can return runtime OrderSelect ERR bec. of above line (?). ------ (!) 
         time = OrderOpenTime (); 
         ret = OrderOpenPrice ();
      }
   }
   
   return (ret); <------ return double as UnNormalized price. you sure about this?
  }

 

점에 유의하시기 바랍니다:

내가 이 조건을 붙일 때

 if (  ((lastOpenedOpenPriceBuy()- 0.0030 )> MarketInfo ( "EURUSD" ,MODE_BID))  ) 
   {  SELL( "EURUSD" ,S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1, "if (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )" ) ;}

작동하지 않지만 조건을 하나 더 추가하면

 if (  (lastOpenedOpenPriceBuy()> 0 )&&((lastOpenedOpenPriceBuy()- 0.0030 )> MarketInfo ( "EURUSD" ,MODE_BID))  ) 
   {  SELL( "EURUSD" ,S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1, "if (  ( (lastOpenedOpenPriceBuy()-0.0030)>MarketInfo(EURUSD,MODE_BID) )  )" ) ;}
괜찮아 보입니다 (lastOpenedOpenPriceBuy()> 0 )
 
<-------------------- if(OrdersTotal()>0..then 계속 진행 -------------- 사용을 고려할 수 있습니다. -->
double lastOpenedOpenPriceBuy() <----- 이름이 뭔가... 혼란스럽습니다.
{ 
   이중 ret = 0 ;
날짜 시간 시간= 0 ; <---- 0이 아닌 -1 이상인 -9999로 최저 한도를 설정할 수 있습니다. 주문 오픈 시간이 <= 0일 수 없습니다 .
   for ( int i= 0 ; i< OrdersTotal (); i++) { <----- 카운트다운을 고려하십시오. 다른 것은 없습니다.
      주문 선택(i, SELECT_BY_POS, MODE_TRADES ); <------ 이것은 일부 BOOLEAN 결과를 반환합니다. 그러면 어떻게 될까요? -----(?) 루프에 주문이 존재해야 하는 경우 주문이 존재할 때 OrderSelect는 오류를 일으키지 않습니다. 루프에 없으면 이 행은 실행되지 않습니다.
      if ( OrderType ()==OP_BUY && OrderOpenTime ()>time) { <------ 이것은 런타임 OrderSelect ERR bec를 반환할 수 있습니다. 위의 줄(?) ------ (!) 마지막 줄과 같은 이유입니다.
시간 = OrderOpenTime (); ret = 주문오픈가격
(); } } 리턴 (ret); <------ 이중 반환 비정규화 가격으로. 당신은 이것에 대해 확신합니까? 첫 번째 줄에서 이미 ret = 0을 정의합니다. }
 

보이 오 보이, 당신은 단순히 놀랍습니다. esp를 지적해 주셔서 감사합니다.

 주문 선택(i, SELECT_BY_POS, MODE_TRADES ); <------ 루프에 주문이 존재해야 하는 경우 주문이 존재할 때 OrderSelect는 오류를 일으키지 않습니다. 루프에 없으면 이 행은 실행되지 않습니다.

나는 당신의 이 라인에 주문이 없을 때 루프 밖으로 사라지고 주문이 있을 때 다시 나타나는 Houdini 능력이 있다고 생각합니다.