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

 
Roger :

일반적으로 나는 이것을했고 두 개의 변수를 추가했습니다. 하나는 도달하려는 보증금 수준에 대한 것이고 두 번째는 삭제할 파일 수입니다. 한 번만 작동하므로 레벨을 다른 값으로 수정하거나 어드바이저를 다시 시작해야 합니다.
감사합니다. 지금 운전을 하고 있습니다. 아니면 테스터에서 실행하기에 적합하지 않습니까?
 
alex12 :
감사합니다. 지금 운전을 하고 있습니다. 아니면 테스터에서 실행하기에 적합하지 않습니까?

어떻게 확인할까요?
 
demlin :

모두를 환영합니다!

플랫을 결정하기 위한 일반 지표를 제안해 달라고 요청합니다. 미리 감사드립니다)))


직접 테스트하고 있습니다.

iCustom()을 통해 Expert Advisor에 쉽게 추가(연결)됩니다.

 
자동차 2대의 교차로를 위한 간단한 시스템.
Bai - 빠른 크로스가 느려집니다.
매도 - 빠른 크로스가 느려집니다.

폐쇄 - 반대 신호 또는 트롤. 각 위치를 열 때 stop = 50 포인트를 설정하도록 코드에서 변경해야 할 사항을 알려주시겠습니까?

 extern double Lots           =   0 ; // лот, если 0, то динамический
extern double RiskPercentage =   70 ; // % от депо на лот, если динамический
extern int     FastPer        =   4 ;
extern int     SlowPer        =   18 ;
extern int     magicnumber    = 777 ;
extern int     TrailingStop   =   20 ; 
extern bool    PolLots        = true;



int prevtime;
int ticket= 0 ;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----




   if (! IsDemo ())
    {
//     Print ("Эта версия только для демо-счетов");
//     return(0);
    }   


   if (Time[ 0 ] == prevtime)
   { 

       return ( 0 );
   }
   prevtime = Time[ 0 ];
   if (! IsTradeAllowed ()) 
     {
       prevtime = Time[ 1 ];
       return ( 0 );
     }




 int Ord= 0 ;
 double ClLot= 0 ;
int LotsCount= 0 ;
   int i= 0 ;  
   int total = OrdersTotal ();   
   for (i = 0 ; i <= total; i++) 
     {
       if (TrailingStop> 0 )  
       {                 
       OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
       if ( OrderMagicNumber () == magicnumber) 
         {
         ticket= OrderTicket (); 
         ClLot= OrderLots ();
         if ( OrderType ()==OP_BUY)
          {
           Ord= 1 ;
          }
         else
          {
           Ord= 2 ;
          }         
          LotsCount ++;
          TrailingStairs( OrderTicket (),TrailingStop);
         }
       }
      }
/*
 
     for(i = 0; i <= OrdersTotal(); i++) 
      {
       OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
       if(OrderMagicNumber() == magicnumber) 
         {
         ticket=OrderTicket(); 
         ClLot=OrderLots();
         if (OrderType()==OP_BUY)
          {
           Ord=1;
          }
         else
          {
           Ord=2;
          }
         }
      } 
*/     
bool SellOp=false;
bool BuyOp=false;

double MAFast1= NormalizeDouble ( iMA ( NULL , 0 ,FastPer, 0 , MODE_SMA , PRICE_CLOSE , 2 ), Digits );
double MAFast2= NormalizeDouble ( iMA ( NULL , 0 ,FastPer, 0 , MODE_SMA , PRICE_CLOSE , 1 ), Digits );
double MAFast3= NormalizeDouble ( iMA ( NULL , 0 ,FastPer, 0 , MODE_SMA , PRICE_CLOSE , 0 ), Digits );
double MASlow1= NormalizeDouble ( iMA ( NULL , 0 ,SlowPer, 0 , MODE_SMA , PRICE_CLOSE , 2 ), Digits );
double MASlow2= NormalizeDouble ( iMA ( NULL , 0 ,SlowPer, 0 , MODE_SMA , PRICE_CLOSE , 1 ), Digits );
double MASlow3= NormalizeDouble ( iMA ( NULL , 0 ,SlowPer, 0 , MODE_SMA , PRICE_CLOSE , 0 ), Digits );


      
if ((MAFast1<MASlow1)&&
    (MAFast2==MASlow2)&&
    (MAFast3>MASlow3))
{
 BuyOp=true;
}

if ((MAFast1>MASlow1)&&
    (MAFast2==MASlow2)&&
    (MAFast3<MASlow3))
{
 SellOp=true;
}



if (BuyOp)
 {
   if (Ord== 2 )
   {
     OrderClose (ticket,ClLot,Ask, 3 , Red );
   }
   if (Ord!= 1 )
   {
     OrderSend ( Symbol (),OP_BUY,Lot(),Ask, 3 , 0 , 0 , "MA_Buy" ,magicnumber, 0 , Green );
   }
 }

if (SellOp)
 {
   if (Ord== 1 )
   {
     OrderClose (ticket,ClLot,Bid, 3 , Green );
   }
   if (Ord!= 2 )
   {
     OrderSend ( Symbol (),OP_SELL,Lot(),Bid, 3 , 0 , 0 , "MA_Sell" ,magicnumber, 0 , Red );
   }
 }



   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
void TrailingStairs( int ticket, int trldistance)
   { 
     int Spred=Ask - Bid;
     if ( OrderType ()==OP_BUY)
      {
       if ((Bid- OrderOpenPrice ())>( Point *trldistance))
         {
           if ( OrderStopLoss ()<Bid- Point *trldistance || ( OrderStopLoss ()== 0 ))
            {
             OrderModify (ticket, OrderOpenPrice (),Bid- Point *trldistance, OrderTakeProfit (), 0 , Green );
             if (PolLots)
             if ( NormalizeDouble ( OrderLots ()/ 2 , 1 )> MarketInfo ( Symbol (), MODE_MINLOT))
               {
               OrderClose (ticket, NormalizeDouble ( OrderLots ()/ 2 , 1 ),Bid, 3 , Green );
               }
             else
               {
               OrderClose (ticket, OrderLots (),Bid, 3 , Green );
               }
            }
         }
       }
     else
       {
         if (( OrderOpenPrice ()-Ask)>( Point *trldistance))
          {
           if (( OrderStopLoss ()>(Ask+ Point *trldistance)) || ( OrderStopLoss ()== 0 ))
             {
               OrderModify ( OrderTicket (), OrderOpenPrice (),Ask+ Point *trldistance, OrderTakeProfit (), 0 , Red );
             if (PolLots)
             if ( NormalizeDouble ( OrderLots ()/ 2 , 1 )> MarketInfo ( Symbol (), MODE_MINLOT))
               {
               OrderClose (ticket, NormalizeDouble ( OrderLots ()/ 2 , 1 ),Ask, 3 , Green );
               }
             else
               {
               OrderClose (ticket, OrderLots (),Ask, 3 , Green );
               }
             }
          }
        }
    }
    
double Lot()
{
 double LotQ = Lots;

 if (Lots== 0 )
  {
   double margin = MarketInfo ( Symbol (), MODE_MARGINREQUIRED);
   double minLot = MarketInfo ( Symbol (), MODE_MINLOT);
   double maxLot = MarketInfo ( Symbol (), MODE_MAXLOT);
   double step =   MarketInfo ( Symbol (), MODE_LOTSTEP);
   double account = AccountFreeMargin ();
   
   double percentage = account*RiskPercentage/ 100 ;
   
   LotQ = MathRound (percentage/margin/step)*step;
   
   if (LotQ < minLot)
   {
      LotQ = minLot;
   }
   
   if (LotQ > maxLot)
   {
      LotQ = maxLot;
   }
  } 
   return (LotQ);
  }

 
Roman. :


직접 테스트하고 있습니다.

iCustom()을 통해 Expert Advisor에 쉽게 추가(연결)됩니다.

Expert Advisor에서 극도로 낮은 값과 매우 높은 값을 어떻게 결정하는지 궁금합니다. 실제로 차트의 한 로컬 섹션에서 0.3800(파란색 선)이 극단값이었고 임시 수정에 해당했으며 다음 로컬 섹션에서 이미 0.3041(녹색 선)이 극단값이 되어 반전을 표시했습니다...

그러나 아무 말도 하지 않은 첫 번째 로컬 영역(빨간색 선)에서 매우 낮은 값인 0.4596은 어떻습니까?

그리고 매우 낮은 지표 값이 정확히 무엇을 나타내는지, 즉 수정 또는 반전을 어떻게 결정합니까? 결국, 첫 번째 경우의 0.3800 값은 수정(녹색 세로선)을 나타내고 두 번째 경우 - 추세의 끝(빨간색 세로선)

그리고 마지막으로 - 그러한 국지적 극단값 - 그래프에서 십일조. 결국, 3-5시간 동안 가장 낮은 값이 있을 것이며 주어진 기간 동안 매우 낮을 것입니다. 지표의 극단값을 검색하기 위해 특정 기간을 설정하면 찾아보게 되지만... 이어지는 막대에서 선택한 기간을 벗어나면 지표값이 더욱 낮아지는(높은) 현상이 발생할 수 있습니다. ) 그러면 이 값은 이미 매우 낮을 것입니다(높음). 그러나 이전에 발견된 값으로 무엇을 해야 합니까? 또한, 고문은 이미 그것에 대해 결정을 내릴 것입니다 ...

하지만...


 
artmedia70 :

Expert Advisor에서 극도로 낮은 값과 매우 높은 값을 어떻게 결정하는지 궁금합니다. 실제로 차트의 한 로컬 섹션에서 0.3800(파란색 선)이 극단값이었고 임시 수정에 해당했으며 다음 로컬 섹션에서 이미 0.3041(녹색 선)이 극단값이 되어 반전을 표시했습니다...

그러나 아무 말도 하지 않은 첫 번째 로컬 영역(빨간색 선)에서 매우 낮은 값인 0.4596은 어떻습니까?

그리고 매우 낮은 지표 값이 정확히 무엇을 나타내는지, 즉 수정 또는 반전을 어떻게 결정합니까? 결국, 첫 번째 경우의 0.3800 값은 수정(녹색 세로선)을 나타내고 두 번째 경우 - 추세의 끝(빨간색 세로선)

그리고 마지막으로 - 그러한 국지적 극단값 - 그래프에서 십일조. 3-5시간 동안 가장 낮은 값이 있을 것이며 이 기간 동안 매우 낮을 것입니다. 지표의 극단값을 검색하기 위해 특정 기간을 설정하면 찾아보게 되지만... 이어지는 막대에서 선택한 기간을 벗어나면 지표값이 더욱 낮아지는(높은) 현상이 발생할 수 있습니다. ) 그러면 이 값은 이미 매우 낮을 것입니다(높음). 그러나 이전에 발견된 값으로 무엇을 해야 합니까? 또한, 고문은 이미 그것에 대해 결정을 내릴 것입니다 ...

하지만...





나는 이 지표를 추세 또는 플랫 전략, 즉 시장에 진입하기 위한 필터로 봅니다. 그의 증언에 대한 다음과 같은 해석이 얻어진다.

 double iVAR_1 = iCustom ( Symbol (),trend_period, "iVAR" , n, nBars, 0 , 1 );                     // расчет индикатора iVAR
   

0.5 미만의 지표 값은 시장의 추세 상태를 의미합니다.

iVAR_1 < 0.5 &&                                                             // тренд на основном ТФ   

매우 낮은 값은 종종 현재 추세의 끝(수정)에 선행합니다. 중요하지 않습니다. 후행은 여기에서 작동합니다(시장에 있을 때).


0.5 이상의 지표 값은 시장이 평평하다는 것을 의미합니다 -

iVAR_1 > 0.5 && 

매우 높은 값은 종종 중요한 추세의 시작보다 먼저 나타납니다. 아래를 참조하십시오. 이전 해석.

0.5 영역의 지표 값은 시장의 불확실한 상태를 의미합니다. 여기서 특정 "수준"의 들여쓰기를 사용할 수 있습니다(이것이 불필요하다는 것을 배제하지 않습니다. 즉, 0.5 값을 취하면 끝입니다). 더 낮은 x 및 더 높은 y 값 모두 0.5(기본 수준), 외부 변수로 구동하고 변수 n - 시작: 2 단계: 1 정지: 7 - 이뿐만 아니라 예를 들어 0.02 단위로 최적화 합니다. 불필요하지 않습니다. 저는 이것을 하고 있습니다. 결과를 곧 Avalanche 브랜치에 게시할 예정입니다(트렌딩 시스템입니다... :-))), Martin의 MM으로만... 그리고 그게 다에요... :- ))))).

 
Roman. :


나는 이 지표를 추세 또는 플랫 전략, 즉 시장에 진입하기 위한 필터로 봅니다. 그의 증언을 해석하면 이렇다.

0.5 미만의 지표 값은 시장의 추세 상태를 의미합니다.

매우 낮은 값은 종종 현재 추세의 끝(수정)에 선행합니다. 중요하지 않습니다. 후행은 여기에서 작동합니다(시장에 있을 때).


0.5 이상의 지표 값은 시장이 평평하다는 것을 의미합니다 -

매우 높은 값은 종종 중요한 추세의 시작보다 먼저 나타납니다. 아래를 참조하십시오. 이전 해석.

0.5 영역의 지표 값은 시장의 불확실한 상태를 의미합니다. 여기서 특정 "수준"의 들여쓰기를 사용할 수 있습니다(이것이 불필요하다는 것을 배제하지 않습니다. 즉, 0.5 값을 취하면 끝입니다). 더 낮은 x 및 더 높은 y 값 모두 0.5(기본 수준), 외부 변수로 구동하고 변수 n - 시작: 2 단계: 1 정지: 7 - 이뿐만 아니라 예를 들어 0.02 단위로 최적화 합니다. 불필요하지 않습니다. 저는 이것을 하고 있습니다. 결과를 곧 Avalanche 브랜치에 게시할 예정입니다(트렌딩 시스템입니다... :-))), Martin의 MM으로만... 그리고 그게 다에요... :- ))))).

나는 최적화를 좋아하지 않습니다. 본질은 적합합니다... 그리고 저는 제 두뇌의 매개변수를 최적화하지 않습니다... 저는 그들이 다양한 시장 조건에 필요한 매개변수를 선택하도록 하려고 노력합니다.

그래도 설명 감사합니다... :) 솔직히 말해서 위의 글은 칠면조를 향한 자갈이었습니다... :)

 

안녕하세요!

질문이 있습니다. EA에는 거래 결과를 csv 파일에 기록하는 기능이 있지만 EA 매개변수에서 자금 관리 시스템 옵션을 활성화/비활성화( TRUE/FALSE )할 때 발생하는 문제를 발견했습니다. 예를 들어 소스 파일을 컴파일한 직후 모든 것이 올바르게 작동하고 트랜잭션이 의도한 대로 파일에 기록됩니다. 아래 그림은 올바르게 기록된 데이터를 보여줍니다.

그런 다음 테스터에서 전문가 매개 변수의 자금 관리 시스템 옵션을 켜고 테스트를 실행하지만 데이터가 파일에 올바르게 기록되지 않습니다. 아래 그림은 비교를 위한 두 가지 옵션을 보여줍니다. 왼쪽은 올바르고(위와 같이) 오른쪽은 올바르지 않습니다.

나는 그것이 무엇인지 알아낼 수 없었지만 다음을 찾았습니다. 또한 자금 관리 시스템 옵션을 활성화/비활성화하고 테스트를 시작하기 전에 소스 파일을 다시 컴파일하면 모든 것이 올바르게 기록됩니다.

무엇이 문제일 수 있는지 말씀해 주십시오.

 
artmedia70 :

나는 최적화를 좋아하지 않는다. 본질은 적절하다. 그리고 나는 내 두뇌의 매개변수를 최적화하지 않는다... 나는 그들이 다양한 시장 조건에 필요한 매개변수를 선택하게 하려고 노력한다.

그래도 설명 감사합니다... :) 솔직히 말해서 위의 글은 칠면조를 향한 자갈이었습니다... :)


나는 ... 여기, 당신이 관심이 있다면, 그런 것 (예고편에서). 여기 (전체 스레드)도 참조하십시오 - 0.6 위/아래와 여기 (선택 페이지) 에 대한 해석이 있습니다 .

파일:
 
Roman. :


직접 테스트하고 있습니다.

iCustom()을 통해 Expert Advisor에 쉽게 추가(연결)됩니다.

감사합니다, 다운로드했습니다. 고문에서 테스트하겠습니다.
사유: