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

 

전문가들은 자동 최적화 프로그램에서 시가 에 최적화하는 방법을 알려줍니다.

https://forum.mql4.com/en/42125

 
안녕하세요, 저는 고문을 작성하는 방법을 알아 내려고하는 초보자입니다.
"이전 마감 주문이 매수 후 손절매로 마감된 경우 0.1랏을 손절매 50으로 매도하고 테이크 프로프 50"을 작성하는 방법을 알려주세요)
 

전문가! 돕다! 그것을 구현하는 방법?


 int start() 
{
 bool OPEN= false ;

 условие 1 =х; //вычисление условия1
 условие 2 =y; //вычисление условия2
 
 if (условие 1 ==х)OPEN= true ;
 
 if (условие 2 ==y&&OPEN== true )
 OrderSend;

실행될 때까지 OPEN=true를 수정해야 합니다.
조건 2. 이 기간 동안 Condition1이 변경될 수 있습니다.

미리 감사드립니다!

 

시작을 넘어서 꺼내다

 bool OPEN= false ;
 
sergeev :

시작을 넘어서 꺼내다


정말 감사합니다! 그들이 말했듯이 독창적 인 모든 것은 간단합니다! 그리고 나는 하루 종일 머리를 긁적였습니다.
 

인사말! 버퍼 위 또는 아래에만 해당하는 첫 번째 막대( Quant_Bars )의 수를 계산할 때 내가 무엇을 잘못하고 있는지 말해주세요. 저것들. 표시기가 닫힌 막대(1) 위에 표시되면 막대 아래의 표시기로 이전 막대를 계산해야 하며(조건과 일치하지 않는 것은 제외) 반대 방향으로 이동하는 반대의 경우도 마찬가지입니다. 내 버전이 잘못된 값을 제공합니다.

어쩌면 누군가가 그것을하는 방법을 알고 있습니까?

 #property indicator_chart_window     
#property indicator_buffers 1
#property indicator_color1 Green
double step = 0.1 ;
double max = 0.2 ;

int n = 1 ;
double S;
double barA;
double barB;
double Bufer[];
int k,k1;
//---------------------------------
int init()
{
   SetIndexStyle ( 0 , DRAW_ARROW ,EMPTY, 0 , Green ); 
   SetIndexArrow ( 0 , 159 ); 
   SetIndexBuffer ( 0 , Bufer);
   return ( 0 );
}
//---------------------------------
int deinit() 
{
   return ( 0 );
}
//----------------------------------
int start()
{

 k1=k;
 for ( int i= Bars - 2 ; i>= 0 ; i--)  
    {
     if (i == Bars - 2 )
       {
         Bufer[i] = Low[i] - 10.0 * Point ;
         n = 1 ;
         S = step;
         barA = High[i];
         barB = Low[i];
       }
     else
       {
         if (Close[i] > barA)
           {
             barA = Close[i];
               if (n== 1 && S <= max - step)
                  { S = S + step; }
             k= 1 ;
           }          
         if (Close[i] < barB)
           {
            barB = Close[i];
               if (n == - 1 && S <= max - step)
                 { S = S + step;}
            k= 2 ;
           }
         if (n == 1 )
           { Bufer[i] = Bufer[i + 1 ] + S * (barA - (Bufer[i + 1 ]));}
       else
           { Bufer[i] = Bufer[i + 1 ] + S * (barB - (Bufer[i + 1 ]));}
      
       if ((Bufer[i+ 1 ] < Close[i + 1 ] && Bufer[i] > Close[i]) || (Bufer[i + 1 ] > Close[i + 1 ] && Bufer[i] < Close[i]))
          {
           S = step;
             if (n == 1 )
                {Bufer[i] = barA;}
             else
                {Bufer[i] = barB;}
           barB = Close[i];
           barA = Close[i];
           n = - 1 * n;
          }
       }
   }
    
//--------------------------Подсчитать бары:
   int num1 = 2 ;   // бар  
   int counted_bars = IndicatorCounted (); 
 //-----СЕЛЛ
if (Bufer[ 2 ]<Close[ 2 ] && Bufer[ 1 ]>Close[ 1 ])    
   {
     for ( i=num1; i<= Bars ; i++ )
        { 
           if (Bufer[i]<Close[i])
                                 
             { int Quant_Bars = Quant_Bars+i;}
           if (Bufer[i]>Close[i] && Bufer[i- 1 ]<Close[i- 1 ]) 
           break ;
         }
     Alert ( "Число баров= " ,Quant_Bars, "  counted_bars= " ,counted_bars, " бары= " , Bars );    
    }
    
 //-----БАЙ  
if (Bufer[ 2 ]>Close[ 2 ] && Bufer[ 1 ]<Close[ 1 ])     
   {
     for ( i=num1; i<= Bars ; i++ )
        { 
           if (Bufer[i]<Close[i])                     
            {Quant_Bars = Quant_Bars+i;}
           if (Bufer[i]>Close[i] && Bufer[i- 1 ]<Close[i- 1 ]) 
           break ;
         }
     Alert ( "Число баров= " ,Quant_Bars, "  counted_bars= " ,counted_bars, " бары= " , Bars );    
    }  

   return ( 0 );
}
 

문제,

왜 내 고문이 전체 예금을 조심스럽게 빼내고 거의 모든 거래가 수익성이 없을 때 신호의 "극성"이 변경될 때 동일한 빠르지만 이미 보증금이 증가하지 않는 이유는 무엇입니까? ))) 이론상으로 주문을 여는 방향으로만 오류와 같은 포인트가 동일합니까? 아니면 다른 것이 있습니까?

 
Maxaxa :

문제,

왜 내 고문이 전체 예금을 조심스럽게 빼내고 거의 모든 거래가 수익성이 없을 때 신호의 "극성"이 변경될 때 동일한 빠르지만 이미 보증금이 증가하지 않는 이유는 무엇입니까? ))) 이론상으로만 주문을 여는 방향으로만 오류와 같은 포인트가 동일한가요? 아니면 다른 것이 있습니까?

이것이 트레이딩 철학입니다.
 
Maxaxa :


다른 것이 있다
 
Solree :

안녕하세요.

주문 4개, 매수 2개, 매수 2개가 있습니다. 비유적으로 말해서 마을은 가격이 오르면 형성되지만 가격이 내리면 사는 것입니다. 구매가 생성되면 판매가 제거되고 그 반대의 경우도 마찬가지입니다. 첫 번째 마을의 티켓을 생성하거나 구매할 때 pos 변수에 저장됩니다. 4개의 댓글은 모두 "Aelit"입니다. 코드는 다음과 같습니다.

순서는 일반적으로 티켓으로 선택되지만 의견 비교가 통과하지 못하는 경우가 많습니다. 관심을 끌기 위해 나는 다른 Alert(OrderComment()); 로그는 "경고: Aelit[sl]"이었습니다. [sl]이(가) 무엇인가요? 모든 주문에 동일한 의견이 있기 때문입니까? 그렇다면 왜 내가 다른 사람들과 일치하지 않는 테스트에 대해 댓글을 달았을 때 같은 [sl]이 있었습니까? 주석으로 확인을 제거하면 로그에 OrderModify에 대한 티켓 오류가 포함됩니다. 처음에는 일종의 주문이 생성되기 전에 이 조건에 도달한 것으로 생각했지만 아니요, 그 당시에는 이미 주문이 있었고 티켓은 조건을 트리거하고 트리거하지 않은 경우 동일합니다. 그것을 이해하는 방법?

기적은 없습니다. 이 DC는 귀하의 의견에 자체적으로 추가합니다. StopLoss에 도달했을 때 주문이 마감되었습니다.

티켓으로 주문 선택을 잘못 구성했습니다. 이 선택을 사용하면 먼저 MODE_TRADES가 불필요 합니다. OrderSelect() 함수에 의해 생략됩니다.

둘째, 주문을 성공적으로 선택한 후에는 시장 주문 또는 마감된 주문 중에서 티켓에 대한 주문이 선택된 주문 배열을 확인하지 않습니다.

이렇게 하려면 주문을 선택한 후 마감 시간을 확인하고 0일 경우에만 시장 주문이 되고 그렇지 않으면 이미 마감된 주문 중에서 선택됩니다(거기에서 귀하의 의견에 추가)

사유: