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

 
Kot:

Boa tarde!


Eu tenho um EA que faz certos cálculos. Utiliza diferentes operações matemáticas, arrays, loops. Ele salva o resultado em um arquivo. Tem que começar tudo desde o início, depois de ter realizado todas as ações. Ele fez todos os cálculos uma vez e depois fica pendurado pela segunda vez sem nenhuma outra ação. Você pode aconselhar se é necessário zerar variáveis, limpar arrays ou algo mais antes de iniciar um novo cálculo?

Você já tentou fechar o arquivo?

 
Boa tarde! Preciso de ajuda para um humanitário (eu) que está tentando fazer um indicador com o mínimo de conhecimento de como fazê-lo)))))) mas tenha uma compreensão do que deve aparecer))) Assim:
Como programar uma muleta/indicador/script (como um indicador com abas "sobre, geral, parâmetros de entrada, cores, display") para o MT4 para que ele pegasse os dados de um arquivo .csv, por exemplo, o formato doarquivo fonte:
EUR;TF;1.192;1.1733
EUR;TN;1.2037;1.1663
EUR;AB1;1.1906499615;1.1797479615
CHF;TF;1.0362;1.0183
CHF;TN;1.0479;1.0121
CHF;AB1;1.03484132734247;1.02549513556164


Ou seja,
o indicador tomou os dados registrados de um arquivo e os colocoucomo um segmento de linha (TF, TA) ou uma faixa colorida(EA) com os parâmetros de extensão igual a "um dia". (da borda até a borda dos separadores verticais de dias em МТ4), para seleção das linhas de cor, tipo de linha, seleção da cor do texto e tamanho do comentário e substituição da linha de comentário como "TF - 1.192" pela segunda linha "TF - 1.1733" que são retiradas das linhas correspondentes do arquivo. O intervalo é puramente horizontal e a partir da linha EUR;TF;1.192;1.1733 é tomado o primeiro dígito para um slot e o segundo dígito para o segundo como o início do slot 1.192 e o final do slot 1.192.
Há também faixas, por exemplo EA, o princípio é o mesmo do início ao fim do dia, mas o preço é diferente e a linha começa e termina com CHF;AB1;1.03484132734247;1.02549513556164 início é
1.03484132734247 fim da faixa1.02549513556164. Ele funciona quando você liga o MT4 (como um indicador usual no gafik), todos os dias no gráfico e adiciona todos os dados exatamente para o dia atual uma vez, todas as linhas aplicadas anteriormente não são deletadas do gráfico e não o duplicam. Com tudo isso ele seleciona e exibe todos os segmentos e intervalos do dia, apenas onde a janela ativa está agora e em outras janelas ativas (ou seja, onde está funcionando) (ou seja, ele abriu um par e o indicador desenhou todos os segmentos e intervalos do dia atual e acalmou e assim por diante para os pares).

Por exemplo, como deve ser a aba do indicadorParâmetros de entrada:

Переменная________Значение
Funtik________//--Общие настройки--//
Desenho TF________true
Sorteio TN _______true
Sorteio AB1______true
Sorteio AB2______falso
Cor da legenda do texto _______Preto
Шрифт подписей__________________Arial
Tamanho da fonte para legendas de texto ________ 9
Cor da linha TF ______________
Linha tipo TF _______________
Cor da linha TN ______________
Linha tipo TN _______________
Cor da banda AB1__________
Cor da banda AB2__________
Freqüência de arquivos em segundos ______ 2
Nome do arquivo ___________ 5.csv

tentei me rabiscar, mas não consegui nada embora parecesse fácil (mas eu sou um humanitário, o que você pode fazer....) Ajude por favor afogando-se !!!!!!!!


//+------------------------------------------------------------------+
//|                                                        Funtik.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
 
#property indicator_chart_window
//---- input parameters
extern string    Funtik="5.csv";
//+------------------------------------------------------------------+
//| extern variables                                       |
//+------------------------------------------------------------------+
extern  bool    РисоватьTB = false      ;
extern  bool    РисоватьTN = false      ;
extern  bool    РисоватьTF = false      ;
extern  bool    РисоватьAB1 = false     ;
extern  bool    РисоватьAB2 = false     ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
      int handle,sst=1;
     double  NameCena;
     string NameF ,NameTi,NameFT;
      bool h1;
      
   while(sst>0)
                 {
   handle=FileOpen(Funtik,FILE_CSV|FILE_READ,';');
 //  Comment ("Файл ",Funtik,"открыт");
   if(handle>=0)
    {
     NameF=FileReadString(handle);           // Читается наименование бумаги
     NameTi=FileReadString(handle);          // Читается первая котировка и подставляется в начало первого отрезка линии или диапазона
     NameCena=FileReadNumber(handle);        // Читается цена последней котировки для первого отрезка линии или диапазона
     NameFT=FileReadString(handle);          // Читается последняя котировка для диапазона
     
     Alert(NameF," ",NameTi," ",NameCena," ",NameFT);
       if(FileIsEnding(h1))
       {
     FileClose(h1);
     return(false);
     sst=0;
       }
    }
               }
     FileClose(handle);   
 
  //fComment(Funtik);
//----
   return(0);
  }
//+------------------------------------------------------------------+

 

Olá!

Por favor, ajude-me a encontrar um bug no seguinte programa!!!

//+------------------------------------------------------------------+
//|teste.mq4 |
//| Copyright 2018, MetaQuotes Software Corp.
//|https://wwww.mql5.com |||||mql5.com
//+------------------------------------------------------------------+
#propriedade copyright "365_MA
#link da propriedade "https://www.mql5.com"
#propriedade versão "1.00"
#propriedade rigorosa

Período externo_MA = 365; //Período MA 1
Delta duplo externo = 0,0010; // A distância em que o pedido pode ser aberto

Symb de corda; //Nome do instrumento comercial
//int Total; //número de pedidos

//+------------------------------------------------------------------+
//| função de iniciação de especialista|
//+------------------------------------------------------------------+
int init()
{
//----

//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização especializada|
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("Object_Label");
ObjectDelete("Obj_Label2");
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de partida de especialista|
//+------------------------------------------------------------------+
int start()
{



preço duplo = Licitação;//preço atual
valor duplo CurrMAValor = iMA(Symb, Period(),Period_MA, 0,Mode_EMA, PRICE_CLOSE, 0); //o valor da Média Móvel
duplo Preço2MA = preço - CurrMAValor;//distância entre MA e preço
data/hora NextClose = Hora(0) + Período()*60*2;// tempo para fechar
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1; // tempo para fechar em minutos

//int err;



//refazer as informações de texto no gráfico

ObjectSetText ("Obj_Label", "TF" + Período() + ", " + DoubleToStr(price, 4) + ", tick " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0], TIME_MINUTES) + ", NC@". + TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " min)", 10,
ObjectSetText ("Obj_Label2", "Delta " + DoubleToStr(Delta,4) + ", valor MA " + DoubleToStr(CurrMAValue, 4) + ", distância para MA " + DoubleToStr(Price2MA, 4), 10, "Arial", DarkGreen );
//considerar preço e gerar alertas

se ((MathAbs(Price2MA) < Delta) &&/ se a distância até МА for menor que o delta
(Preço > CurrMAValue) &&/ e o preço é mais alto que MA
(Open(0) > CurrMAValue+Delta) // e a vela atual se abriu mais alto que MA+Delta
(
Alerta ("O preço está se aproximando do MA de cima;)
)

se ((MathAbs(Price2MA) < Delta) &&/ se a distância para o MA for menor que o delta
(preço < CurrMAValue) &&/ e o preço está abaixo do MA
(Open(0) < CurrMAValue-Delta)) // e a vela atual aberta abaixo do delta MA
(

Alerta ("Preço aproximado abaixo do MA;)
)

retorno(0);


//+------------------------------------------------------------------+

Após a compilação do seguinte erro

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Куда исчезли "Сообщения"? У меня в профиле исчез раздел...
Arquivos anexados:
Error.jpg  60 kb
 
berkley75:

Olá!

Por favor, ajude-me a encontrar um bug no seguinte programa!!!


Após a compilação do seguinte erro.

//+------------------------------------------------------------------+
//|                                                         test.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "365_MA"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern int    Period_MA = 365;  //Период МА 1
extern double Delta = 0.0010;   //На каком расстоянии открывать ордер

string Symb;                  //Название торгового инструмента
//int Total;                  //количество ордеров

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
 {
//----
 
//----
   return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
 {
//----
   ObjectDelete("Obj_Label");
   ObjectDelete("Obj_Label2");
//----
   return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
 {
   
 

double prise = Bid;                                                             //текущая цена
double CurrMAValue = iMA(Symb, Period(),Period_MA, 0,Mode_EMA, PRICE_CLOSE, 0); //значение скользящей средней
double Price2MA = price - CurrMAValue;                                          //расстояние о МА до цены
datetime NextClose = Time(0) + Period()*60*2;                                   //время до закрытия
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1;                    //время до закрытия в минутах

//int err;



//обновление текст информации на графике

ObjectSetText ("Obj_Label", "ТФ" + Period() + ", " + DoubleToStr(price, 4) + ", тик " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0], TIME_MINUTES) + ", NC@" + TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " min)", 10,
ObjectSetText ("Obj_Label2", "Дельта " + DoubleToStr(Delta,4) + ", знач МА " + DoubleToStr(CurrMAValue, 4) + ", расст до МА " + DoubleToStr(Price2MA, 4), 10, "Arial", DarkGreen );
//анализ цены и выдача алертов

if ((MathAbs(Price2MA) < Delta) &&   // если расстоание до МА меньше дельты
   (Price > CurrMAValue) &&          // и цена выше МА
   (Open(0) > CurrMAValue+Delta))    // и текущая свеча открылась выше, чем МА+дельта
( 
   Alert ("Цена подощла к МА сверху");
)

if ((MathAbs(Price2MA) < Delta) &&   // если расстояние до МА меньше дельты
   (price < CurrMAValue) &&          // и цена ниже МА
   (Open(0) < CurrMAValue-Delta))    // и текущая свеча открылась ниже, чем МА-дельта
( 

   Alert ("Цена подошла к МА снизу");
)

   return(0);
}
   
   
//+------------------------------------------------------------------+


Um suporte encaracolado foi deixado de fora.

 
Favor informar como corrigir o erro de quantidade de lotes inválidos para a função FreeMarginCheck na EA, ao definir acidentalmente o valor negativo do volume (lote). Ter uma mensagem sobre o lote errado, sem mensagem de erro, no testador
 
Roman Sharanov:

Preciso integrar ziguezague no meu indicador (agora ele está contando por manivela)

A questão é que meu indicador não usa OnCalculate().

Então como faço para que o ziguezague funcione e como faço para obter taxas_totais e pré_calculadas?

O total de tarifas é o número de barras no gráfico. É determinado usando a função de Barras.

pré_calculado - crie um análogo por conta própria, declare-o globalmente (ou estaticamente) e escreva ali o número de barras realmente calculado na iteração atual. Isso significa que, após cálculos bem sucedidos dos valores do indicador, precisamos registrar o número de barras atuais nele. Se os cálculos não forem bem sucedidos, é melhor anulá-lo a fim de recalcular os valores indicadores para cada barra da história na próxima iteração.

 

Re: Alekseu Fedotov

O que é um aparelho, desculpe

 
berkley75:

Re: Alekseu Fedotov

O que é um aparelho, desculpe

Entre parênteses, o argumento da função peca(30)
Entre parênteses rectos, o índice da matriz x[25].
início nulo()
{
Em bloco de operador com aparelho de frisar
}
 
Olá, você poderia me dizer como mostrar/remover um certo símbolo na janela "visão geral do mercado"?
 
STARIJ:
Entre parênteses, o argumento da função pecado(30)
entre colchetes, o índice da matriz x[25]
início nulo()
{
Em bloco de operador com aparelho de frisar
}
Obrigado, ainda não compila! Mesmo que você coloque uma cinta no final, o que eu notei 17