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

 
Uladzimir Izerski :

뭐라고요?

아무도 내 질문에 대답할 수 없습니다 ?

그리고 마스터 할 것이 무엇입니까? OnInit의 모든 것을 별도의 함수로 옮기고 MyOnInit로 둡니다. OnInit에서 MyOnInit를 호출하고 OnChartEvent에서 입력 필드를 변경한 후 호출합니다.

이것은 기본이며 다른 것이 필요할 수 있습니다. 시장에 MACD가 0보다 높거나 낮은 조건에 따라 막대 또는 양초를 그리는 무료 지표가 있습니다. 그러나 차트를 선으로 전환하면 필요한 버퍼 수가 이미 변경되고 있는 것입니다. 이 방법으로 해결책을 찾았습니다.

 
Uladzimir Izerski :

이미 코드를 게시했습니다.

내가 바보라면 누군가는 프로가 되어야 한다. 내가 그것을 보지 않는 한.

답을 찾기 위한 당신의 노력을 받아들입니다. 여기에 더 깊은 이해가 있습니다. 저것들. 개발자 수준에서.


코드는 미쳤지만 그것이 나를 위해 일한 유일한 방법이었습니다 ... 내 컴퓨터는 이제 정말 많이로드됩니다 ...

 //+------------------------------------------------------------------+
//|                                                      Probe_2.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                                 https://mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link        "https://mql5.com"
#property description "The MA "
#property version    "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots    1
//--- plot MA1
#property indicator_label1    "MA 1"

#property indicator_type1    DRAW_LINE
#property indicator_color1    clrDarkOrange
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1


//--- input parameters
extern int PBB= 10 ;   //  период МА
//--- indicator buffers
double          BufferMA1[];
//--- global variables
int             period_ma1;
int             period_max;

int             handle_ma1;
string sn,sPBB;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {

   sPBB= IntegerToString (PBB);
   if ( ObjectFind ( 0 , "P2edit" )!= 0 )
     {
       ObjectCreate ( 0 , "P2edit" , OBJ_EDIT , 0 , 0 , 0 );
       ObjectSetInteger ( 0 , "P2edit" , OBJPROP_XDISTANCE , 300 );
       ObjectSetInteger ( 0 , "P2edit" , OBJPROP_YDISTANCE , 1 );
       ObjectSetInteger ( 0 , "P2edit" , OBJPROP_XSIZE , 70 );
       ObjectSetInteger ( 0 , "P2edit" , OBJPROP_YSIZE , 40 );
       ObjectSetInteger ( 0 , "P2edit" , OBJPROP_SELECTABLE , false );
       ObjectSetInteger ( 0 , "P2edit" , OBJPROP_BGCOLOR , clrBlack );
       ObjectSetString ( 0 , "P2edit" , OBJPROP_TEXT ,sPBB);
       ObjectSetInteger ( 0 , "P2edit" , OBJPROP_FONTSIZE , 16 );
       ObjectSetInteger ( 0 , "P2edit" , OBJPROP_COLOR , clrGray );
       ObjectSetInteger ( 0 , "P2edit" , OBJPROP_ALIGN , ALIGN_CENTER );
       ObjectSetInteger ( 0 , "P2edit" , OBJPROP_READONLY , false );
     }
//=================//
//
   else
     {
       string get_text= ObjectGetString ( 0 , "P2edit" , OBJPROP_TEXT );
      PBB=( int ) StringToInteger (get_text);
     }
//
//=================//

//--- set global variables
   period_ma1= int (PBB< 1 ? 1 : PBB);
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,BufferMA1, INDICATOR_DATA );
   ArraySetAsSeries (BufferMA1, true );
   IndicatorSetInteger ( INDICATOR_DIGITS , Digits ());
//--- create handle
   ResetLastError ();

   Comment ( "Должна соответствовать зеленой, а равна= " ,period_ma1);

   handle_ma1= iMA ( Symbol (), PERIOD_CURRENT ,period_ma1, 0 , 1 , PRICE_CLOSE );
   if (handle_ma1== INVALID_HANDLE )
     {
       Print ( "The iMA(" ,( string )period_ma1, ") object was not created: Error " , GetLastError ());
       return INIT_FAILED ;
     }
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id, const long &lparam, const double &dparam, const string &sparam)
  {
   if (id== CHARTEVENT_OBJECT_ENDEDIT )
     {
       string obj_name=sparam;
       if ( StringCompare (obj_name, "P2edit" )== 0 )
        {
         string novPBB= NULL ;
         if ( ObjectGetString ( 0 ,obj_name, OBJPROP_TEXT , 0 ,novPBB))
           {
             if ( StringCompare (novPBB,sPBB, false ))
              {
               PBB=( int ) StringToInteger (novPBB);
               ObjectSetInteger ( 0 , "P2edit" , OBJPROP_BGCOLOR , clrBlack );
               ObjectSetInteger ( 0 , "P2edit" , OBJPROP_COLOR , clrLime );
              }
           }

         //=================//
         //
         OnInit ();
         //
         //=================//

         Print ( TimeLocal (), "   " , ChartSetSymbolPeriod ( 0 , Symbol (), PERIOD_CURRENT ), "  " ,BufferMA1[ 0 ]);
        }
     }
   return ;
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//    Пробовал от сюда запускать.
//   sPBB=IntegerToString(PBB);
//   if(ObjectFind(0,"P2edit")!=0)
//    {
//       ObjectCreate(0,"P2edit",OBJ_EDIT,0,0,0);
//       ObjectSetInteger(0,"P2edit",OBJPROP_XDISTANCE,300);
//       ObjectSetInteger(0,"P2edit",OBJPROP_YDISTANCE,1);
//       ObjectSetInteger(0,"P2edit",OBJPROP_XSIZE,70);
//       ObjectSetInteger(0,"P2edit",OBJPROP_YSIZE,40);
//       ObjectSetInteger(0,"P2edit",OBJPROP_SELECTABLE,false);
//       ObjectSetInteger(0,"P2edit",OBJPROP_BGCOLOR,clrBlack);
//       ObjectSetString (0,"P2edit",OBJPROP_TEXT,sPBB);
//       ObjectSetInteger(0,"P2edit",OBJPROP_FONTSIZE,16);
//       ObjectSetInteger(0,"P2edit",OBJPROP_COLOR,clrGray);
//       ObjectSetInteger(0,"P2edit",OBJPROP_ALIGN,ALIGN_CENTER);
//       ObjectSetInteger(0,"P2edit",OBJPROP_READONLY,false);
//    } 
//   
//   if(PBB==0) PBB=(int)StringToInteger(sPBB);
// 
//   if(PBB<5) period_ma1=5; else  period_ma1=PBB;
//   if(PBB>300) period_ma1=300; else  period_ma1=PBB;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

   ArraySetAsSeries (close, true ); //--- Установка массивов буферов как таймсерий
//--- Проверка количества доступных баров
   if (rates_total< fmax (period_max, 4 )) return 0 ;
//--- Проверка и расчёт количества просчитываемых баров
   int limit=rates_total-prev_calculated;
   if (limit> 1 )
     {
      limit=rates_total- 2 ;
       ArrayInitialize (BufferMA1, EMPTY_VALUE );
     }

//--- Подготовка данных
   int count=(limit> 0 ? rates_total : 1 ),copied= 0 ;
   copied= CopyBuffer (handle_ma1, 0 , 0 ,count,BufferMA1);
   if (copied!=count) return 0 ;

//Comment("ошибка = ");

//--- возвращаемое значение prev_calculated для следующего вызова
   return (rates_total);
  }
//+------------------------------------------------------------------+
//|            deinit                                                |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   int i;
   int obj_total= ObjectsTotal ( 0 , 0 ,- 1 );
   for (i=obj_total- 1 ;i>= 0 ;i--)
     {
      sn= ObjectName ( 0 ,i, 0 ,- 1 );
       if ( ObjectFind ( 0 ,sn)== 0 )
        {
         if ( StringFind (sn, "P2edit" , 0 )== 0 ) ObjectDelete ( 0 ,sn);
        }
     }

   Comment ( "" );
   return ;
  }
//+------------------------------------------------------------------+
 
Vladimir Pastushak :

노력에 감사드립니다.

행운을 빕니다.

감사합니다. 솔직히.

 
Vladimir Pastushak :

통과 후 에이전트가 잠을 자고 나머지 바쁜 에이전트가 작업을 마칠 때까지 기다린다는 것을 올바르게 이해하고 있습니까?


네. 때때로 이 간단한 무료 코어는 실제 틱에 대해 최적화할 때 오랜 시간이 걸립니다.

개발자가 이 문제를 해결할 수 있을까요?

 

피드의 게시물에 대한 링크를 얻을 수 있는 방법이 없습니다. 예를 들어, 책갈피.

 
fxsaber :

피드의 게시물에 대한 링크를 얻을 수 있는 방법이 없습니다. 예를 들어, 책갈피.

https://www.mql5.com/ru/users/fxsaber#profileMessage_6131695 - 맞나요?
 

예, 하지만 링크를 얻을 수 있는 일반적인 방법이 없습니다.

 
   long a= 132 ;
   if (a>- 9223372036854775808 )
     { Print ( "а прошла проверку на  > INT64_MIN" );}
   else { Print ( "а НЕ прошла проверку на  > INT64_MIN" );}

   if (a<- 9223372036854775808 )
     { Print ( "а прошла проверку на < INT64_MIN" );}
   else { Print ( "а НЕ прошла проверку на < INT64_MIN" );}

   if (a!=- 9223372036854775808 )
     { Print ( "а прошла проверку на != INT64_MIN" );}
   else { Print ( "а НЕ прошла проверку на != INT64_MIN" );}

결과

 2019.05 . 14 11 : 49 : 13.574 check (EURUSD,M5)       а НЕ прошла проверку на  > INT64_MIN
2019.05 . 14 11 : 49 : 13.574 check (EURUSD,M5)       а прошла проверку на < INT64_MIN
2019.05 . 14 11 : 49 : 13.574 check (EURUSD,M5)       а прошла проверку на != INT64_MIN


그래야만 하지 않을까요?

 

안녕하세요.

최신 빌드에서 이 오류가 나타나기 시작했습니다.

 2019.05 . 14 13 : 03 : 50.526 EURUSD: history data load error
2019.05 . 14 13 : 03 : 50.528 EURUSD,M5: history cache allocated for 101454 bars and contains 74274 bars from 2018.01 . 02 09 : 00 to 2018.12 . 31 20 : 55
2019.05 . 14 13 : 03 : 50.528 EURUSD,M5: history begins from 2018.01 . 02 09 : 00
2019.05 . 14 13 : 03 : 50.533 history error 9 in undefined function
2019.05 . 14 13 : 03 : 50.533 stopped on 0 % of testing interval with error '03 EURUSD'


몇시에.

그게 무슨 뜻이야?

 
Alexey Klenov :

결과

그래야만 합니까?

더 깊이 파고 들면 다음과 같은 몇 가지 모순이 있습니다.
 void OnStart ()
{
         Print ( typename ( LONG_MIN              ),             LONG_MIN ); //(1)
         Print ( typename ( - 9223372036854775808 ), - 9223372036854775808 ); //(2)
         Print ( typename ( - 9223372036854775807 ), - 9223372036854775807 ); //(3)

         Print ( typename ( INT_MIN               ),              INT_MIN ); //(4)
         Print ( typename ( - 2147483648           ), - 2147483648           ); //(5)
         Print ( typename ( - 2147483647           ), - 2147483647           ); //(6)
}

결과:

긴 -9223372036854775808
울롱 9223372036854775808
긴 -9223372036854775807

int-2147483648
-2147483648
int-2147483647

(1)(2)(3)과 (4)(5)(6)의 근본적인 차이점은 각각 무엇입니까?