[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 628

 
IgorM :

매개변수가 없는 for 문? - 의미? 영원한 루프는 다르게 작성되며 두 번째는 어드바이저를 위한 전역 변수입니다. 터미널이 아니라 코드 맨 처음에 모든 함수와 start() 함수 앞에 설명되어 있습니다. ) 함수는 각 틱에서 호출됩니다 . 그런 다음 이 플래그를 이전 상태와 비교하려고 시도하지만 상태는 항상 false입니다.

손을 시도하기 시작했다면 코드 기반에서 기성 고문을 선택하고 시장 진입 조건을 자신의 것으로 변경하십시오. 더 빠를 것입니다.


비냉
그리고 어떤 목적으로 고문이 집착합니까?

즉, 매 틱마다 start() 함수가 실행됩니까? 그러면 사이클이 실제로 필요하지 않습니다.

 

MarkTrade :

즉, 매 틱마다 start() 함수가 실행됩니까? 그러면 사이클이 실제로 필요하지 않습니다.

https://book.mql4.com/en/programm/special
 

흥미롭게도 소녀들은 춤을 추고 있습니다 ... 그들은 합창을하고 노래를 부릅니다 ...

기능/조건/데이터를 추가/변경한 결과를 기반으로 테스트하고 테스트했으며 최적화 없이 수익성 및 감소 측면에서 다소 좋은 결과를 얻었습니다. 나는 전체 기록을 다시로드했고 배수가 시작되었습니다. no - 배수, 심지어는 - Big Drain ...

시세 내역을 다시 로드 하기 전에(테스트 전에 EURUSD의 전체 내역을 미리 로드 했으므로 만일을 대비하여 다시 로드했지만 2010년부터 어떤 이유로 인해 오류가 시뮬레이션과 같았습니다. ..) ... 그래서, 기록을 다시 로드하기 전에 고문은 침착하게, 음, 거의 침착하게 다양한 백 및 포워드 테스트를 견뎌냈고, 3년 기록에서 성공적으로 거래되었으며, 따옴표를 다시 로드한 직후에 시작되었습니다. 특정 드로다운을 한 달에 두세 번 발행하고 테스트 시작부터 두세 달 이상 연장되지 않습니다.... 조건은 변경하지 않고 스토리 자체만...

히스토리가 서버에서 다시 쓰여지고 있다는 것이 밝혀졌습니다. 옛날부터 소련에서는 어땠습니까?

이 모든 것이 무슨 소용이 있습니까?

 
artmedia70 :

흥미롭게도 소녀들은 춤을 추고 있습니다 ... 그들은 합창단에서 일어나 노래를 부릅니다 ...

기능/조건/데이터를 추가/변경한 결과를 기반으로 테스트하고 테스트했으며 최적화 없이 수익성 및 감소 측면에서 다소 좋은 결과를 얻었습니다. 나는 전체 기록을 다시로드했고 배수가 시작되었습니다. 아니 - 배수가 아니라도 - Big Drain ...

시세 내역을 다시 로드 하기 전에(테스트 전에 EURUSD의 전체 내역을 미리 로드 했으므로 만일을 대비하여 다시 로드했지만 2010년부터 어떤 이유로 인해 오류가 시뮬레이션과 같았습니다. ..) ... 그래서, 기록을 다시 로드하기 전에 고문은 침착하게, 음, 거의 침착하게 다양한 백 및 포워드 테스트를 견뎌냈고, 3년 기록에서 성공적으로 거래되었으며, 따옴표를 다시 로드한 직후에 시작되었습니다. 특정 드로다운을 한 달에 두세 번 발행하고 테스트 시작부터 두세 달 이상 연장되지 않습니다.... 조건은 변경하지 않고 스토리 자체만...

히스토리가 서버에서 다시 쓰여지고 있다는 것이 밝혀졌습니다. 옛날부터 소련에서는 어땠습니까?

이 모든 것이 무슨 소용이 있습니까?

아무것도 덮어쓰지 않음 - Expert Advisors에서 여러 번 확인했습니다. 동일한 조건에서 결과가 동일합니다. MT가 여전히 서버에서 연결 해제되지 않은 경우 MT를 수행해야 할 때입니다(불필요하게 다시 연결하지 않음) - 매번 테스터를 시작하거나 최적화하면 MT는 서버에서 스프레드(등)를 수신 합니다. 따라서 스프레드가 1핍일 때 모든 것이 매우 훌륭할 것이지만 다른 시간에 4-5핍으로 증가하면 Expert Advisor가 병합되기 시작할 것입니다. 당연히 최악의 조건에서 최적화하는 것이 더 낫습니다. 그들은 실제 거래에서 더 가능성이 높습니다.

 

여기 약간 변경되었습니다.

глобальные переменные (в самом начале, под #property link )
bool flagchange = false ;
bool PrevFlag = false ;
bool flag = false ; 

int start()
  {
   //---вход в позицию
   //int    spread=MarketInfo("EURUSD",MODE_SPREAD);
   int Slippage = 3 ;
   int i = 0 ;
   double lt = getLots() ; // минимальный лот
   RefreshRates();
   int total = OrdersTotal();   
   int ticket = - 1 ;
      flag = GetEma();
         if (PrevFlag != flag) // проверим, сигнал ема изменился?
         {flagchange = true ;       // изменился!
         PrevFlag = flag;}
         else flagchange = false ;
         if (flagchange == True)
         {       
           int Total=OrdersTotal(); // есть открытые позиции?
           if (Total> 0 )
            {
               for (i=Total- 1 ; i>= 0 ; i--) 
              {
                 if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)== true ) 
                  {
                     if (OrderType()==OP_BUY || OrderType()==OP_SELL) // Только Buy и Sell
                     {
                       if (OrderType()==OP_BUY) 
                         bool Result=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,CLR_NONE);
                       else
                         Result=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,CLR_NONE);
                     if (Result!= true ) 
                        {          
                          Print( "LastError = " ,GetLastError()); 
                         }              
                      }
                   }
                 else 
                   if (flag == true ) OrderSend(Symbol(),OP_BUY,lt,Ask,Slippage,Bid - sl * Point, 0 , "Buy" , 888 , 0 ,Blue);
                   else OrderSend(Symbol(),OP_SELL,lt,Bid,Slippage,Ask + sl * Point, 0 , "Seel" , 888 , 0 ,Red);
              }
           }                                            
        }
     
   return ( 0 );
  }
       /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// ///
   bool GetEma() {
   //----Получим значение EMA1
       int ma1= iMA(Symbol(),PERIOD_H1,ema1, 0 , 1 , 6 , 0 );
   //----Получим значение EMA2   
       int ma2= iMA( "" ,PERIOD_H1,ema2, 0 , 1 , 6 , 0 ); 
       if (ma1>ma2) return (True);
       else return (False);}
   /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// //  
         // посчитаем разтер лота
   double getLots() 
        {
                 double minlot = MarketInfo(Symbol(), MODE_MINLOT);
                 int round = MathAbs(MathLog(minlot) / MathLog( 10.0 )) + 0.5 ;
                 double lot = minlot;
//---- select lot size
                 lot = NormalizeDouble(AccountFreeMargin() * Risk / 1000.0 , round);
                 if (AccountFreeMargin() < lot * MarketInfo(Symbol(), MODE_MARGINREQUIRED)) 
                        {
                                lot = NormalizeDouble(AccountFreeMargin() / MarketInfo(Symbol(), MODE_MARGINREQUIRED), round);
                        }
                 if (lot < minlot) lot = minlot;
                 double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
                 if (lot > maxlot) lot = maxlot;
//---- return lot size
   return (lot);
        }

아직 거래하지 않습니다 :(

 
chief2000 :

덮어쓰지 않음 - Expert Advisors에서 여러 번 확인했습니다. 동일한 조건에서 결과는 동일합니다. MT가 여전히 서버에서 연결 해제되지 않은 경우 MT를 수행해야 할 때입니다(불필요하게 다시 연결하지 않음) - 매번 테스터를 시작하거나 최적화하면 MT는 서버에서 스프레드(등)를 수신합니다. 따라서 스프레드가 1핍일 때 모든 것이 매우 훌륭할 것이지만 다른 시간에 4-5핍으로 증가하면 Expert Advisor가 병합되기 시작할 것입니다. 당연히 최악의 조건에서 최적화하는 것이 더 낫습니다. 그들은 실제 거래에서 더 가능성이 높습니다.

이 모든 것이 오랫동안 명확하고 이해할 수 있습니다 ... 그러나 오늘은 토요일입니다 ... 오늘 스프레드가 바뀔 수 있습니까? 아니요... 아마도 지금은 최소한일 것입니다. 즉. 더 나은 조건... 하지만 아니요... 어떤 스프레드에도 불구하고 고문은 잘 거래되었습니다... 히스토리를 다시 로드하기 전에.
 
artmedia70 :
이 모든 것이 오랫동안 명확하고 이해할 수 있습니다 ... 그러나 오늘은 토요일입니다 ... 오늘 스프레드가 바뀔 수 있습니까? 아니요... 아마도 지금은 최소한일 것입니다. 즉. 더 나은 조건... 하지만 아니요... 어떤 스프레드에도 불구하고 고문은 잘 거래되었습니다... 히스토리를 다시 로드하기 전에.
자, 차트에서 매매 과정을 보면 어떤 점이 달라졌을까요?
 
Techno :
자, 차트에서 거래되는 과정을 보면 무엇이 바뀌었나요?
자기자본 감소율은 몇 배나 증가했습니다... 포지션을 열 수 있는 조건이 더 많은 것으로 나타났습니다. 그것은 실제로 더 많은 위치를 엽니 다 ...
 
MarkTrade :

여기 약간 변경되었습니다.

아직 거래하지 않습니다 :(

조건/논리 어딘가에 실수가 있어야 합니다.
MetaEditor에는 디버거가 없기 때문에 다음을 수행합니다.

코드 끝에 추가

주석 ( "플래그= ", 플래그, " PrevFlag=", PrevFlag, ......);

반환(0);

}

저속 테스터의 시각화 모드에서 변경 사항과 변경 사항을 확인하십시오.

 
artmedia70 :
자기자본 적자는 몇 배나 늘었습니다... 포지션을 열 수 있는 조건이 더 많은 것으로 나타났습니다. 그것은 실제로 더 많은 위치를 엽니 다 ...
내 말은 테스트 차트가 아니라 시세 차트, 대략 오프닝, 클로징에 어떤 변화가 있습니까?
사유: