Como codificar? - página 108

 

Executando um script MetaTrader a partir da linha de comando

Quero poder executar um script ou programa a partir da linha de comando que executará uma ordem de compra. Não há nenhuma regra. Quando eu digito a partir da linha de comando, ele deve comprar 1 posição longa EURUSD.

Como isso pode ser feito?

Obrigado,

paco

 

Indicador baseado em seta simples e EA

Olá a todos.

Recentemente eu estava tentando fazer uma simples EA que funcionaria em um indicador baseado em uma seta. Estou tentando fazer a EA para manter uma ordem a qualquer momento. Se a seta apontar para baixo, a ordem de compra anterior é fechada e a ordem de venda é aberta. Se a seta apontar para cima, a ordem de venda anterior é fechada e a ordem de compra é aberta. Estou usando o testador (modo de visualização) para verificar meu código. Parece que, não importa como eu tente, o EA não fecha e abre as posições quando a seta indicadora aponta para cima ou para baixo. O teste posterior confirma que o EA não está funcionando corretamente. Em vez de abrir e fechar as ordens nos pontos da seta mostrados pelo indicador, o EA fecha/abre a ordem em algum momento diferente. Eu não consigo entender porque meu código não funciona.

No início da declaração de início, eu tenho o seguinte código:

if (Tempo[0] == tempo salvo) {

retorno (0);

} else {

savedTime = Tempo [0];

}

Isto (espero) garantirá que o código na declaração inicial seja executado somente quando uma nova barra tiver sido formada. Mais tarde, no corpo da sub-rotina inicial, eu consulto o indicador com a função iCustom. A solicitação é a seguinte:

iCustom (... 1)

O último argumento de um especifica a barra formada anteriormente, razão pela qual ela não é 0. No entanto, mais tarde eu fecho a ordem aberta com OrderClose e abro uma nova com OrderSend. Suponho que ambas as funções devem ser capazes de executar instantaneamente.

O resultado final é: Estou tentando criar um EA baseado em um indicador de seta. O indicador aponta para cima ou para baixo. Na minha opinião (e provavelmente estou errado), a única coisa que preciso fazer é fechar a ordem anterior e abrir uma nova quando a próxima barra tiver se formado. Eu apreciaria muito qualquer entrada neste problema.

Obrigado a todos.

 

Alguém pode me dizer como codificar para colocar a data de expiração no indicador?

Obrigado.

 
 
newdigital:
Veja esta linha https://www.mql5.com/en/forum/174194

Obrigado por esse link. Finalmente fui encontrada a página que estou procurando aqui

 

Como obter 2 indicadores em janela com 1 lugar?

Alguém pode refrescar minha mente sobre como obter 2 indicadores em uma janela separada de modo que eles se sobreponham??

Obrigado por sua assistência com antecedência!

Dave

 

A EA precisava apenas abrir pedidos

Olá a todos,

Eu estava apenas me perguntando se alguém poderia me ajudar a criar uma EA que apenas abre 4 pedidos diferentes às 00:00 da manhã GMT para qualquer par.

1 compra de lote

1 compra de lote

1 lote vendido

1 lote vendido

a serem abertos todos às 00:00GMT

obrigado pela assistência

Ryan56

 
bdht:
Olá a todos.

Recentemente eu estava tentando fazer uma simples EA que funcionaria em um indicador baseado em uma seta. Estou tentando fazer a EA para manter uma ordem a qualquer momento. Se a seta apontar para baixo, a ordem de compra anterior é fechada e a ordem de venda é aberta. Se a seta apontar para cima, a ordem de venda anterior é fechada e a ordem de compra é aberta. Estou usando o testador (modo de visualização) para verificar meu código. Parece que, não importa como eu tente, o EA não fecha e abre as posições quando a seta indicadora aponta para cima ou para baixo. O teste posterior confirma que o EA não está funcionando corretamente. Em vez de abrir e fechar as ordens nos pontos da seta mostrados pelo indicador, o EA fecha/abre a ordem em algum momento diferente. Eu não consigo entender porque meu código não funciona.

No início da declaração de início, eu tenho o seguinte código:

if (Tempo[0] == tempo salvo) {

retorno (0);

} else {

savedTime = Tempo [0];

}

Isto (espero) garantirá que o código na declaração inicial seja executado somente quando uma nova barra tiver sido formada. Mais tarde, no corpo da sub-rotina inicial, eu consulto o indicador com a função iCustom. A solicitação é a seguinte:

iCustom (... 1)

O último argumento de um especifica a barra formada anteriormente, razão pela qual ela não é 0. No entanto, mais tarde eu fecho a ordem aberta com OrderClose e abro uma nova com OrderSend. Suponho que ambas as funções devem ser capazes de executar instantaneamente.

O resultado final é: Estou tentando criar um EA baseado em um indicador de seta. O indicador aponta para cima ou para baixo. Na minha opinião (e provavelmente estou errado), a única coisa que preciso fazer é fechar a ordem anterior e abrir uma nova quando a próxima barra tiver se formado. Eu apreciaria muito qualquer entrada neste problema.

Obrigado a todos.

Se você olhar para seu sinal apenas uma vez uma barra e seu "sistema" fechar e inverter quando o sinal mudar, é importante verificar a saída ANTES de verificar a entrada. Caso contrário, quando um novo sinal de entrada estiver lá, a EA não poderá entrar no comércio porque o sinal anterior ainda está aberto. E quando o EA fechar a posição, ele entrará somente na próxima barra, porque entra nesta parte do código somente uma vez uma barra.

Espero que isso faça sentido (com meu inglês!).

FerruFx

 
Dave137:
Alguém pode refrescar minha mente sobre como colocar 2 indicadores em uma janela separada para que eles se sobreponham?

Obrigado por sua assistência de antemão!

Dave ...

Veja esta página: https://www.mql5.com/en/forum/172923

 

Bem, isto resolverá seu novo problema de bar (obtido de um artigo em mql4.com):

bool funcIsNewBar()

{

bool res=false;

// the array contains open time of the current (zero) bar

// for 7 (seven) timeframes

static datetime _sTime[7];

int i=6;

int timeFrame = Period();

switch (timeFrame)

{

case 1 : i=0; break;

case 5 : i=2; break;

case 15 : i=3; break;

case 30 : i=4; break;

case 60 : i=5; break;

case 240: i=6; break;

case 1440:break;

default: timeFrame = 1440;

}

//----

if (_sTime==0 || _sTime!=iTime(Symbol(),timeFrame,0))

{

_sTime = iTime(Symbol(),timeFrame,0);

res=true;

}

//----

return(res);

}[/CODE]

Call this function like this

int start()

{

if (funcIsNewBar)

{

//run some code

}

return (0);

}

That'll get code to run ONLY when there is a new bar.

What you need to do is find out in the data window of MT4 what the values are when there is NO arrow being put on the chart by your indicator. For example, the indicator may may have 0's or may be blank.

So all you do then is call the value of the indicator at each open [CODE]varMyIndieValue=iCustom();

if (varMyIndieValue>0) //there's an arrow

{

//run some code

}
bdht:
Olá a todos.

Recentemente eu estava tentando fazer uma simples EA que funcionaria em um indicador baseado em uma seta. Estou tentando fazer a EA para manter uma ordem a qualquer momento. Se a seta apontar para baixo, a ordem de compra anterior é fechada e a ordem de venda é aberta. Se a seta apontar para cima, a ordem de venda anterior é fechada e a ordem de compra é aberta. Estou usando o testador (modo de visualização) para verificar meu código. Parece que, não importa como eu tente, o EA não fecha e abre as posições quando a seta indicadora aponta para cima ou para baixo. O teste posterior confirma que o EA não está funcionando corretamente. Em vez de abrir e fechar as ordens nos pontos da seta mostrados pelo indicador, o EA fecha/abre a ordem em algum momento diferente. Eu não consigo entender porque meu código não funciona.

No início da declaração de início, eu tenho o seguinte código:

if (Tempo[0] == tempo salvo) {

retorno (0);

} else {

savedTime = Tempo [0];

}

Isto (espero) garantirá que o código na declaração inicial seja executado somente quando uma nova barra tiver sido formada. Mais tarde, no corpo da sub-rotina inicial, eu consulto o indicador com a função iCustom. A solicitação é a seguinte:

iCustom (... 1)

O último argumento de um especifica a barra formada anteriormente, razão pela qual ela não é 0. No entanto, mais tarde eu fecho a ordem aberta com OrderClose e abro uma nova com OrderSend. Suponho que ambas as funções devem ser capazes de executar instantaneamente.

O resultado final é: Estou tentando criar um EA baseado em um indicador de seta. O indicador aponta para cima ou para baixo. Na minha opinião (e provavelmente estou errado), a única coisa que preciso fazer é fechar a ordem anterior e abrir uma nova quando a próxima barra tiver se formado. Eu apreciaria muito qualquer entrada neste problema.

Obrigado a todos.
Razão: