Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 393

 
YarTrade: VolC - era assim que eu chamava o arquivo. Você não precisa de um nome de arquivo?

Então, é assim:

   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,(double)V5);       // V5 - это что?
   FileClose(file_handle);
 
STARIJ:

Então, é assim:


O V5 é algum tipo de resultado de cálculo. Eu removi o V5, coloquei um array em seu lugar e quero que ele seja escrito no arquivo. O arquivo é criado, mas apenas um valor é gravado nele, não a matriz de dados indicadores. O que está faltando? Eu tenho um indicador que está corretamente plotado no gráfico. Quero escrever seus valores em um arquivo para poder lê-los mais tarde. Mas apenas um número é escrito. Você pode me ajudar a entender o que está errado?

 
STARIJ:

Então, é assim:


Eu fiz isso com FileWriteArray, mas agora o arquivo está vazio. ele não vai escrever um array lá :(. Você sabe como ajudar? Claro que sim. Por favor, diga-me o que está errado.

 
YarTrade: Eu o fiz com FileWriteArray, mas agora o arquivo está vazio. Ele não vai escrever o array lá :(. Você sabe como ajudar? Claro que sim. Por favor, diga-me o que está errado.

É assim

   int V5=555;
   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,V5);
   FileClose(file_handle);

Que tipo de matriz? Insira o código, pare de ser ganancioso! E aqui está um array escrevendo aparentemente apenas um array de caracteres.

   string V5[5]={"Жили","были","дед","и","баба"};
   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   FileWriteArray(file_handle,V5);
   FileClose(file_handle);

E a matriz de laço escreve

   double V5[5]={3.333,7.7777777,1.1,2.22,9.999999999};
   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   for(int n=0; n<5; n++)FileWrite(file_handle,V5[n]);
   FileClose(file_handle);
 
STARIJ:

É assim

Que tipo de matriz? Insira o código, pare de ser ganancioso! E esta matriz escreve provavelmente apenas uma matriz de caracteres

E aqui está a matriz com o dobro da escrita em loop


Quão ganancioso é isso? :)

#property copyright "ZyZy"
#property link      "https://www.mql5.com/ru/users/alexeyvik/news"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
// #property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrYellow
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
#property indicator_separate_window
//--- input parameters
input int      Aver=15;
datetime Время=0;   // Время прошлого бара
double Bid1;
long V1; // объем для текущего тика вверх
long V2; // накопленный объем для всех тиков вверх текущего бара
long V3; // накопленный объем для всех тиков вниз для текущего бара
long V4; // объем текущего тика вниз
long V5;

//--- indicator buffers
double         Buf_1[];   // буфер для значений идикатора
double         Counter[];     // буфер для расчетов   
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorBuffers(2);
   SetIndexBuffer(0,Buf_1,INDICATOR_DATA); // создаю буфер для значений индикатора
   SetIndexBuffer(1,Counter,INDICATOR_CALCULATIONS);
   SetIndexEmptyValue(0,0.0);
//---
   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[])
  {
//---
//int limit = prev_calculated > 0 ? rates_total-prev_calculated : rates_total-1;
//for(int i =  limit; i >= 0; i--)
// {
//  Counter[i] = close[i];
//  Indicator[i] = iMAOnArray(Counter, 0, 5, 0, 0, i);
// }
   if(prev_calculated==0)
     {
      ArrayInitialize(Counter,0.0);
      ArrayInitialize(Buf_1,0.0);
     }
   datetime Вр=Time[0];   // Время текущего бара
   if(Вр>Время)           // Если новый бар
     {
      Время=Вр;           // Запомнить
      Counter[0]=0;         // и обнулить последний элемент буфера
      V2 = 0;
      V4 = 0;
     }

   if(Bid>=Bid1)
     {
      if(Bid>Bid1)
        {
         V1 = iVolume(NULL, 0, 0);
         V2 = V1 + V2;
        }
      else
        {
         V1 = 0;
         V2 = V1 + V2;
        }
     }
   else
     {
      V3 = iVolume(NULL, 0, 0);
      V4 = V3 + V4;
     }

   V5=V2-V4;
   Bid1=Bid;
   Counter[0]=(double)V5;
   Buf_1[0]=iMAOnArray(Counter,0,Aver,0,MODE_SMA,0);
   Comment("Counter ",Counter[0],"\n"
           ,"Buf_1 ",Buf_1[0]);
   
   string file_name="VolC_"+Symbol()+(string)Period();
   int file_handle=FileOpen(file_name,FILE_WRITE|FILE_TXT);
   FileWriteArray(file_handle,Counter, 0, WHOLE_ARRAY);     
   FileClose(file_handle);

   return(rates_total);
  }
//+------------------------------------------------------------------+
 
YarTrade: Que ganância está envolvida? :)

Por que você imprimiria qualquer coisa a partir de um indicador? Tudo está na tela - isso é o que é um indicador. Quando eu preciso de uma mesa - eu executo um script com iCustom()

 

Olá! Ainda lutando com o código que supostamente deve ser verificado em relação ao preço do pedido no terminal. Decidi tentar comparar os bilhetes com os bilhetes. Colocar as passagens em uma matriz, começar a verificar.

Tudo é bom, ele retorna VERDADEIRO. Acho que, eu vou apagar um, ele retornará FALSO. Mas não((( Eu apaguei tudo, e o script ainda retorna 1 em vez de 0. O que eu faço de errado?


int start()
{
   while(!IsStopped())
   {
      int ordsel = 0;
      double ticord[3] = {8895969,8901032,8901033};
         for(ordsel=0; ordsel<=2;ordsel++) 
         {
            Sleep(5000); 
            Alert(OrderSelect(ticord[ordsel],SELECT_BY_TICKET,MODE_TRADES)); 
         }
      if(!IsExpertEnabled()) break;
   }
   return;
}
 

Olá, colegas especialistas! Por favor, ajude um iniciante. Estou tentando colocar um indicador em meu Conselheiro Especialista(eu tenho rachado meus miolos ...)! Dá um erro: 'limite' - declaração sem tipo.

Nesta linha: limite = MathMax(limite,MathMin(Bars,iCustom(NULL,timeFrame,indicadorNome do arquivo, "returnBars",0,0)*timeFrame/Período()));


 
Dimitry-1983:

Olá, tenho tido dificuldades com o código que deve verificar o preço do pedido no terminal. Decidi tentar comparar os bilhetes com os bilhetes. Colocar as passagens em uma matriz, começar a verificar.

Tudo é bom, ele retorna VERDADEIRO. Acho que, eu vou apagar um, ele retornará FALSO. Mas não((( Eu apaguei tudo, e o script ainda retorna 1 em vez de 0. O que eu faço de errado?



A questão é que se você selecionar (OrderSelect(...)) por bilhete, o parâmetro 3 é ignoradoMODE_TRADES

então, para saber de qual lista (fechada, aberta) você escolheu o pedido, você precisa verificar seu horário de fechamento

0- aberto e pendente, >0 fechado

 
Ptichka12:

Olá, colegas especialistas! Por favor, ajude um iniciante. Estou tentando colocar um indicador em um Consultor Especialista (eu tenho rachado meus miolos ...)! Dá um erro: 'limite' - declaração sem tipo.

Nesta linha: limite = MathMax(limite,MathMin(Bars,iCustom(NULL,timeFrame,indicadorNome do arquivo, "returnBars",0,0)*timeFrame/Period()));



Esta é uma maneira bastante interessante de fazer isso.

Tente o seguinte sobre o erro

int limit = MathMax(limit,MathMin(Bars,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
Razão: