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
Como eu configuro o Time Trading Hour em um EA?
Eu estava tentando isto;
no TradeHour;
if(Hora()17) TradeHour = falso;
mas não parece estar obedecendo à regra, apenas negocia quando e eu tenho && TradeHour nas minhas declarações de compra/venda.
ObrigadoVocê já tentou definir TradeHour como um booleano em vez de um número inteiro?
bool TradeHour;
if ((Hour()17)){ TradeHour = false;}Além disso, você pode precisar dos parênteses adicionais.
Como eu configuro o horário de negociação do tempo em um EA?
Eu estava tentando isto;
no TradeHour;
if(Hora()17) TradeHour = falso;
mas não parece estar obedecendo à regra, apenas negocia quando e eu tenho && TradeHour nas minhas declarações de compra/venda.
ObrigadoComo a Hora() pode ser inferior a 9 E superior a 17? Você quis dizer Ou (|||)?
Lux
Como Hora() pode ser inferior a 9 E superior a 17? Você quis dizer Or (|||)?Lux
Bom ponto luxinterior! Isso é um problema definitivo. Eu perdi isso.
Desculpe, eu quis dizer |||
e eu estava tentando fazer isso;
//+--------- Variáveis de hora comercial------------------
// se (Hora() < StartHour) TradeHourS = falso;
// if (Hora() > FimHora) TradeHourE = falso;
Então, se StartHour=5 e EndHour=17 ele só deve ser comercializado dentro dessas horas corretamente?
Mas ele ainda comercializa a qualquer momento ??? é um problema usando o Strategy Tester?
Por que não usar apenas o exemplo direto do arquivo de ajuda?
bool is_siesta=false;
if(Hour()>=12 || Hour()<17)
is_siesta=true;
Lux
Cadeia de retorno de um c/c++ DLL de funções exportadas
Olá a todos,
Eu desenvolvi um conjunto de funções para gerenciar as configurações de uma EA.
Essas funções são exportadas por uma DLL c++ e cada uma das funções exportadas tem a chamada __stdcall call convetion solicitada pelo meu MQL4.
Meu problema surge quando uma função precisa retornar uma string para o EA.
Naturalmente, a função não pode:
- retornar um ponteiro a uma variável local (a variável sai do escopo)
- retornar um ponteiro para uma variável global dll (problemas com acesso simultâneo)
- devolver um ponteiro a um monte de cordel alocado (preciso de funções para liberar a memória para ser chamado da EA: não gosto desta abordagem)
Portanto, resolvi passar um fio e um tamanho de fio da EA. Es:
string buffer;
GetString( buffer, 30 );
[/CODE]
and from the c++ dll, something like this
void __stdcall GetString( LPTSTR buffer, int BufSize )
{
// Read a string from a some source
....
// -1 to take into account the terminating null character
StringCchCopy( buffer, BufSize-1, ReadStringFromASource );
}
[/CODE]
Here starts the weird behaviour of MQL managing strings returned from a DLL.
using the following code:
string buffer;
GetString( buffer, 30 );
the first time buffer contains the right string. A first question arises: buffer is not initialized but after calling GetString it contains the string returned. I have to suppose that MQL allocates space for a string variable when it's declared.
Next time GetString() is called the string returned seems to be truncated to the length-1 of the previous string length and not resetted as expected because of the 'string buffer;' statement.
Tried even:
[CODE]
string buffer = " "; // 'allocate' 30 blank characters
GetString( buffer, StringLen(buffer) );
but after the first time, when the execution returns to this code, the assignment of buffer does not work any more and buffer still contains the previous read string, and it seems it can only contains the number of characters of his content.
At first I have thought that the null character is not handled very well by MQL and modified the c++ code like this ...
[CODE]
CopyMemory( buffer, ReadStringFromASource, min(BufferSize,ReadStringFromASourceLength) );
e não acrescentar o caráter nulo terminante.
Mas quando chamado da MQL, nenhuma cadeia de caracteres está retornando.
Alguém tem uma resposta?
Por que não usar apenas o exemplo direto do arquivo de ajuda?
bool is_siesta=false;
if(Hour()>=12 || Hour()<17)
is_siesta=true;
Sim, eu tentei fazer isso;
bool TradeHour=false;
if(Hour()>=12 || Hour()<17) TradeHour=verdadeiro
mas a linha OR não vai funcionar porque se a Hora for 22, então ela satisfaz a primeira parte "if(Hour()>=12" e ainda negocia quando quer e eu adicionei && TradeHour às declarações de compra/venda. O segundo exemplo que eu dei deveria para o truque, eu não entendi
Por que não usar apenas o exemplo direto do arquivo de ajuda?
bool is_siesta=false;
if(Hour()>=12 || Hour()<17)
is_siesta=true;
[/code]
LuxAcho que se seu objetivo é negociar entre 12:00 e 17:00, você simplesmente tem que fazer o seguinte:
[código]
bool TradingEnabled=false; // Variável global
...
...
TradingEnabled=false; // Redefinir cada execução do tique
if(Hora()>=12 && Hora()<17)
TradingEnabled=true;
...
...
if( TradingEnabled )
{
// Lógica comercial aqui
}
...
...
Acho que se seu objetivo é negociar entre 12:00 e 17:00, você simplesmente tem que fazer o seguinte:
bool TradingEnabled=false; // Global variable
...
...
TradingEnabled=false; // Reset every tic run
if(Hour()>=12 && Hour()<17)
TradingEnabled=true;
...
...
if( TradingEnabled )
{
// Trading logic here
}
...
...
Não estou fazendo a mesma coisa ao fazer isto?
se (Hora() 17) TradeHour = falso;
Ou seja, se a hora estiver entre 12 e 17 TradeHour=verdadeiro , correto?
(Adicionando && TradeHour na minha declaração de compra/venda)
Como a Hora() pode ser inferior a 9 E superior a 17? Você quis dizer Ou (|||)?Lux
Oh, e eu quis dizer && porque seu direito a hora não pode ser inferior a 9 E superior a 17 o que torna a afirmação falsa, mas se a Hora é 10 então não é inferior a 9 E não superior a 17 então a afirmação torna-se verdadeira.
Talvez fazer isso dessa forma confunda o MT4 comprar de qualquer maneira funciona assim;
em TradeHour;
TradeHour = ((Hour()>=StartHour) && (Hour()<EndHour));
Obrigado