Hatalar, hatalar, sorular - sayfa 2457

 
Market'te, bir önceki sürümün EX5'ine yatırım yapmak için (kaynaklar aracılığıyla) ürününü güncellerken, kullanıcının bir hata durumunda her zaman geri alma fırsatına sahip olması için herhangi bir uygulama var mı?
 
fxsaber :
Market'te, bir önceki sürümün EX5'ine yatırım yapmak için (kaynaklar aracılığıyla) ürününü güncellerken, kullanıcının bir hata durumunda her zaman geri alma fırsatına sahip olması için herhangi bir uygulama var mı?

Kaynak olmadan da yapılabilir...

Sorun şu ki, daha yeni sürümlerin farklı ayarları olabilir...

Diğer ayarların görüntülenmesi zaten bir sorun...

 
Vladimir Pastushak :

Kaynak olmadan da yapılabilir...

Sorun şu ki, daha yeni sürümlerin farklı ayarları olabilir...

Diğer ayarların görüntülenmesi zaten bir sorun...

Bunda herhangi bir sorun görmüyorum.

 

Canlı VPS'den günlük istenirken, "Terminal günlükleri alınamadı" hatası veriyor

Sorunun ne olabileceğini kim bilebilir? Aynı zamanda danışmanlar VPS üzerinde çalışıyor (anlaşmaları aç/kapat), ancak logları indiremiyorum.

 
fxsaber :

Bunda herhangi bir sorun görmüyorum.

Ancak şimdi, önceki versiyonun EX5'inin koruyucu bir mekanizma ile olması gerektiğini fark ettim.

Ve önceki sürümün EX5 kaynakları sayesinde, uygun olmayan korumasız aktarım mümkün olacaktır.

 

5k üzerine bir gösterge yazıyorum.

Grafikteki giriş alanından ortalamanın periyodunu güncellemeye zorlayamam. 4ke'de bu tasarım işe yarayacak.

Sorun nedir? anlamıyor musun? OnChartEvent aracılığıyla İnternet'teki alan güncellenir ve dönem mevcut değildir. Hiçbir şekilde değiştiremiyorum.

Basit bir çalışma örneği ekliyorum.

 //+------------------------------------------------------------------+
//|                                                      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 );
    }


//--- 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 ( "Должна соответствовать зеленой, а равна= " ,PBB);
   
   handle_ma1= iMA ( NULL , 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" ))
     {
     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 );
        }
       }
Print ( "B OnChartEvent PBB=" ,PBB);
       ChartSetSymbolPeriod ( 0 , _Symbol , _Period );
      }
    }
     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 ;
  }
 
Zakhar Chumak :

Canlı VPS'den günlük istenirken, "Terminal günlükleri alınamadı" hatası veriyor

Sorunun ne olabileceğini kim bilebilir? Aynı zamanda danışmanlar VPS üzerinde çalışıyor (anlaşmaları aç/kapat), ancak logları indiremiyorum.

Temp klasörünün yolu çok uzun gibi görünüyor.

Arşivlenen günlükler önce sistem geçici klasöründeki geçici bir dosyaya (.tmp uzantılı) okunur. Geçici dosyanın adını oluştururken bir hata oluştu

 

Geçişten sonra ajanların uyuduğunu ve kalan meşgul ajanların işlerini bitirmesini beklediklerini doğru anlıyor muyum?


 

Ne?

soruma kimse cevap veremez mi?

İlginçtir. Bu seçenek ile OnCalculate çalışır. Ancak bu seçenek uygun değildir.

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
 
Uladzimir Izerski :

Ne?

soruma kimse cevap veremez mi?

İlginçtir. Bu seçenek ile OnCalculate çalışır. Ancak bu seçenek uygun değildir.

Grafiği / periyodu değiştirirken, giriş alanında belirttiğiniz değer ne olursa olsun PBB 10 değerini alır.

Yeniden başlatma sırasında, sanki ilk lansmanmış gibi olur.

Sorununuzu çözmenin iki yolu var

1 - PBB değerini terminal global değişkenlerinde saklayın ve oradan noktayı alın

2 - OnChartEvent tetiklendiğinde, MA göstergesini yeniden başlatın ve yeni bir tutamaç edinin...