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

 

안녕, 말해봐.

나는 첫 번째 막대의 최고점과 동일한 기록의 최고점을 찾고 High_i 변수에서 발견된 막대의 인덱스를 기억합니다.

다음과 같이 :

 highr=High[i];
      High_i= 0 ;
       for (j=i+ 3 ;j<=i+m;j++)
         {
         if (j> Bars - 1 ) break ;
         
         if (!ok1)
            {
             if ( MathAbs (High[j]-highr)  <= n* Point )
               {
               
               High_i = j;


이제 이전과 이후의 세 막대의 최고값이 발견된 막대의 최고값보다 작아야 하는지 확인합니다.

이것을 루프로 작성해야 합니다.

 if (High[High_i]>High[High_i- 3 ]&&High[High_i]>High[High_i- 2 ]&&High[High_i]>High[High_i- 1 ]
   && High[High_i]>High[High_i+ 3 ]&&High[High_i]>High[High_i+ 2 ]&&High[High_i]>High[High_i+ 1 ])

한편으로 나는 이렇게 확인하려고 노력한다.

 for (jl=High_i;jl<=High_i+ 3 ;jl++) 
    {
     // if (High_i!=0 );
       
      if ( High[High_i]>High[jl])
          {
               cnt1++;
               if (cnt1>= 3 )
                  {
                  ok1= true ;
                 BuyBuffer[i]=highr+ 5 * Point ;
                  }
               }
            }

도와주세요, 제발.




	          
 
tatianati :
이제 이전과 이후의 세 막대의 최고값이 발견된 막대의 최고값보다 작아야 하는지 확인합니다.

아마도 다음과 같이:

 bool Status_Successful = true ;

for ( int x=(High_i- 3 ); x<=(High_i+ 3 ); x++) {
   if (x==High_i) {
       continue ;
   }
   if (High[x]>=High[High_i]) {
      Status_Successful = false ;
       break ;
   }
}


if (Status_Successful== true ) {
   ....
}
 
atztek :
아마도 다음과 같습니다.



감사 합니다. 작동합니다.

그러나 다음과 같이 막대 수를 늘린 후:

 for ( int x=(High_i- 7 ); x<=(High_i+ 7 ); x++)

일어나다

'ta_v1_05.mq4' 의 범위를 벗어난 배열(174,11)

174번째 줄, 다음과 같습니다.

   if (High [x ]>=High[High_i])

수정하는 방법을 알려주세요.

 
x가 자연수인지 0인지 확신합니까? high_i = 예를 들어 6이면 x = -1이고 High[-1]은 이미 문제입니다. (x < 0)이 계속되는지 확인하는 173행에 추가할 수 있습니다.
 
tatianati

danik : x가 자연수인지 0인지 확신합니까? high_i = 예를 들어 6이면 x = -1이고 High[-1]은 이미 문제입니다. (x < 0)이 계속되는지 확인하는 173행에 추가할 수 있습니다.
3개의 막대에 대해 이러한 "확인"은 다음과 같습니다.
       for (j=i+ 3 ;j<=i+m;j++)

다른 값의 경우 모든 곳에서 변경해야 합니다.
이것으로 시작할 수 있습니다. 그런 다음 이 문제를 해결하거나 수정해야 할 다른 것이 있는지 보세요.
 
안녕 얘야 제발 말해줘 주문을 마감하는 기능이 있는데 어떤 이유로 주문만 마감되지 않아 캔트가 무엇인지 이해할 수 없다
 void CloseOrders( int otype)
    {
       int ClosePrice;
      
       if (otype == OP_BUY) ClosePrice=Bid;
       if (otype == OP_SELL) ClosePrice=Ask;
    
       
       int total = OrdersTotal ();
       for ( int i = total- 1 ; i >= 0 ; i--)
      {    
         if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
         { 
           if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic && OrderType() == otype)
           OrderClose(OrderTicket(),OrderLots(),ClosePrice,Slippage,Yellow);
         }
      }
 
lufer :
안녕 얘야 제발 말해줘 주문을 마감하는 기능이 있는데 어떤 이유로 주문만 마감되지 않아 캔트가 무엇인지 이해할 수 없다

가격은 정수일 수 없습니다!

 int ClosePrice;
 
TarasBY :

가격은 정수일 수 없습니다!

아 맞다!! 감사해요!!!
 
포럼 회원 여러분, 코드에서 오류를 찾도록 도와주세요. EUR\USD 및 GBP\USD에 대한 ZeroLag MACD 표시기의 데이터를 기반으로 두 줄을 그리는 것 같지만 아무 일도 일어나지 않습니다. 다음은 코드입니다.
 #property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 DarkBlue
#property indicator_width1 1
#property indicator_width2 1
//+------------------------------------------------------------------+

extern string ExtParam1= "EURUSD" ;
extern string ExtParam2= "GBPUSD" ;
extern int FastEMA= 12 ;
extern int SlowEMA= 24 ;
extern int SignalEMA= 9 ;

//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle( 0 , DRAW_LINE );
SetIndexBuffer ( 0 ,ExtMapBuffer1);
SetIndexLabel( 0 ,ExtParam1); 

SetIndexStyle( 1 , DRAW_LINE );
SetIndexBuffer ( 1 ,ExtMapBuffer2);
SetIndexLabel( 1 ,ExtParam2); 
//----
return ( 0 );
}
//+------------------------------------------------------------------+
int start()
{
int counted_bars = IndicatorCounted();
if (counted_bars< 0 ) return (- 1 );
if (counted_bars> 0 ) counted_bars --; 
int limit= Bars -IndicatorCounted();
int bar;
for (bar= 0 ; bar<limit; bar++)
ExtMapBuffer1[bar]= iCustom (ExtParam1, Period (), "ZeroLag MACD" ,FastEMA,SlowEMA,SignalEMA,iBarShift(ExtParam1, 0 ,Time[bar], false ));
ExtMapBuffer2[bar]= iCustom (ExtParam2, Period (), "ZeroLag MACD" ,FastEMA,SlowEMA,SignalEMA,iBarShift(ExtParam2, 0 ,Time[bar], false ));
return ( 0 );
}  
 
ASZmyrov :
포럼 회원 여러분, 코드에서 오류를 찾도록 도와주세요. EUR\USD 및 GBP\USD에 대한 ZeroLag MACD 표시기의 데이터를 기반으로 두 줄을 그리는 것 같지만 아무 일도 일어나지 않습니다. 다음은 코드입니다.

IndicatorCounted()가 작동하지 않는다는 소문이 있습니다. 과거에서 현재까지 표시기를 계산하는 것이 훨씬 정확하며 코드에 몇 가지 오류가 더 있습니다.

추신: ZeroLag MACD 자체도 새 가상 머신 에 "정렬"되어야 합니다.

파일: