Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 473

 
Kutuzov :

Hatalarla ilgili yardım!

mql4 referansından bir örneğe dayanarak kendime bir danışman yapmaya karar verdim. Ama uv. her zaman bazı hatalar veriyor, bir haftadır onun için endişeleniyorum, hiçbir şey çıkmıyor.

Bak, bana neyin yanlış olduğunu söyle, parantezlere ek olarak bir şeyler çıkarılabilir veya değiştirilebilir.

Hatalar:

'}' - beklenmeyen program sonu uzman.mq4 218 3

'{' - dengesiz parantezler uzman.mq4 23 2


bu yüzden hatalarda yazılanları çevirmeye çalışın. bence bu, hatanın nedenini bulmanın en kolay yolu

bu başlangıçta ne yapar?

 #property indicator_level1 20 // Задаём верхний уровень                             
#property indicator_level2 80 // Задаём нижний уровень 

bir uzmanın var, hindi değil.

 DPeriod,       // "Redline" индикатора StochRSI.mq4 
 DPeriod= Bid ;   // Запрашивем значение "Redline"

tür neden ayarlanmadı?

   return ;       // Выход из start()

kapanış parantez nerede?

 };

Ve bu haber nedir?

örnekte nerede yazıldığını göster?

 bool Ans = false ,   // Ответ сервера после закрытия
bool Cls_B= false ,

Neden sonunda noktalı virgül değil de virgül var? neden aynı şeyi iki kez yazıyorsun?

şöyle bir virgül koyun:

 bool Ans = false ,   // Ответ сервера после закрытия
 Cls_B= false , // Критерий для закрытия Buy
 Cls_S= false , // Критерий для закрытия Sell
 Opn_B= false , // Критерий для открытия Buy
 Opn_S= false; // Критерий для открытия Sell

ne:

[ 1 ] Close

Daha fazla bakmadım, yoruldum,

genel olarak - hataları suçlayacak bir şey yok. sizin dikkatsizliğinizden ortaya çıkıyorlar. Yardımı tekrar okumanız ve videoyu izlemeniz ve bu dilde nasıl programlanacağına dair makaleyi okumanız gerekir.

 
Vladon :

Hataları düzelttim... ancak test ederken " Özel göstergeler test edilemiyor" diyor.

İlk başta belirtilen gösterge arabelleğinden şüphe ettim, ancak her ikisini de sırayla belirterek hata tam olarak kaybolmadı. Yine bir yeri mi karıştırdın?

Dosyalar:
expert_2.mq4  9 kb
 
Programlama gurusu yardım). Danışmanı test ettim ve kampanyayı bitirdim, ) danışman test cihazını açtığımda ve botum çalışmaya başlar başlamaz, test cihazı donuyor ve her şey çok uzun bir süre hareketsiz kalıyor, test cihazını yavaşlatan kodda ne olabilir?
 
miha91 :
Programlama gurusu yardım). Danışmanı test ettim ve kampanyayı bitirdim, ) danışman test cihazını açtığımda ve botum çalışmaya başlar başlamaz, test cihazı donuyor ve her şey çok uzun bir süre hareketsiz kalıyor, test cihazını yavaşlatan kodda ne olabilir?
Ben de banyo hışırtı altında bir şey var! Ne olabilirdi?
 
int OnInit ()
  {
//--- indicator buffers mapping
 SetIndexBuffer ( 0 ,buf1);
SetIndexStyle ( 0 , DRAW_LINE , 0 , 1 ,Red);



 SetIndexBuffer ( 1 ,buf2);
SetIndexStyle ( 1 , DRAW_LINE , 0 , 1 ,Aqua);


 SetIndexBuffer ( 2 ,buf3);
SetIndexStyle ( 2 , DRAW_LINE , 0 , 1 ,Green);



 SetIndexBuffer ( 3 ,buf4);
SetIndexStyle ( 3 , DRAW_LINE , 0 , 1 ,Yellow);



//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---



   
   buf1[pos]= iOpen ( Symbol (), 0 ,pos);
   buf2[pos]= iHigh ( Symbol (), 0 ,pos);
   buf3[pos]= iClose ( Symbol (), 0 ,pos);
   buf4[pos]= iLow ( Symbol (), 0 ,pos);
   
  
   
//--- return value of prev_calculated for next call
   return (rates_total);
  }
4 satır çizmeli, ancak yalnızca ilk arabelleği çizer ve sonra başka bir şey yoksa
 

Değiştirdikten sonra hatta bir nokta belirlemeye çalışıyorum, her periyotta iyi çalışıyor ama 1 ve 4 saatte periyodik olarak 100-200 puanlık bir hata var, bununla nasıl başa çıkılır?

evlilik

 //+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   SetTLine(Red, "LineAlert" , Time [ 15 ], High [ 15 ], 0 , High [ 0 ]+ 15 * Point , 0 , 0 , 1 );
//---
   return ( INIT_SUCCEEDED );
  }
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Уравнение прямой.                                              |
//|             Вычисляет значение Y для X в точке пересечения с прямой.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x1,y1 - координаты первой точки,                                        |
//|    x2,y2 - координаты второй точки,                                        |
//|    x     - значение, для которого вычислить Y                              |
//+----------------------------------------------------------------------------+
double EquationDirect( double x1, double y1, double x2, double y2, double x)
  {
   double tk;
   if (x2==x1) return (y1);
   tk=(y2-y1)/(x2-x1)*(x-x1)+y1;

   return ( NormalizeDouble (tk, Digits ));
  }
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка объекта OBJ_TREND трендовая линия                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cl - цвет линии                                                         |
//|    nm - наименование               (  ""  - время открытия текущего бара)  |
//|    t1 - время открытия бара        (  0   - Time[10]                       |
//|    p1 - ценовой уровень            (  0   - Low[10])                       |
//|    t2 - время открытия бара        (  0   - текущий бар)                   |
//|    p2 - ценовой уровень            (  0   - Bid)                           |
//|    ry - луч                        (False - по умолчанию)                  |
//|    st - стиль линии                (  0   - простая линия)                 |
//|    wd - ширина линии               (  1   - по умолчанию)                  |
//+----------------------------------------------------------------------------+
void SetTLine( color cl, string nm= "" ,
               datetime t1= 0 , double p1= 0 , datetime t2= 0 , double p2= 0 ,
               bool ry= False , int st= 0 , int wd= 1 )
  {
   if (nm== "" ) nm= DoubleToStr ( Time [ 0 ], 0 );
   if (t1<= 0 ) t1= Time [ 10 ];
   if (p1<= 0 ) p1= Low [ 10 ];
   if (t2<= 0 ) t2= Time [ 0 ];
   if (p2<= 0 ) p2= Bid ;
   if ( ObjectFind (nm)< 0 ) ObjectCreate (nm, OBJ_TREND , 0 , 0 , 0 , 0 , 0 );
   ObjectSet (nm, OBJPROP_TIME1 ,t1);
   ObjectSet (nm, OBJPROP_PRICE1 ,p1);
   ObjectSet (nm, OBJPROP_TIME2 ,t2);
   ObjectSet (nm, OBJPROP_PRICE2 ,p2);
   ObjectSet (nm, OBJPROP_COLOR ,cl);
   ObjectSet (nm, OBJPROP_RAY ,ry);
   ObjectSet (nm, OBJPROP_STYLE ,st);
   ObjectSet (nm, OBJPROP_WIDTH ,wd);
  }
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cd - код значка                                                         |
//|    cl - цвет значка                                                        |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    t1 - время открытия бара        (0  - текущий бар)                      |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    sz - размер значка              (0  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetArrow( int cd, color cl,
               string nm= "" , datetime t1= 0 , double p1= 0 , int sz= 0 )
  {
   if (nm== "" ) nm= DoubleToStr ( Time [ 0 ], 0 );
   if (t1<= 0 ) t1= Time [ 0 ];
   if (p1<= 0 ) p1= Bid ;
   if ( ObjectFind (nm)< 0 ) ObjectCreate (nm, OBJ_ARROW , 0 , 0 , 0 );
   ObjectSet (nm, OBJPROP_TIME1 ,t1);
   ObjectSet (nm, OBJPROP_PRICE1 ,p1);
   ObjectSet (nm, OBJPROP_ARROWCODE ,cd);
   ObjectSet (nm, OBJPROP_COLOR ,cl);
   ObjectSet (nm, OBJPROP_WIDTH ,sz);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   int d= 0 ;
   int     X_1,X_2,X3d;
   double Y_1,Y_2,Y3d;
   static int _time_waiting= 0 ;
   static int i;
//---
   X_1=   ObjectGet ( "LineAlert" , OBJPROP_TIME1 );
   X_2 = ObjectGet ( "LineAlert" , OBJPROP_TIME2 );
   Y_1 = ObjectGet ( "LineAlert" , OBJPROP_PRICE1 );
   Y_2 = ObjectGet ( "LineAlert" , OBJPROP_PRICE2 );
   SetArrow( 6 ,Orange, "X1" ,X_1,Y_1, 3 );
   SetArrow( 6 ,Orange, "X2" ,X_2,Y_2, 3 );
   X3d= Time [ 0 ];Y3d=EquationDirect(X_1,Y_1,X_2,Y_2,X3d);
   SetArrow( 6 ,Orange, "X" ,X3d,Y3d, 3 );
  }
//+------------------------------------------------------------------+
 
beginner :

Değiştirdikten sonra hatta bir nokta belirlemeye çalışıyorum, her periyotta iyi çalışıyor ama 1 ve 4 saatte periyodik olarak 100-200 puanlık bir hata var, bununla nasıl başa çıkılır?


Ve dene

 //+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   SetTLine(Red, "LineAlert" , Time [ 15 ], High [ 15 ], 0 , High [ 0 ]+ 15 * Point , 0 , 0 , 1 );
//---
   return ( INIT_SUCCEEDED );
  }
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Уравнение прямой.                                              |
//|             Вычисляет значение Y для X в точке пересечения с прямой.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x1,y1 - координаты первой точки,                                        |
//|    x2,y2 - координаты второй точки,                                        |
//|    x     - значение, для которого вычислить Y                              |
//+----------------------------------------------------------------------------+
double EquationDirect( double x1, double y1, double x2, double y2, double x)
  {
   double tk;
   if (x2==x1) return (y1);
   tk=(y2-y1)/(x2-x1)*(x-x1)+y1;

   return ( NormalizeDouble (tk, Digits ));
  }
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка объекта OBJ_TREND трендовая линия                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cl - цвет линии                                                         |
//|    nm - наименование               (  ""  - время открытия текущего бара)  |
//|    t1 - время открытия бара        (  0   - Time[10]                       |
//|    p1 - ценовой уровень            (  0   - Low[10])                       |
//|    t2 - время открытия бара        (  0   - текущий бар)                   |
//|    p2 - ценовой уровень            (  0   - Bid)                           |
//|    ry - луч                        (False - по умолчанию)                  |
//|    st - стиль линии                (  0   - простая линия)                 |
//|    wd - ширина линии               (  1   - по умолчанию)                  |
//+----------------------------------------------------------------------------+
void SetTLine( color cl, string nm= "" ,
               datetime t1= 0 , double p1= 0 , datetime t2= 0 , double p2= 0 ,
               bool ry= False , int st= 0 , int wd= 1 )
  {
   if (nm== "" ) nm= DoubleToStr ( Time [ 0 ], 0 );
   if (t1<= 0 ) t1= Time [ 10 ];
   if (p1<= 0 ) p1= Low [ 10 ];
   if (t2<= 0 ) t2= Time [ 0 ];
   if (p2<= 0 ) p2= Bid ;
   if ( ObjectFind (nm)< 0 ) ObjectCreate (nm, OBJ_TREND , 0 , 0 , 0 , 0 , 0 );
   ObjectSet (nm, OBJPROP_TIME1 ,t1);
   ObjectSet (nm, OBJPROP_PRICE1 ,p1);
   ObjectSet (nm, OBJPROP_TIME2 ,t2);
   ObjectSet (nm, OBJPROP_PRICE2 ,p2);
   ObjectSet (nm, OBJPROP_COLOR ,cl);
   ObjectSet (nm, OBJPROP_RAY ,ry);
   ObjectSet (nm, OBJPROP_STYLE ,st);
   ObjectSet (nm, OBJPROP_WIDTH ,wd);
  }
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cd - код значка                                                         |
//|    cl - цвет значка                                                        |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    t1 - время открытия бара        (0  - текущий бар)                      |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    sz - размер значка              (0  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetArrow( int cd, color cl,
               string nm= "" , datetime t1= 0 , double p1= 0 , int sz= 0 )
  {
   if (nm== "" ) nm= DoubleToStr ( Time [ 0 ], 0 );
   if (t1<= 0 ) t1= Time [ 0 ];
   if (p1<= 0 ) p1= Bid ;
   if ( ObjectFind (nm)< 0 ) ObjectCreate (nm, OBJ_ARROW , 0 , 0 , 0 );
   ObjectSet (nm, OBJPROP_TIME1 ,t1);
   ObjectSet (nm, OBJPROP_PRICE1 ,p1);
   ObjectSet (nm, OBJPROP_ARROWCODE ,cd);
   ObjectSet (nm, OBJPROP_COLOR ,cl);
   ObjectSet (nm, OBJPROP_WIDTH ,sz);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   int d= 0 ;
   int     X_1,X_2,X3d;
   double Y_1,Y_2,Y3d;
   static int _time_waiting= 0 ;
   static int i;
//---
   X_1=   ObjectGet ( "LineAlert" , OBJPROP_TIME1 );
   X_2 = ObjectGet ( "LineAlert" , OBJPROP_TIME2 );
   Y_1 = ObjectGet ( "LineAlert" , OBJPROP_PRICE1 );
   Y_2 = ObjectGet ( "LineAlert" , OBJPROP_PRICE2 );
   SetArrow( 6 ,Orange, "X1" ,X_1,Y_1, 3 );
   SetArrow( 6 ,Orange, "X2" ,X_2,Y_2, 3 );
   X3d= Time [ 0 ];Y3d= ObjectGetValueByShift ( "LineAlert" , 0 );
   SetArrow( 6 ,Orange, "X" ,X3d,Y3d, 3 );
  }
//+------------------------------------------------------------------+

dene, denemedim.

 

Sen de yapabilirsin

Y3d = ObjectGetValueByTime ( "LineAlert" , Time [ 0 ], 2 );
  

Modern dil

 
r772ra :

Sen de yapabilirsin

Modern dil


Çalışıyor gibi görünüyor, hala izliyorum.

Teşekkür ederim!

 
Bilgili insanlar için bir soru, son zamanlarda bir sorun ortaya çıktı: postaya gelen sinyal VPS'ye gelmiyordu , daha önce her şey yolundaydı, şimdi test sırasında terminal günlüğüne yazıyor: santlandı, ancak sabuna hiçbir şey gelmiyor. VPS yeniden başlatıldı, terminal de sonuç vermedi.Burada sorun ne olabilir?