Erros, bugs, perguntas - página 1466

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

é melhor pôr as coisas dessa forma )

skype:login_contacto?chamada

 
Alexandr Bryzgalov:

é melhor pôr as coisas dessa forma )

skype:login_contacto?chamada

Acho que estou sempre a receber chamadas. É uma marcação automática do meu perfil, é melhor mudá-la para o chat
 
O terminal web perdeu a sua conta. Registei a minha conta real há 3-4 dias atrás, tudo estava bem. E depois olhei, sem conta. Nada mesmo. Não pede login ou password, nada no separador "Contas de negociação" do perfil de utilizador do fórum MQL...
 

quis encontrar no indicador estocástico as duas últimas entradas através das linhas de níveis acima e abaixo, três entradas são exibidas normalmente e guardam os seus valores e a quarta não funciona correctamente repõe a zero quando sai da zona inferior diz-me qual o erro

//--- находим индекс бара вход в верхняя зону
   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:

Eu queria encontrar no indicador estocástico as duas últimas entradas através das linhas de nível para cima e para baixo, três entradas são exibidas normalmente e guardam os seus valores e a quarta não funciona correctamente repõe a zero quando sai da zona inferior, por favor informe qual é o erro

Fiz um guião rápido para vos dar um exemplo:

//+------------------------------------------------------------------+
//|                                         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));
}
//+------------------------------------------------------------------+
 
Obrigado pelo guião até agora, parece matemática superior a um aluno do primeiro ano que ainda não aprendi a trabalhar com arrays. Encontrei um erro no meu código que teve de inserir outros dados de barras no laço e tudo funcionou como devia
for(n=1; n<(Bars-2);n++)
 

Não consigo que a nova janela do gráfico se abra pelo menos a meio caminho. Quando clico com o botão direito do rato em qualquer instrumento na janela "Market Watch" e selecciono o comando "Chart Window", o gráfico abre-se de forma incompleta:

Gráfico a metade do tamanho

Como posso ultrapassar isto?

 
Karputov Vladimir:

Não consigo que a nova janela do gráfico se abra pelo menos a meio caminho.

Tenho a certeza de que os programadores irão corrigi-lo.

Entretanto, é necessário ter outro mapa de qualquer instrumento em estado de colapso. Ou seja, abre USDJPY, expande-o manualmente, e depois minimiza-o manualmente. Depois disso, pode abrir qualquer gráfico desejado e este estará na janela completa.

Provavelmente já sabe isto.

 

Nas últimas construções do MT4, quando se usa o modo portátil não há possibilidade de iniciar o MetaEditor - escrevi para o balcão de serviço, mas não houve uma resposta inteligível.

Se executar a própria aplicação na pasta com MT4, o MetaEditor é carregado com ambiente na pasta AppData for Windows, se premir "change expert" no terminal, o mesmo acontece, e antes de ser carregado a partir da pasta, onde o terminal foi carregado no modo portátil.

 

Registo de uma única execução de um Expert Advisor vazio no testador MT4 utilizando preços de abertura:

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

Pode ver pelo registo que a própria EA passa a história em tempo zero. São necessários cinco segundos para preparar dados históricos (um pouco mais de 100K barras). Isto nunca tinha acontecido antes.

Funciona a 100% do tempo. MT4 construir 950, Windows7 SP1 x64.

Pode aconselhar qual a construção extrema que não sofre desta doença. DOWNGRADE é necessário.