[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 212

 

이제 함수에서 반환된 내용이 명확하지 않습니다.

반환(OrdOpenTimeBuy);

 
Roger :

이제 함수에서 반환된 내용이 명확하지 않습니다.

반환(OrdOpenTimeBuy);

그럼 더 좋아질까요?

 //=========== OrdTimeBuy_b(int MAGIC) ===============================================================
//  Функция возвращает время открытия последнего рыночного Buy-ордера, принадлежащего MAGIC или 777 
//---------------------------------------------------------------------------------------------------
datetime OrdTimeBuy_b( int MAGIC)
 {
   string SMB= Symbol ();
   datetime OrdOpenTimeBuy= 0 ;
   int i;
   for (i= 0 ;i< OrdersTotal ();i++)
   {
     if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true)
     {
       if ( OrderSymbol ()==SMB)
       {
         if ( OrderMagicNumber ()==MAGIC || OrderMagicNumber ()== 777 )
         {
           if ( OrderType ()==OP_BUY)
           {
             if (OrdOpenTimeBuy< OrderOpenTime ())
             {
              OrdOpenTimeBuy= OrderOpenTime ();
             }  
           }  
         }  
       }          
     }
   }
   if (OrdOpenTimeBuy== 0 ) return ( 0 );
   return (OrdOpenTimeBuy);
 }
//=====================================================================================================


//===========  Локальная низинка  =================================================================
   double LowestPoint_b( int MAGIC)
   {  
     datetime OrdOpenTimeBuy=OrdTimeBuy_b(MAGIC);  
     int ShiftBuy= 0 ;
     double LowestPoint= 0 ;
     if (OrdOpenTimeBuy!= 0 )
     {  
      ShiftBuy= iBarShift ( NULL , PERIOD_M1 ,OrdOpenTimeBuy,true);
      LowestPoint= iLow ( NULL , PERIOD_M1 , iLowest ( NULL , PERIOD_M1 ,MODE_LOW,ShiftBuy, 0 ));
     } 
     return (LowestPoint);
   }  
//=================================================================================================
 
nemo811 :

그럼 더 좋아질까요?


네, 그럴 것입니다.
 
Roger :
세르게예프 :

덕분에.

이 오류를 수정했지만 어드바이저는 여전히 버그가 있습니다. 계속 파헤쳐봅시다 :)

 
nemo811 :

덕분에.

이 오류를 수정했지만 어드바이저는 여전히 버그가 있습니다. 계속 파헤쳐봅시다 :)


짝수인가요? metaeditor.exe 파일이 삭제된 줄 알았는데 수동으로 오류를 확인했습니다.

이것이 고문이라면 확실히 작동하지 않을 것입니다. 코드에 시작 기능이 없습니다.

 

내가 파고 든 것이 있습니다.

이 코드를 작성했습니다:

   RefreshRates ();
   bool ticket2=false;
   if (st_TrStop> 0 && SchSellStop777_b()> 0 ) {
   double LowestPoint=LowestPoint_b(MAGIC);
   double ee= 0 ;
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--) { //Начало цикла
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {WriteError(i);}
     else { //начало работы с выбранным ордером
     if ( OrderSymbol ()==SMB && OrderMagicNumber ()==MAGIC) {
     if ( OrderType ()==OP_BUY) { //находится вверху, едет вниз  
     Last_OrderOpBuy(MAGIC);
     if (((Ask-(st_BU+ad.Spred+ 1 )* Point )>= OrderOpenPrice ()) ||
        ((Ask-(st_TrStop- 1 -ad.Spred)* Point )>=LowestPoint)) {

     if ((Ask-(st_BU+ad.Spred+ 1 )* Point )>= OrderOpenPrice ())
      {
       Price_SS= NormalizeDouble ( OrderOpenPrice ()+(ad.Spred+ 1 )* Point , Digits );
      }
     else
      { 
       Price_SS= NormalizeDouble (LowestPoint- 1 * Point , Digits );     
      }  

     if (ChastZakr)
      {
       if (SchBuy> 1 )
        {  
         OrderClose (OrdTicketBuy, OrderLots (), MarketInfo ( OrderSymbol (), MODE_BID),Proskalz, CLR_NONE );
         Alert (SMB, ": произведено частичное закрытие Buy-позиции, тикет: " ,OrdTicketBuy, "." );
         ee=SchBuyLots- OrderLots ();
        }   
       else
        {  
         if (SchBuyLots+SchBuyLots777>MinLot)
          { 
           OrderClose (OrdTicketBuy, NormalizeDouble ( OrderLots ()/ 2 , 2 ), MarketInfo ( OrderSymbol (), MODE_BID),Proskalz, CLR_NONE );
           Alert (SMB, ": произведено частичное закрытие Buy-ордера, тикет: " ,OrdTicketBuy, "." );
           ee=SchBuyLots- NormalizeDouble ( OrderLots ()/ 2 , 2 );
          }  
        }  
      }
     else
      {   
       ee=SchBuyLots;
      }

      DeleteOtlozhMAGIC(MAGIC);
      DeleteOtlozh777();
      ticket2= OrderSend ( Symbol (),OP_SELLSTOP,ee,Price_SS,Proskalz, 0 , 0 , "MAGIC_" + MAGIC,MAGIC, 0 );
         if (ticket2!= 0 && ticket2!=- 1 ) {
           Alert (SMB, ": установлен траловый SellStop." );
           Print (SMB, ": установлен траловый SellStop." );
         }
         if (ticket2== 0 || ticket2==- 1 ) {
          GLE= GetLastError ();
          ED=ErrorDescription(GLE);
           Alert (SMB, ": ошибка №" ,GLE, " установки тралового SellStop." );
           Alert (SMB, ": описание ошибки - " ,ED);
           Print (SMB, ": ошибка №" ,GLE, " установки тралового SellStop." ); 
           Print (SMB, ": описание ошибки - " ,ED);
         }
       }       
      }       
     }  
    }  
   }  
  }
 

그는 버기입니다. 그러나 다음과 같은 경우:

     if (((Ask-(st_BU+ad.Spred+ 1 )* Point )>= OrderOpenPrice ()) ||
        ((Ask-(st_TrStop- 1 -ad.Spred)* Point )>=LowestPoint)) {

...LowestPoint 대신 특정 숫자를 넣으십시오. 모든 것이 시계처럼 작동합니다.

LowestPoint에 대한 검색은 위의 게시물에 나와 있습니다.

도와주세요. 그렇지 않으면 이틀째 땅을 파헤쳤습니다.

미리 감사드립니다.

 
sergeev :

짝수인가요? metaeditor.exe 파일이 삭제된 줄 알았는데 수동으로 오류를 확인했습니다.

이것이 고문이라면 확실히 작동하지 않을 것입니다. 코드에 시작 기능이 없습니다.

당신은 매우 세심하지만 그것에 대해 나는 당신에게 감사합니다.

나는 코드의 흥미로운 부분만 제공합니다. 전체 고문을 배치하면 질문을 잃을 위험이 있습니다. :)

덕분에.

 
-1 값을 확인하지 않습니다.
ShiftBuy
 
MACD 전용 ihighest 와 같은 기능이 있다고 알려주세요.
 
CLAIN :
MACD 전용 ihighest와 같은 기능이 있다고 알려주세요.

나는 그것을 보지 못했지만 당신은 쓸 수 있습니다 ... 이것은 현재를 계산하지 않고 마지막 10 바에 대한 마스크의 메인 라인의 최대 값에 대해 어떻게 될 것입니까?

 double Hi ()
{ int i,j; H= 0 ;
while (i<= 10 )
{ if (H< iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN,i+ 1 )) 
H= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN,i+ 1 );
i++;}
return (H);
}