오류, 버그, 질문 - 페이지 1005

 
ns_k :

안녕하세요!

그리고 표시기 버퍼 는 표시기 시작 사이에 값을 저장합니까, 아니면 내 터미널에서 관찰된 일부 결함입니까?

지표를 만든 다음 계산 알고리즘을 주석 처리하고 컴파일을 클릭했습니다. 모든 값은 차트에 남아 있습니다. 글쎄, 나는 아마도 버퍼 값이 업데이트되도록 차트에 칠면조를 다시 던져야 할 필요가 있다고 생각합니다. 누락 된 계산주기와 여전히 동일한 값으로 던집니다. 나는 그것을 제거하기 위해 터미널을 다시 시작해야했습니다.

의견을 부탁합니다.

고맙습니다!

이미 계산된 값이 버퍼에 남아있는 조건이 아직 있는 것 같습니다. 이러한 조건이 정확히 무엇인지 파악하지 못했습니다. 터미널을 다시 시작한 후 문제가 사라졌습니다. 따라서 실제로 서비스에 응용 프로그램을 작성하지 않습니다.

일반적으로 이것은 버그가 아니라 기능일까요?

고맙습니다!

 
ns_k :

이미 계산된 값이 버퍼에 남아있는 조건이 아직 있는 것 같습니다. 이러한 조건이 정확히 무엇인지 파악하지 못했습니다. 터미널을 다시 시작한 후 문제가 사라졌습니다. 따라서 실제로 서비스에 응용 프로그램을 작성하지 않습니다.

일반적으로 이것은 버그가 아니라 기능일까요?

고맙습니다!

채우기 전이나 초기화 중에 배열 값을 0으로 만들기만 하면 됩니다.

 ArrayInitialize (buffer_data, EMPTY_VALUE );
 
ns_k :

이미 계산된 값이 버퍼에 남아있는 조건이 아직 있는 것 같습니다. 이러한 조건이 정확히 무엇인지 파악하지 못했습니다. 터미널을 다시 시작한 후 문제가 사라졌습니다. 따라서 실제로 서비스에 응용 프로그램을 작성하지 않습니다.

일반적으로 이것은 버그가 아니라 기능일까요?

고맙습니다!

값을 재설정해야 합니다.
 
tol64 :

채우기 전이나 초기화 중에 배열 값을 0으로 만들기만 하면 됩니다.

감사해요!!!
 

오른쪽 버튼으로 호출되는 컨텍스트 메뉴에 사용자 지정 표시기 가 있는 별도의 항목이 있으면 좋을 것입니다.

고맙습니다!

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

다른 질문 부탁드립니다 :)

차트 창이 아닌 지표 창에 주석을 표시하려면 어떻게 합니까?

고맙습니다!

 
ns_k :

차트 창이 아닌 지표 창에 주석을 표시하려면 어떻게 합니까?

이 동작은 의도된 것이 아닙니다. 정말 필요한 경우 개체를 사용합니다.
 

안녕하세요!

가능 하면 표시기 속성 창을 비모달로 만드는 것이 좋습니다 .

고맙습니다!

 
ns_k :

안녕하세요!

가능 하면 표시기 속성 창을 비모달로 만드는 것이 좋습니다 .

고맙습니다!

그리고 적용 버튼을 추가합니다. 즉, 값을 변경하고 Accept 버튼을 누르면 창을 닫지 않고 변경 사항을 볼 수 있습니다. 훨씬 더 편리할 것입니다.

글쎄, 이미 십만 번째 - 속성 창의 크기를 조정하는 기능.

PS 서비스 데스크에 쓰기.

 

말그대로 제가 멍청한건지 이해가 안가네요.

 int OnCalculate ( const int rates_total,       // size of input time series
                 const int prev_calculated,   // bars handled in previous call
                 const datetime & time[],     // Time
                 const double & open[],       // Open
                 const double & high[],       // High
                 const double & low[],         // Low
                 const double & close[],       // Close
                 const long & tick_volume[],   // Tick Volume
                 const long & volume[],       // Real Volume
                 const int & spread[]         // Spread
                 )

  {
   
   
   
   doDrawIndicator(gSymbols[ 0 ],rates_total,g1ThermB);


//Comment(rates_total);
   return (rates_total);
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction ( const MqlTradeTransaction &trans,
                         const MqlTradeRequest &request,
                         const MqlTradeResult &result)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int doDrawIndicator( string xSymbol, int xRatesTotal, double &xBuffer[]) //,double &xPrice[],double &xBuffer[])
  {
   double l1Close[]; // , l2Close[];
   datetime lTime[];
   datetime lEnd,lStart;
   int copied;
   ArrayInitialize (xBuffer, 0 );
   lEnd= TimeCurrent ();
   lStart=( TimeCurrent ()/ 86400 )* 86400 + 3600 ;

   copied= CopyTime (xSymbol, Period (),lStart,lEnd,lTime);
   if (copied==- 1 ){ Print ( "Can't copy time" , __FUNCSIG__ ); return ( 0 );}
   copied= CopyClose (xSymbol, Period (),lStart,lEnd,l1Close);
   if (copied==- 1 ){ Print ( "Ждите...1" ); return ( 0 );}

   sThermometer lT;
   // Print("rates_total=",rates_total);
   //Comment(xSymbol);
   Comment (copied);
   g1RM= new CRangeManager( 1 , 0.2 , 20 ,xSymbol);
 
   for ( int i= 0 ;i<copied;i++)
     {
      lT=g1RM.getStateByValue(l1Close[copied-i- 1 ]);
       if (gThermRange==Up && lT.cTemperature.State< 7 || gThermRange==Down && lT.cTemperature.State> 6 )
        {
         xBuffer[xRatesTotal-i- 1 ]=lT.cTemperature.Temperature;
        }
       else
        {
         xBuffer[xRatesTotal-i- 1 ]= 0 ;
        }
     }

     
   delete g1RM;
   return ( 1 );

  }

표시기가 업데이트되지 않습니다. 나는 항상 왼쪽 구석에 739를 봅니다. 그리고 컴파일을 클릭하자마자 칠면조가 업데이트됩니다. 코드의 오류는 어디에 있습니까?

고맙습니다!