Fehler, Irrtümer, Fragen - Seite 2409

 
Liebe Entwickler! Werden Sie die Website in Ordnung bringen? Jedes Mal, wenn ich die Seite aufrufe, erhalte ich eine Benachrichtigung über eine Produktaktualisierung. Ich sehe mir diese Meldung an, und sie taucht wieder auf. So sollte es nicht sein!
 
Alexey Kozitsyn:
Liebe Entwickler! Werden Sie die Website in Ordnung bringen? Jedes Mal, wenn ich reinkomme - eine Benachrichtigung über eine Produktaktualisierung. Ich sehe mir diese Meldung an, und sie taucht wieder auf. So sollte es nicht sein!


Diese Art von Fehler tritt bei mir nicht auf.

Es liegt ein allgemeiner Fehler vor , dass Nachrichten nicht gelesen werden.

Der Fehler tritt auf, wenn mehrere Registerkarten geöffnet sind. Solange Sie diese nicht schließen, werden sie nicht gelesen.

Und noch etwas: Sie müssen diese Nachricht zweimal aufrufen, dann wird sie als gelesen markiert.

Dies kann Entwicklern helfen.

 

Der Indikator Chart fehlt (Indikator für Futures-Kontrakte, wenn nicht BR-4.19, dann Eingabe int NextFutMonth = 3; //Futures NextFutMonth (Monat))

//+------------------------------------------------------------------+
//|                                                   BR_Scalper.mq5 |
//|                                      Copyright 2019 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1

//--- plot Label1
#property indicator_label1  "Spread"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrYellow
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

//#property indicator_maximum 30
//#property indicator_minimum -30

#define  on_call -111
//
input int NextFutMonth = 1;    //След фьючерс (мес.)
input int aBars = 30;          //Бары  
//
double Buff[];
double pr_last, sec_last;
string sec_symbol;
bool pr_book, sec_book;
int event_cnt;

//+------------------------------------------------------------------+
//| Indicator Set second Symbols function                            |
//+------------------------------------------------------------------+
string SetSecSymbol(const string aSymbol)
{
  int str_tire = StringFind(aSymbol, "-");
  int str_tochka = StringFind(aSymbol, ".", str_tire);
  int str_size = StringLen(aSymbol);
  if((str_tire > 0) && (str_tochka > 0) && (str_size > 0))
  {
    string str_month = StringSubstr(aSymbol, str_tire + 1, str_tochka - str_tire - 1);
    string str_year = StringSubstr(aSymbol, str_tochka + 1, str_size - str_tochka - 1);
    long aMonth = StringToInteger(str_month);
    long aYear = StringToInteger(str_year);
    if((aMonth > 0) && (aYear > 0))
    {
      long n_month = aMonth + long(NextFutMonth);
      long add_year = (n_month - 1) / 12;
      aYear += add_year;
      str_year = IntegerToString(aYear); 
      aMonth = n_month - add_year * 12;
      str_month = IntegerToString(aMonth);
      return(StringSubstr(aSymbol, 0, str_tire + 1) + str_month + "." + str_year);
    } 
  }
  return("");
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
  int a_bars = Bars(Symbol(), PERIOD_CURRENT);
  if(a_bars < aBars + 1)
  {
    Alert("На графике не хватает баров!");
    return(INIT_FAILED);
  } 
  event_cnt = 0;
  sec_symbol = SetSecSymbol(Symbol());
  if(SymbolSelect(sec_symbol, true) == false) return(INIT_FAILED);
  pr_book = MarketBookAdd(Symbol());
  sec_book = MarketBookAdd(sec_symbol);
  IndicatorSetInteger(INDICATOR_DIGITS, 0);
  IndicatorSetString(INDICATOR_SHORTNAME, "BR_Scalper");
//---  
  SetIndexBuffer(0, Buff, INDICATOR_DATA);
  PlotIndexSetDouble( 0, PLOT_EMPTY_VALUE, EMPTY_VALUE);
  ArraySetAsSeries(Buff, true );
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
// Custom indicator DeInit function                                  |
//+------------------------------------------------------------------+
void OnDeinit( const int reason )
{
  if(pr_book == true) MarketBookRelease(Symbol());
  if(sec_book == true) MarketBookRelease(sec_symbol);
  if(reason == REASON_INITFAILED)
  {
    Print("Индикатор удалён! Причина - ошибка инициализации.");
    string short_name = ChartIndicatorName(ChartID(), 1, 0);
    ChartIndicatorDelete(ChartID(), 1, short_name); 
  }
}
//+------------------------------------------------------------------+
// Custom indicator On book event function                           |
//+------------------------------------------------------------------+
void OnBookEvent( const string& symbol )
{
  if((symbol == Symbol()) || (symbol == sec_symbol))
  {
    sec_last = SymbolInfoDouble(sec_symbol, SYMBOL_LAST);
    pr_last = SymbolInfoDouble(Symbol(), SYMBOL_LAST);
    double price[]; 
    OnCalculate( event_cnt, event_cnt, on_call, price ); 
  }
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
{
  if(prev_calculated == 0)
  {
    ArrayInitialize(Buff, EMPTY_VALUE);
  }
  else
  {
    if(begin == on_call)
    {
      for(int i = aBars - 1; i > 0; i--)
      {
        Buff[i] = Buff[i - 1];
      }
    }
    else
    {
     sec_last = SymbolInfoDouble(sec_symbol, SYMBOL_LAST);
     pr_last = SymbolInfoDouble(Symbol(), SYMBOL_LAST); 
     Buff[aBars] = EMPTY_VALUE;
    } 
    Buff[0] = (sec_last - pr_last) /Point();
  } 
//---    
  event_cnt = rates_total;  
//--- return value of prev_calculated for next call
  return(rates_total);
}
//+------------------------------------------------------------------+

Aber wenn Sie die

#property indicator_maximum 30
#property indicator_minimum -30

es funktioniert gut

 

Der Tester schließt die Geschäfte mit den Kursen eines anderen Instruments ab.


1. eurusd-Eröffnungskurs 1,30935.

2. Schlusskurs 1,60704. Es war nicht ein solcher Preis, aber es war zu dieser Zeit für ein anderes Instrument gbpusd.





Der Test wird für die beiden Symbole eurusd und gbpusd durchgeführt. Wenn gbpusd ausgeschlossen wird, verschwindet der Fehler.


 
Aleksey Sergan:

Der Tester schließt die Geschäfte mit den Kursen eines anderen Instruments ab.


1. eurusd-Eröffnungskurs 1,30935.

2. Schlusskurs 1,60704. Es war nicht ein solcher Preis, aber es war zu dieser Zeit für ein anderes Symbol gbpusd.





Der Test wird für die beiden Symbole eurusd und gbpusd durchgeführt. Wenn gbpusd ausgeschlossen wird, verschwindet der Fehler.


Wo ist der Code dieses Wunderberaters? Ich gebe 99%, dass Sie mit Klassen arbeiten und irgendwo eine statische Variable verwenden.

 
Vladimir Karputov:

Wo ist der Code für diesen Wunder-Ratgeber? 99% wetten, dass Sie mit Klassen arbeiten und irgendwo eine statische Variable verwenden.

Wladimir, machst du Witze?

 
Andrey Barinov:

Wladimir, machst du Witze?

Ich warte immer noch auf eine Antwort vonAleksey Sergan. Je nach Antwort wird es einen zweiten Teil der Frage geben.

 
Vladimir Karputov:

Ich warte immer noch auf eine Antwort vonAleksey Sergan. Je nach Antwort wird es einen zweiten Teil der Frage geben.

Ich verstehe. Du machst also doch keine Witze...

Manchmal ist ein Terminalfehler einfach nur ein Terminalfehler.
 
Vladimir Karputov:

Wo ist der Code für diesen Wunder-Ratgeber? 99% wetten, dass Sie mit Klassen arbeiten und irgendwo eine statische Variable verwenden.

Der Code umfasst mehrere tausend Zeilen. Es hat keinen Sinn, sie anzuhängen, denn es gibt keine statischen Variablen. Es gibt Klassen. In jedem Fall handelt es sich um einen Fehler des Testers.

 
Andrey Barinov:

Ich habe verstanden. Du machst also doch keine Witze...

Manchmal ist ein Terminalfehler einfach nur ein Terminalfehler.

Neeeeein :)