Como codificar? - página 80

 
 

Escondendo a perda de carga

Alguém poderia dizer como esconder paradas de parada e de trilha em uma EA? (Não gosto da idéia de corretores vendo meus carrinhos ou paradas, é como um alvo para eles). Obrigado.

 
jturns23:
Alguém poderia dizer como esconder paradas de parada e de trilha em uma EA? (Não gosto da idéia de corretores vendo meus carrinhos ou paradas, é como um alvo para eles). Obrigado.

Simples em seu código, você define um valor de parada e um valor-alvo.

Depois de colocar um comércio, você obtém o preço em que entrou no comércio e, em seguida, a cada novo tick, verifica se sua parada ou seu alvo foi atingido.

Se tiver sido atingido, então faça com que a EA execute a função OrderClose.

Pessoalmente, ainda tenho uma parada que o corretor pode ver, embora esteja muito longe da ação de preço 50-100 pips. Desta forma, se o terminal cair por algum motivo, você estará pelo menos protegido contra qualquer movimento brusco.

Abraço,

Hiachiever

 
jturns23:
Alguém poderia dizer como esconder paradas de parada e de trilha em uma EA? (Não gosto da idéia de corretores vendo meus carrinhos ou paradas, é como um alvo para eles). Obrigado.

O que você está procurando implementar é mais freqüentemente chamado de 'soft-stops', onde você rastreia P&L dinamicamente, fechando ordem(s) quando o(s) alvo(s) necessário(s) são atingidos - ao contrário de colocar 'hards-stops', que o corretor pode ver e aumentar...

Uma parada dura de algum grau é essencial imo (para o cenário 'just-in-case'...) mas mesmo isso não o salvará se você tiver um corretor completamente inescrupuloso - como o Fxopen: -

https://www.forex-tsd.com/forum/commercial-talks/9512-complaints-and-brokers-scam#comment_273270

 

uma pergunta difícil!

caros todos

Sou novo para programação no MT4. Terminei um código EA mas quando o testei, houve alguns erros Um deles é, meu código quer abrir 4 pedidos quase ao mesmo tempo e pelo mesmo preço, mas meu EA às vezes pode abrir completamente, mas as outras situações são, os pedidos foram abertos um a um e a um preço diferente.

Você acha que eu posso resolver este problema usando

if(IsTradeAllowed()==falso) Sleep(10000);

vocês todos poderiam me ajudar a resolver este problema?

Obrigado de antemão!

 

Esta é a minha função para fechar todas as posições. Acho que é muito simples, mas a EA sempre gasta muito tempo para fechar todas as posições, o que significa que o preço de fechamento pode variar.

você poderia me ajudar a resolver o problema?

obrigado de antemão!

void close_all_position_now(int total_order)

{

int ticket=0;

volume duplo=0, preço=0;

for(int i=0;i<total_ordem;i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso)

pausa;

// OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

se (OrderMagicNumber()== número_magic && OrderType()==0)

{

ticket=OrderTicket();

volume=OrderLots();

preço=Ordem

OrderClose(ticket,volume,preço,slippage,CLR_NONE);

}

caso contrário se (OrderMagicNumber()== número_magic && OrderType()==1)

{

ticket=OrderTicket();

volume=OrderLots();

preço=Ask;

OrderClose(ticket,volume,preço, slippage,CLR_NONE);

}

senão se(OrderMagicNumber()== número_magic && OrderType()>=2)

{

ticket=OrderTicket();

OrderDelete(bilhete);

}

}

}

 
ys16:
... mas a EA sempre gasta muito tempo para fechar todas as posições, o que significa que o preço de fechamento pode variar....}.

As formas de fechar muitas posições a um mesmo preço são apenas duas:

1) Elas têm o mesmo TP (ou SL).

2) Abrir uma posição oposta com um tamanho do total dos lotes que se deseja fechar. Mais tarde, você pode fazer alguns CloseBy().

Abrir várias posições pelo mesmo preço é o mesmo problema: ou você usa pingentes, ou você abre apenas uma posição do total de lotes, e eventualmente consegue fechamentos parciais.

 
Michel:
As formas de fechar muitas posições pelo mesmo preço são apenas duas:

1) Eles têm o mesmo TP (ou SL).

2) Abrir uma posição oposta com um tamanho do total dos lotes que você deseja fechar. Mais tarde, você pode fazer alguns CloseBy().

Abrir várias posições pelo mesmo preço é o mesmo problema: ou você usa pingentes, ou você abre apenas uma posição do total de lotes, e você administra eventualmente fechamentos parciais.

Prezado Michel,

Muito obrigado. e quanto ao custo? tenho que pagar pela disseminação das posições opostas?

qual é a razão pela qual a EA não pode fechar todas as posições em um tempo muito curto? é porque as ordens fechadas precisam de algum tempo para serem executadas.

às vezes, as 3 posições podem ser fechadas após uma mudança de preço, mas às vezes apenas 1 posição pode ser fechada.

Você tem alguns recursos relacionados à programação da MQL4? Eu não conhecia a escala de tempo para executar a EA.

Eu realmente conheço a programação C porque sou engenheiro, mas minha EA não pode executar totalmente o que programei.

Que tal

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderMagicNumber()== número_magic && OrderType()==OP_BUY)

Você acha que este tipo de função leva muito tempo para ser executada, o que é mais longo do que cada ciclo da EA.

 
ys16:
Prezado Michel,

Muito obrigado. e quanto ao custo? tenho que pagar pela disseminação das posições opostas?

qual é a razão pela qual a EA não pode fechar todas as posições em um tempo muito curto? é porque as ordens fechadas precisam de algum tempo para serem executadas.

às vezes, as 3 posições podem ser fechadas após uma mudança de preço, mas às vezes apenas 1 posição pode ser fechada.

Você tem alguns recursos relacionados à programação da MQL4? Eu não conhecia a escala de tempo para executar a EA.

Eu realmente conheço a programação C porque sou engenheiro, mas minha EA não pode executar totalmente o que programei.

Que tal

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderMagicNumber()== número_magic && OrderType()==OP_BUY)

Você acha que este tipo de função leva muito tempo para ser executada, o que é mais longo do que cada ciclo da EA.

Muitos corretores permitem uma "cobertura total", isto significa que a margem utilizada é calculada sobre a diferença entre as posições longas e as curtas. Portanto, não há margem usada para uma posição com cobertura total, e é possível fechar ambas (uma por outra) sem spread adicional. Portanto, você gasta apenas um spread se você coletar uma posição normalmente ou abrindo uma posição oposta.

Quanto ao tempo, o tempo de execução do código é muito rápido e não tem nada a ver com o tempo da mesa de operações do corretor.

 

especialista em gráfico off-line

Hi,

Estou tentando usar um EA em gráfico off-line (por exemplo, criado pelo period_converter). Eles não recebem carrapatos que precisam ser usados enquanto() loop inside. Entretanto, após alguns minutos, os gráficos offline mostram "Aguardando atualização" e não são mais atualizados. Suspeito que seja uma espécie de impasse, porque quando abro outro gráfico offline, ele é atualizado corretamente, e quando o fecho, o gráfico original fica OK por um tempo até o próximo bloqueio "À espera de atualização".

Estou fazendo algo errado ou isso é um problema do MT4?

Razão: