조언자 쓰는 법 배우기... - 페이지 7

 

그런데도 세 가지 기준에 따라 정지 상태를 확인하고 있습니까?

  //проверяем если есть поза, стоит стоп и не стоит БУ        
       if ( ( OrdersTotal ( ) > 0 ) & & ( OrderStopLoss ( ) ! = 0 ) & & ( OrderStopLoss ( ) ! = SLBU ) )
            ModifySLinBU ( ) ;   //передаем управление в ф-ю установки БУ

그 쯤

  //проверяем если есть поза, стоит стоп и не стоит БУ        
       if ( ( OrdersTotal ( ) > 0 ) & & ( OrderStopLoss ( ) ! = 0 & & SLBU ) )
            ModifySLinBU ( ) ;   //передаем управление в ф-ю установки БУ
 

말해봐, 그것은 그 시대의 "교대"와 같은 포럼에서 여기에서 실행되었습니까?

내가 설명합니다 .. 예를 들어 H4 양초는 모든 DC에 대해 다르기 때문에 이해할 수 있습니다. 서버 시간이 다릅니다. 최대, 최소, 열기, 닫기 등 출력에서 이 양초의 다른 특성을 얻기 위해 이 양초를 제 시간에 어떻게 이동할 수 있습니까?

이 모든 것이 무엇을 위한 것입니까? 내 DC에는 동일한 양초가 있고 내가 고문과 함께 작업한 전략이 작동하지만 차트 불일치 오류가 많이 있습니다. 내가 DC의 문제를 이해하는 한 포럼 참가자가 분석할 때 이것은 환영받지 못합니다!)

그러나 MetaQuotes 기록을 다운로드할 때 오류는 없지만 양초는 시각적 테스트를 해도 약간의 신호를 제공하고 EA 테스트는 나쁜 결과를 제공합니다.

따라서 나는이 질문에 대해 생각했습니다. 양초의 "이동"이 내 DC 또는 다른 것과 일치하도록 ..

 

DC 오류를 줄이고 모델링 품질을 향상시키는 방법은 무엇입니까?



EUR/0.1-10랏/1년/300-322000

 

주문 변경을 올바르게 처리하고 있는지 확인합니까? 여기에 잠재적인 함정은 무엇입니까?

 //+------------------------------------------------------------------+
//| Открытие позиции на покупку
//+------------------------------------------------------------------+
void OpenBuy ( ) 
  { 
   RefreshRates ( ) ;
      if ( ( OrdersTotal ( ) = = 0 ) & & ( Ask = = Enter ) ) //бъем до упора эту цену
         {
            if ( IsTradeContextBusy ( ) = = false )
               {
                  OrderSend ( Symbol ( ) , OP_BUY , Lot , Enter , Slippage , 0 , 0 , 0 , MAGIC , 0 , clOpenBuy ) ;
                  if ( OrdersTotal ( ) > 0 )
                     {
                        Modify = false ;                              //флаг установки SL и TP - не установлен
                        ModifySL ( ) ;                        
                     }
                  else Print ( "Ошибка установки ордера BAY по цене " , OrderOpenPrice ( ) , " код ошибки =" + GetLastError ( ) ) ;
               }  
         }              
      if ( UseSound ) PlaySound ( NameFileSound ) ;
  } 
//+------------------------------------------------------------------+
//| Открытие позиции на продажу
//+------------------------------------------------------------------+
void OpenSell ( ) 
  { 
   RefreshRates ( ) ;
      if ( ( OrdersTotal ( ) = = 0 ) & & ( Bid = = Enter ) )  //бъем до упора эту цену
         { 
            if ( IsTradeContextBusy ( ) = = false )
               {
                  OrderSend ( Symbol ( ) , OP_SELL , Lot , Enter , Slippage , 0 , 0 , 0 , MAGIC , 0 , clOpenSell ) ;
                  if ( OrdersTotal ( ) > 0 )
                     {
                        Modify = false ;                              //флаг установки SL и TP - не установлен
                        ModifySL ( ) ;
                     }   
                  else Print ( "Ошибка установки ордера SELL по цене " , OrderOpenPrice ( ) , " код ошибки =" + GetLastError ( ) ) ;
               }
         }
      if ( UseSound ) PlaySound ( NameFileSound ) ;        
  } 
//+------------------------------------------------------------------+
//| Модификация ордера на установку SL и TP                                                                 |
//+------------------------------------------------------------------+
void ModifySL ( )
   {
      if ( OrderSelect ( 0 , SELECT_BY_POS ) = = true ) // Если есть открытый ордер
         {       
            if ( OrderType ( ) = = OP_BUY )
               {
                  StopL = SLB ( ) ; 
                  TakeP = TPB ( ) ;
                  Modify = OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , StopL , TakeP , 0 , Red ) ;
                  if ( Modify = = false ) Print ( "Ошибка изменения ордера #" , OrderTicket ( ) , " при попытке установить СТОП " , StopL , ". Текущая цена- " , Bid , ", код ошибки =" + GetLastError ( ) ) ;
               }
            else
               {
                  StopL = SLS ( ) ; 
                  TakeP = TPS ( ) ;
                  Modify = OrderModify ( OrderTicket ( ) , OrderOpenPrice ( ) , StopL , TakeP , 0 , Red ) ;
                  if ( Modify = = false ) Print ( "Ошибка изменения ордера #" , OrderTicket ( ) , " при попытке установить СТОП " , StopL , ". Текущая цена- " , Ask , ", код ошибки =" + GetLastError ( ) ) ;
               }
         }     
   }

그런 다음 int Start() 수정 확인이 있습니다 ...

 //+------------------------------------------------------------------+
//| Проверка открытого оредра на установку SL,TP и установка SL,TP
//+------------------------------------------------------------------+
    if ( ( OrdersTotal ( ) > 0 ) & & ( Modify = = false ) ) ModifySL ( ) ;  //SL и TP - не установлен
 

도와 줘서 고맙다!)

이제 다른 악기에서 동시에 어드바이저를 실행하는 방법을 배우고 있습니다...

이 옵션이 어드바이저가 실행 중인 도구에 속하는 주문 을 찾는 데 적합합니까?

 for ( int i = 1 ; i < = OrdersTotal ( ) ; i + + )            //Цикл по всем ордерам,..
   {                                            //отражённым в терминале
       if ( OrderSelect ( i - 1 , SELECT_BY_POS ) = = true ) //Если есть следующий         
         {
           if ( OrderSymbol ( ) = = Symbol ( ) )
             {
               if ( OrderType ( ) = = OP_BUY )
               {
                 . . . 
               }   
               else
               {
                 . . .
               }

             }
         } 
   }                                          //Конец тела цикла
사유: