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

 

Você consegue manter as coisas simples?)))

Onde eu consigo isso?

O indicador tem um código fechado, como posso saber o nome desta enumeração?

E de que tipo de variável eu preciso?

Só sei como fundir indicadores através do iCustom, mas não sou capaz de ir mais longe).

Se não for muito difícil, você poderia simplificar))))

ENUM_BASE_CORNER tentou, mas mesmo assim não vai aparecer.
 
Сергей:

Você consegue manter as coisas simples?)))

Onde eu consigo isso?

O indicador tem um código fechado, como posso saber o nome desta enumeração?

E de que tipo de variável eu preciso?

Só sei como fundir indicadores através do iCustom, mas não sou capaz de ir mais longe).

Se não for muito difícil, você poderia simplificar))))

ENUM_BASE_CORNER tentou, ainda não apareceu.

Aqui está um exemplo.

A primeira opção é o uso da enumeração padrão ENUM_BASE_CORNER.

A segunda variante é a utilização do enumero personalizado

Depois no iCustom, onde deve ser colocada a base ou variável my_base, dependendo da variante que você escolher.

Arquivos anexados:
100.mq4  5 kb
 
Сергей:

Olá.

Poderia me dar uma dica, estou acima da minha cabeça.

Eu prescrevo indicador através do iCustom e diante de um problema - indicador tem um menu de texto com uma escolha, ele abre e há vários itens prescritos, bem, eu acho que é claro)

Como posso adicioná-lo no menu?

externo int HIT = 0; não funciona, pára de exibir, não deixando nenhum parâmetro exibido.

Talvez através da ENUM , o que escolher, ou talvez algo mais?

Obrigado de antemão.

Você digitou todos os parâmetros no iCustom(,,,,,,,) na seqüência correta?

 

Bom dia a todos. Estou tentando coletar dados ao abrir um pedido. Quero escrever o valor do indicador de adesão nos castiçais 1,2,3 em um arquivo ao abrir um pedido.

Eu faço o seguinte. Abri o diretório de dados, fui para a pasta de testes, fui para a pasta de arquivos e criei um arquivo chamado "ZNA4_ADX.csv" lá. então no arquivo da biblioteca com a extensão . arquivomqh com a extensão . Abaixo está o código de função comentado.

void writing_adx_screen1_to_file(int i_param) // ФУНКЦИЯ ЗАПИСИ ДАННЫХ В ФАЙЛ
   { //---НАЧАЛО ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУЭКРАНУ-----------------------------------------------------------------------+
   
   //-НАЧАЛО ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   int hendel= FileOpen("ZNA4_ADX.csv",FILE_WRITE,';');
   
   //-КОНЕЦ ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   
   
//---НАЧАЛО ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ------------------------------------------------------------------------+

  double adx1= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,1);

//---АДХ_СВЕЧА 2 НАЧАЛО------------------------------------------------------------------------------------------+

double adx2= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,2);
//---АДХ_СВЕЧА 2 КОНЕЦ---------------------------------------------------------------------------------------------+

//---АДХ_СВЕЧА 3 НАЧАЛО------------------------------------------------------------------------------------------+

double adx3= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,3);
//---АДХ_СВЕЧА 3 КОНЕЦ----------------------------------------------------------------------------------------+

//--КОНЕЦ ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ//------------------------------------------------------------------------------+
if(hendel>0)
FileWrite(hendel,"ордер "+(string)i_param+" "+(string)adx1,(string)adx2,(string)adx3); // ЗАПИСЫВАЮ ДАННЫЕ В ФАЙЛ:)

FileClose(hendel);

   
   }//---КОНЕЦ ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУ----------------------------------------------------------------+

Quero que os dados tenham sido escritos como na captura de tela abaixo.

EXEMPLO DE COMO EU QUERO REGISTRAR DADOS


Ou seja, o texto vermelho é um cabeçalho que vou escrever manualmente. A linha 2 é o que eu quero definir com esta função. Isso é 1 número de pedido no teste. E nós temos três valores adx. Então quando a segunda ordem abre no teste, precisamos da próxima linha onde o número da ordem se torna 2, e os valores adx serão escritos para três castiçais antes desta ordem abrir, e assim por diante, tantas ordens no teste sairão...

Estou chamando a função em si no código EA, como mostrado no trecho de código abaixo.


  //---КОНЕЦ БАЙ ТРЕНДА СИГНАЛ АО------------------------------------------------------------------------------------------+
  if(f_end_trend_buy_ao_market_order() && count_orders_market_buy == 0 && count_orders_market_sell == 0)
  {// НАЧАЛО ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО
      if(OrderSend(Symbol(),OP_SELL,lot,Bid,slippages,Bid+sl , Bid-tp ,Coment, Magik_number)) Print("ОТКРЫВАЕМ ОРДЕР СЕЛЛ ПО СИГНАЛУ ОКОНЧАНИЯ ТРНЕДА- ДИВЕРЕГЕНЦИЯ АО"); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР
      writing_adx_screen1_to_file(i_nomer_ordera);// ВЫЗОВ ФУНКЦИ ЗАПИСИ ДАННЫХ В ФАЙЛ
      if (GetLastError()==141){Alert("ОШИБКА № "+string(GetLastError())+"УДАЛЯЕМ ЭКСПЕРТА С ГРАФИКА"); ExpertRemove();}// ПРОВЕРКА ОТ ДОЛБАНИЯ СЕРВЕРА И БАНА СЧЁТА   


  } // КОНЕЦ ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО//-------------------------------------------------------------------------------------------------+
  



O teste está sendo executado sem erros, mas obtive este resultado no arquivo (SCREEN BELOW ).

O QUE EU RECEBI AO ESCREVER PARA O ARQUIVO


Recebi uma linha com o primeiro pedido e três valores, mas havia 189 pedidos em aberto no teste. O que e onde esqueci de aumentar a variável para contar o número de pedidos e como devo fazer para que os dados após o primeiro pedido sejam registrados nas linhas 2,3-189? Por favor, não me envie para a base de códigos e outros lugares onde é difícil para mim ler textos, e o código de outras pessoas é quase impossível. Então me diga de forma clara o que acrescentar e onde posso obter os dados que preciso? P/S se você não se importa de destacar o ponto com a adição ...

 
DanilaMactep:

Bom dia a todos. Estou tentando coletar dados ao abrir um pedido. Quero registrar o valor do indicador de adesão em castiçais 1,2,3 em um arquivo ao abrir um pedido.

Eu faço o seguinte. Abri o diretório de dados, fui para a pasta de testes, fui para a pasta de arquivos e criei um arquivo chamado "ZNA4_ADX.csv" lá. então no arquivo da biblioteca com a extensão . arquivomqh com a extensão . Abaixo está o código de função comentado.

Quero que os dados tenham sido escritos como na captura de tela abaixo.


Ou seja, o texto vermelho é um cabeçalho que vou escrever manualmente. A linha 2 é o que eu quero definir com esta função. Isso é 1 número de pedido no teste. E nós temos três valores adx. Então quando a segunda ordem abre no teste, precisamos da próxima linha onde o número da ordem se torna 2, e os valores adx serão escritos para três castiçais antes desta ordem abrir, e assim por diante, tantas ordens no teste sairão...

Estou chamando a função em si no código EA, como mostrado no trecho de código abaixo.




O teste está sendo executado sem erros, mas obtive este resultado no arquivo (SCREEN BELOW ).


Recebi uma linha com o primeiro pedido e três valores, mas havia 189 pedidos em aberto no teste. O que e onde esqueci de aumentar a variável para contar o número de pedidos e como devo fazer para que os dados após o primeiro pedido sejam registrados nas linhas 2,3-189? Por favor, não me envie para a base de códigos e outros lugares onde é difícil para mim ler textos, e o código de outras pessoas é quase impossível. Então me diga de forma clara o que acrescentar e onde posso obter os dados que preciso? P/S se você não se importa de destacar o ponto com a adição ...

Se um arquivo é aberto com apenas uma bandeira FILE_WRITE, tudo no arquivo é removido. Para salvar dados existentes em arquivo, você precisa abrir um arquivo para leitura e escrita.

Depois, não se esqueça de mover o ponteiro para o final do arquivo.

 
Alexey Viktorov:

Se o arquivo for aberto com apenas uma bandeira FILE_WRITE, tudo no arquivo será deletado. Para salvar os dados existentes no arquivo, você deve abrir o arquivo para leitura e escrita.

Depois, não se esqueça de mover o ponteiro para o final do arquivo.

Alexey, muito obrigado por indicar onde "cavar" o erro - até agora eu consegui fazer um registro linha por linha - tudo o que resta é pentear tudo em uma forma utilizável para análise))))
 

Os valores da matriz estão em células RAM que se sucedem umas às outras. O comprimento máximo de células desocupadas pode depender do comprimento.

 
Por que isso não funciona com endereços de funções?
template<typename T>
typedef T (*Fun)(const int, const int, const double &[], const double &[], const double &[], const double &[], const int &[]);
Fun    calculation,
       function;

//------------------------------------------------------------------------------------------------------------------------------

int OnInit()
  {
   calculation  = test;
   function     = Dis_HL_Value;
  //-----------------------------------------------------------------
   return(INIT_SUCCEEDED);
  }
 
Olá, você pode me dizer se isto é uma declaração de uma matriz bidimensional?
      ArrayInitialize(ZigZagBuffer,0.0);
Obrigado de antemão!
 
Дмитрий:
Olá, você pode me dizer se isto é uma declaração de uma matriz bidimensional? Obrigado de antemão!

Não, é uma inicialização de um já declarado.