포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 661

 
berezhnuy :

안녕하세요! 이 문제를 해결하는 방법을 알려주세요.

나는 올빼미에서 사용합니다:

올빼미는 모든 진드기에서 작동합니다. 그렇지 않으면 주요 조건이 충족되지 않습니다. iMAOnArray는 막대 20개만 사용하지만 테스터에서는 올빼미가 아주 오랫동안 생각합니다. 나는 그것을 시작 블록에서 설정하고 호출합니다.

이 pribluda의 사용을 최적화하여 각 틱에서 주요 상태를 확인하고 테스터가 느려지지 않도록 하는 방법. 그리고 나서 2시간이 걸리는 1년 동안 4시간 차트에서 올빼미 테스트를 했습니다. 얼마나 많은 최적화가 수행되어야 하는지 상상하기 두렵습니다)))


코드 없이는 아무도 당신을 도울 수 없습니다
 

기본적으로 전체 코드는 다음과 같습니다.

 //------- Внешние параметры советника -----------------------------------------+
extern string _P_Expert = "---------- Параметры советника" ;
extern int       Magic      = 777 ;                 // Магический номер позиций
extern double    SL= 10 ;                             // Размер лося
extern double    TP= 10000 ;                           // Размер профита 
extern string      ____= "Параметры блока MoneyManagement" ;
extern bool       MoneyManagement= false ;
extern double     Lots          = 0.01 ;  
extern int        MarginPercent= 3 ;
//------- Параметры трала -----------------------------------------------------+
extern string      ______= "Параметры блока TrallingStop" ;
extern bool       TralSimple= true ;
//------- Характкристики баров ------------------------------------------------+

//------- Подключение внешних модулей -----------------------------------------+
#include <stdlib.mqh>
#include <stderror.mqh>

int start()
{

   total= OrdersTotal ();
   Comment ( LotsCounting() );
//+=================================================================================+
   // Проверка средств
   if (AccountFreeMargin()<( 1000 *Lots)){
       Print ( "We have no money. Free Margin = " , AccountFreeMargin());   
       return ( 0 );  
   }
//===========================  Открытие позиций  ===================================+ 
//==========================================================================================+
//=============================   Center_array      ========================================+
      double Center_array[50];
      int    h,limit=ArraySize(Center_array);
      ArraySetAsSeries(Center_array,true);
      for(h=0; h<limit; h++)
         Center_array[h]=iRSI(NULL,0,14,0,h);
      double MA_1 =iMAOnArray(Center_array,0,14,0,MODE_SMA,1);
      double rs_1 = iRSI(NULL,0,14,0,1);
      
      if (Last_Max1!=Max1){
      if (Close[1]>Close[2] && rs_1<MA_1){
               lots=LotsCounting();
               OrderSend(Symbol(),OP_BUYSTOP,lots,(Max1),0,SL_buy,TP_buy, "Покупаем ",Magic,Expiration,Blue);
               Last_Max1=Max1;
               PlaySound("ok.wav");
               {
               Print ("При открытии произошла ошибка ", GetLastError());
               return;
               }
            }
         }
       }

//==========================================================================================+
       if (delet) DeleteOppositeOrders( "" ,- 1 ,Magic);
//==========================================================================================+
//=======================================TrallingStop=======================================+
       for ( int v = OrdersTotal () - 1 ; v >= 0 ; v -- ){       
         if ( OrderSelect (v, SELECT_BY_POS, MODE_TRADES)){           
             if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic){ 
               //+=================================================================================+
               ///+================================Обычный трал ====================================+
               if (TralSimple){
                   //+=================================================================================+
                   if (OrderType() == OP_BUY){
                     if ((Bid-OrderOpenPrice()) > ( Point *TrailingStop)){
                         if (OrderStopLoss() < Bid- Point *TrailingStop || (OrderStopLoss()== 0 )){
                           OrderModify(OrderTicket(),OrderOpenPrice(),Bid- Point *TrailingStop,OrderTakeProfit(), 0 ,Blue);  
                        }
                     }
                  }
               }                                   
            }   // Symbol()  
         } // select
      } //total 
         //============================== Конец блока закрытия ==============================+
 return ( 0 );
}
//==========================================================================================+

Center_errey stray를 제거하면 테스트는 1분 이내에 통과합니다. 이 조건을 코드에 포함시켜도 2시간 동안 테스트 통과

 
berezhnuy :

기본적으로 전체 코드는 다음과 같습니다.

Center_errey stray를 제거하면 테스트는 1분 이내에 통과합니다. 이 조건을 코드에 포함하면 테스트에 2시간이 걸립니다.


지표를 만들어 보셨나요?
 

0,1,2 값을 가질 수 있는 변수 A가 있습니다.

이러한 비교가 동일합니까?

if(A=0 || A=1){do} 및 if(A != 2){do}

 
evillive :

0,1,2 값을 가질 수 있는 변수 A가 있습니다.

이러한 비교가 동일합니까?

if(A=0 || A=1){do} 및 if(A != 2){do}

변수가 열거형(enum) 유형이면 표현식이 동일합니다.
 
evillive :

0,1,2 값을 가질 수 있는 변수 A가 있습니다.

이러한 비교가 동일합니까?

if(A=0 || A=1){do} 및 if(A != 2){do}

아니요, "A=0"도 "A=1"도 비교 대상이 아니기 때문입니다.

그러나 비교는 "A == 0"과 "A == 1"입니다.

 
simpleton :

아니요, "A=0"도 "A=1"도 비교 대상이 아니기 때문입니다.

그러나 비교는 "A == 0"과 "A == 1"입니다.

+1! :)
 
berezhnuy :

기본적으로 전체 코드는 다음과 같습니다.

Center_errey stray를 제거하면 테스트는 1분 이내에 통과합니다. 이 조건을 코드에 포함시켜도 2시간 동안 테스트 통과

조건에 따르면 재계산 및 확인은 모든 눈금 이 아니라 새 막대가 나타날 때만 관련이 있습니다.

따라서 다음과 같은 적절한 기능을 적용하는 것이 좋습니다.

 bool NevBar(){
   static int PrevTime= 0 ;
   if (PrevTime==Time[ 0 ]) return ( false );
   PrevTime=Time[ 0 ];
   return ( true );}

Center_errey가 나타날 때만 실행하십시오.

"쓰레기"를 버릴 수도 있습니다. 그러나 원칙적으로 속도에는 영향을 미치지 않습니다.

또한 코드에 중대한 실수 가 있습니다. 여백이 없으면 전체 코드를 취소합니다. 그러나 트롤은 어떻습니까? ... 비록 ... 아마도 이것은 주석에서 이해하는 것처럼 이것이 코드의 일부일 뿐이라는 사실 때문일 것입니다.

 
simpleton :

아니요, "A=0"도 "A=1"도 비교 대상이 아니기 때문입니다.

그러나 비교는 "A == 0"과 "A == 1"입니다.


자콧))))


나만 MQL로 작성하지 않았지만 공식적으로는 문제가 있습니다(:

 
evillive :

자콧))))


나만 MQL로 작성하지 않았지만 공식적으로는 문제가 있습니다(:

형식적으로는 아니오입니다. 아직 NULL이 있을 수 있기 때문입니다.