Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 353
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Isto (abaixo) não funciona, escrevi F_Path no explorador, cliquei em enter, o ficheiro abre... A informação do WinApi tem este aspecto?
Quem impede que a bandeira FILE_COMMON seja utilizada na escrita e na leitura? O ficheiro estará disponível para todos os terminais instalados no sistema. Estará na pasta partilhada de todos os terminais.
Em ME File --> Abrir pasta de dados partilhados
Quem impede que a bandeira FILE_COMMON seja utilizada na escrita e na leitura? O ficheiro estará disponível para todos os terminais instalados no sistema. Estará localizado na pasta partilhada de todos os terminais.
Em ME File --> Abrir pasta de dados partilhados
Olá, alguém encontrou este problema ao criar um pedido comercial com parâmetros:
se eu colocar os seguintes parâmetros:
mrequest.action=TRADE_ACTION_DEAL;mrequest.type_filling=ORDER_FILLING_FOK;
mrequest.type=ORDER_TYPE_BUY;
o terminal anuncia que especifiquei um método inválido mrequest.type_filling(política de execução de encomendas); se eu especificar mrequest.type_filling=ORDER_FILLING_RETURN, a encomenda é aberta mas não a posso fechar programmaticamente porque o terminal informa que está a ser utilizado um método inválido. Estou a gerir o Expert Advisor num servidor forex e tudo está a funcionar bem noutros servidores. Alguém pode escrever uma política de execução de ordens que possa ser utilizada no desenvolvimento de robôs comerciais para este corretor? Obrigado.Existe um indicador mq4 com função Alerta.
Por exemplo:
Como fazer para que, ou no canto superior esquerdo da sub-janela (onde o nome do indicador e os parâmetros são normalmente exibidos), ou de alguma outra forma, indique se o sinal está ligado( boolexterno AlertMode=verdadeiro;) ou desligado?Existe um indicador mq4 com função Alerta.
Por exemplo:
Como fazer no canto superior esquerdo da sub-janela (onde o nome do indicador e os parâmetros são normalmente exibidos), ou de alguma outra forma, indicar se o sinal está activado( boolexterno AlertMode=verdadeiro;) ou desactivado?A documentação diz isso:
При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent(), но в индикаторах эта функция в тестере не вызывается. Даже если индикатор имеет обработчик OnChartEvent() и этот индикатор используется в тестируемом эксперте, то сам индикатор не будет получать никаких пользовательских событий.
Neste momento esta afirmação não é relevante - nos indicadores esta função é chamada no testador, pelo menos um indicador pode receber eventos gerados por outro indicador no testador.
O problema é que uma vez que o indicador recebe a chamada desta função, não tem acesso aos dados armazenados nas variáveis declaradas a nível global, e vice-versa - todas as alterações feitas nesta função não são armazenadas nas variáveis de nível de acesso global.
Exemplos:
1. o objecto é declarado globalmente e inicializado na função OnInit. Pode ser acedido a partir da função OnCalculate, mas recebemos uma mensagem de erro na função OnChartEvent - ponteiro inválido
2. existe uma função que produz o conteúdo de uma variável para o periódico (a variável é declarada globalmente). Quando chamamos esta função da OnCalculate obtemos o valor esperado, quando chamamos a mesma função da OnChartEvent obtemos um disparate.
Bom dia!
Enfrentei um problema ao utilizar eventos, particularmente a função OnChartEvent() num indicador. Ao utilizá-lo num Expert Advisor, não há problema, mas no indicador não funciona correctamente. Isto é, o evento ocorre mas não há forma de alterar os campos existentes. Exemplo:
//
int k;
int OnInit() {
k = 0;
ihandleDE = iCustom(_Symbol, _Period, "DrawExtremums");
//< ... >
return(INIT_SUCCEED);
}
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[])
{
Print("OnCalculate(): k =", k);
//< ... >
return(rates_total);
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
string nameEv = "EXTR_UP";
if (sparam == nameEv)
{
Print("OnChartEvent(): k = ", k);
k++;
}
}
//----------------------------------------------------------------------------------------------
Como resultado, obtemos:
"OnCalculate(): k = 0" - sempre.
"OnChartEvent(): k = 0,...,123332" - conta de 0 a ...
Como pode isto ser e porquê!? Existe alguma forma de o resolver? Se alguém compreender, uma resposta seria muito apreciada.
P.S.: Esta injustiça ocorre apenas no testador de estratégias, em tempo real tudo funciona correctamente.
Bom dia!
Enfrentei um problema ao utilizar eventos, particularmente a função OnChartEvent() num indicador. Ao utilizá-lo num Expert Advisor, não há problema, mas no indicador não funciona correctamente. Isto é, o evento ocorre mas não há forma de alterar os campos existentes. Exemplo:
//
int k;
int OnInit()
{ k = 0;
ihandleDE = iCustom(_Symbol, _Period, "DrawExtremums");
//< ... >
return(INIT_SUCCEED);
}
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[])
{
Print("OnCalculate(): k =", k);
//< ... >
return(rates_total)
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
string nameEv = "EXTR_UP";
if (sparam == nameEv)
{
Print("OnChartEvent(): k = ", k);
k++;
}
}
//----------------------------------------------------------------------------------------------
Como resultado, obtemos:
"OnCalculate(): k = 0" - sempre.
"OnChartEvent(): k = 0,...,123332" - conta de 0 a ...
Como pode isto ser e porquê!? Existe alguma forma de o resolver? Se alguém compreender, uma resposta seria muito apreciada.
P.S.: Esta injustiça ocorre apenas no testador de estratégias, em tempo real tudo funciona correctamente.
Boa noite. No seu tempo, o Service Desk deu uma resposta bastante definitiva sobre este assunto: o terminal e o testador de estratégia são dois programas diferentes, e o trabalho dos Consultores/indicadores peritos no testador e no terminal pode diferir significativamente. O que frequentemente funciona no terminal do cliente não funciona no Testador de Estratégia. Por favor, escreva ao Service Desk e forneça-lhes provas e deixe-os arranjá-las.