Errori, bug, domande - pagina 1466

 
Комбинатор:
skype:login_contact?chat

è meglio metterla in questo modo )

skype:login_contact?call

 
Alexandr Bryzgalov:

è meglio metterla in questo modo )

skype:login_contact?call

Credo di ricevere chiamate in continuazione. È un auto-dialer del mio profilo, meglio cambiarlo in chat
 
Il terminale web ha perso il suo account. Ho registrato il mio account reale 3-4 giorni fa, tutto andava bene. E poi ho guardato, nessun conto. Niente di niente. Non chiede login o password, niente nella scheda "Trading accounts" del profilo utente del forum MQL...
 

Volevo trovare sull'indicatore stocastico ultimi due ingressi attraverso le linee di livelli su e giù, tre ingressi vengono visualizzati normalmente e salvare i loro valori e il quarto non funziona correttamente ripristina a zero quando si lascia la zona inferiore dimmi cosa l'errore

//--- находим индекс бара вход в верхняя зону
   for(n=0; n<(Bars-1);n++)
     {
       if(iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n)<up_level && iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n-1) >up_level )
    //     break;
      UpLevel_1=n+1;
         
     }
//--- находим индекс бара второго ближайшего входа верхний уровень
  // for(n= UpLevel_1+1; n<(Bars-1);n++)
     {
      if(iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n)<up_level && iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n-1) >up_level )
      //   break;
      UpLevel_2=n+1;
      UpperPrice_2=iHigh(Symbol(),PERIOD_CURRENT,UpLevel_2);
     
     }
//--- находим индекс бара первого ближайшего входа нижний уровень
  for(n=0; n<(Bars-1);n++)
     {
     if(iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n)>dw_level && iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n-1) <dw_level )  
         break;
      DwLevel_1=n+1;
      LowerPrice_1=iLow(Symbol(),PERIOD_CURRENT,DwLevel_1);
     }
//--- находим индекс бара второго ближайшего входа нижний уровень
   for(n=DwLevel_1+1; n<(Bars-1);n++)
     {
       if(iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n)>dw_level && iStochastic(Symbol(),0,5,3,3,MODE_SMA,1,0,n-1) <dw_level )
         break;
      DwLevel_2=n+1;
      LowerPrice_2=iLow(Symbol(),PERIOD_CURRENT,DwLevel_2);
      Comment("вход верхняя зона" + DoubleToStr(UpLevel_1,0)+ "\n" + // работает правельно показания сохраняет
              "предыдущий вход верхняя зона" + DoubleToStr(UpLevel_2,0)+ "\n" + // работает правельно показания сохраняет
              " вход нижняя зона" + DoubleToStr(DwLevel_1,0)+ "\n" +  //работает неправельно обнуляет показания когда выходит из нижней зоны
              " предыдущий вход нижняя зона" + DoubleToStr(DwLevel_2,0)); // работает правельно показания сохраняет
     }
 
Mikhail Lebedev:

Volevo trovare sull'indicatore stocastico ultimi due ingressi attraverso le linee di livello su e giù, tre ingressi vengono visualizzati normalmente e salvare i loro valori e il quarto non funziona correttamente ripristina a zero quando si lascia la zona inferiore, si prega di consigliare ciò che è l'errore

Ho fatto uno script veloce per darvi un esempio:

//+------------------------------------------------------------------+
//|                                         FindStochasticSignal.mq4 |
//|              Copyright 2015, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int      PeriodK=5;                       // Period %K Stochastic
int periodK=(PeriodK<1)?1:PeriodK;
input int      PeriodD=3;                       // Period %D Stochastic
int periodD=(PeriodD<1)?1:PeriodD;
input int      SlowingStc=3;                    // Slowing Stochastic
int slowingStc=(SlowingStc<1)?1:SlowingStc;
input ENUM_MA_METHOD MA_Method=MODE_SMA;        // MA Method Stochastic
input ENUM_STO_PRICE AppledPrice=STO_LOWHIGH;   // Appled Price Stochastic
input double LevelUP=70.0;                      // Up level Stochastic
input double LevelDN=30.0;                      // Down level Stochastic
input int      NumberCross=4;       // Number of Cross stochastics level
int numberCross=(NumberCross<1)?1:NumberCross;
//--- Arrays
double MassiveCrossUP[][2];
double MassiveCrossDN[][2];
MqlRates rates[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int bars=iBars(Symbol(),Period());
   if(CopyRates(Symbol(),PERIOD_CURRENT,1,bars-1,rates)>0) {
      ArraySetAsSeries(rates,true);
      int nup=0, ndn=0;
      ArrayResize(MassiveCrossUP,nup,numberCross);
      ArrayResize(MassiveCrossDN,ndn,numberCross);
      for(int i=1; i<Bars; i++) {
         double StochMain0=GetDataSTO(Symbol(),Period(),periodK,periodD,slowingStc,MA_Method,AppledPrice,MODE_MAIN,i);
         double StochMain1=GetDataSTO(Symbol(),Period(),periodK,periodD,slowingStc,MA_Method,AppledPrice,MODE_MAIN,i+1);
         if(nup>numberCross && ndn>numberCross) break;
         if(StochMain0<LevelUP && StochMain1>=LevelUP) {
            nup++;
            if(nup<=numberCross) {
               ArrayResize(MassiveCrossUP,nup);
               MassiveCrossUP[nup-1][0]=int(rates[i].time);
               MassiveCrossUP[nup-1][1]=rates[i].high;
               }
            }
         if(StochMain0>LevelDN && StochMain1<=LevelDN) {
            ndn++;
            if(ndn<=numberCross) {
               ArrayResize(MassiveCrossDN,ndn);
               MassiveCrossDN[ndn-1][0]=int(rates[i].time);
               MassiveCrossDN[ndn-1][1]=rates[i].low;
               }
            }
         }
      }
   //---
   string text_up_crossing="Пересечения сверху-вниз:\n", text_dn_crossing="Пересечения снизу-вверх:\n";
   for(int i=0; i<ArrayRange(MassiveCrossUP,0); i++) {
      string date_cross=TimeToString(int(MassiveCrossUP[i][0]));
      string value_cross=DoubleToString(MassiveCrossUP[i][1],Digits());
      string txt_i="\n"+IntegerToString(i+1)+"-е пересечение уровня "+DoubleToString(LevelUP,1)+", время бара "+date_cross+", цена High свечи: "+value_cross;
      text_up_crossing+=txt_i;
      }
   text_up_crossing+="\n====================\n";
   for(int i=0; i<ArrayRange(MassiveCrossDN,0); i++) {
      string date_cross=TimeToString(int(MassiveCrossDN[i][0]));
      string value_cross=DoubleToString(MassiveCrossDN[i][1],Digits());
      string txt_i="\n"+IntegerToString(i+1)+"-е пересечение уровня "+DoubleToString(LevelDN,1)+", время бара "+date_cross+", цена Low свечи: "+value_cross;
      text_dn_crossing+=txt_i;
      }
   Comment(text_up_crossing+text_dn_crossing);
  }
//+------------------------------------------------------------------+
double GetDataSTO(string sy, int timeframe, int k_period, int d_period, int slowing, ENUM_MA_METHOD ma_method, ENUM_STO_PRICE price_field, int mode, int pos) {
   return(iStochastic(sy,timeframe,k_period,d_period,slowing,ma_method,price_field,mode,pos));
}
//+------------------------------------------------------------------+
 
Grazie per lo script finora sembra matematica superiore per un bambino di prima elementare, non ho ancora imparato a lavorare con gli array. Ho trovato un errore nel mio codice, ho dovuto inserire altri dati della barra nel ciclo e tutto ha funzionato come dovrebbe
for(n=1; n<(Bars-2);n++)
 

Non riesco a far sì che la nuova finestra del grafico si apra almeno a metà. Quando clicco con il tasto destro su qualsiasi strumento nella finestra di Market Watch e seleziono il comando "Chart Window", il grafico si apre in modo incompleto:

Grafico a metà grandezza

Come posso superare questo?

 
Karputov Vladimir:

Non riesco a far aprire la nuova finestra del grafico almeno a metà.

Sono sicuro che gli sviluppatori lo sistemeranno.

Nel frattempo, è necessario avere un altro grafico di qualsiasi strumento in uno stato di collasso. Cioè, apri USDJPY, lo espandi manualmente e poi lo minimizzi manualmente. Dopo di che, potete aprire qualsiasi grafico desiderato e sarà nella finestra completa.

Probabilmente lo sapete già.

 

Nelle ultime build di MT4, quando si usa la modalità portatile non c'è la possibilità di avviare MetaEditor - ho scritto al service desk, ma non c'è stata una risposta comprensibile.

Se si esegue l'applicazione stessa nella cartella con MT4, MetaEditor viene caricato con ambiente nella cartella AppData per Windows, se si preme "cambia esperto" nel terminale, succede la stessa cosa, e prima era caricato dalla cartella, dove il terminale è stato caricato in modalità portatile.

 

Log di una singola esecuzione di un Expert Advisor vuoto nel tester MT4 utilizzando i prezzi di apertura:

112972 tick events (113071 bars, 225205 bar states) processed in 0:00:00.016 (total time 0:00:05.039)

Puoi vedere dal log che l'EA stesso passa la storia in tempo zero. Ci vogliono cinque secondi per preparare i dati storici (poco più di 100K barre). Questo non è mai successo prima.

Funziona il 100% delle volte. MT4 build 950, Windows7 SP1 x64.

Potete consigliare quale costruzione estrema non soffre di questo disturbo. È richiesto il DOWNGRADE.