Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 383

 
Vitalie Postolache:

Se não for externo - PositionClose

Também pode abrir uma posição com o mesmo volume na direcção oposta, o que resultará num fecho.

não tem tal função ?
 
Tapochun:

Definimos duas variáveis locais na função OnTick do tipo bool: buyExist = falso e sellExist = falso.

Quando chega um novo tick, verifica se há alguma encomenda que pertença a esta EA. Se houver uma ordem de venda, sellExist = verdadeiro e a mesma coisa com a ordem de compra. E depois verifica se buyExist = true - não abrir uma ordem de compra. O mesmo se aplica à venda. Isto é tudo.

Para que precisamos de variáveis desnecessárias se de qualquer forma vamos verificar se existem posições em aberto?

Verificámos se existem posições de Compra - não há posições de Compra abertas, nós abrimos uma. Porque é que precisamos de variáveis?

 
Artyom Trishkin:

Porque precisamos de variáveis extra se de qualquer forma estamos a verificar posições em aberto?

Verificamos para Comprar - não Comprar aberto - abrimos um, verificamos para Vender - não Vender aberto - abrimos um. Porque é que precisamos de variáveis?

Podemos fazê-lo desta forma. Apresentei-o simplesmente na minha mente como uma função de verificação separada onde as bandeiras são passadas por referência. Neste caso, a minha variante desempenha apenas uma função - verificar as encomendas e não verificar+abrir. Seria mais fácil alargar o programa. Em suma - uma função - uma acção.
 
Artyom Trishkin:

Porque precisamos de variáveis extra se de qualquer forma estamos a verificar posições em aberto?

Verificamos para Comprar - não Comprar aberto - abrimos um, verificamos para Vender - não Vender aberto - abrimos um. Porque é que precisamos de variáveis?

Pensei que seria semelhante à OrderTotal.
 
le0nid2014:
Pensei que seria algo como OrderTotal, mas aqui tem de fazer o ressalto e escrever a função para reconhecer as ordens?
Como se pode fazê-lo sem força bruta? Pode ter muitas encomendas de muitos Consultores Especialistas para muitos símbolos de uma só vez. Quer que o seu consultor especializado processe apenas as suas próprias encomendas, não é verdade?
 
Tapochun:
Poderia fazer isso. Imaginei-o na minha cabeça como uma função de verificação separada, onde as bandeiras são passadas por referência. Neste caso, a minha variante, desempenha apenas uma função - verificar as encomendas, não verificar+abrir. Seria mais fácil alargar o programa. Em suma - uma função - uma acção.

Bem, a verificação é uma chamada de função que devolve uma bandeira:

if(!Function_check_open_position(symbol, OP_BUY,magic)) function_open_position(symbol,OP_BUY,Lots,stop_loss,take_profit,magic,comment);
if(!Function_check_open_position(symbol,OP_SELL,magic)) Função_open_position(symbol,OP_SELL,Lots,stop_loss,take_profit,magic,comment);

 
le0nid2014:
Pensei que seria algo como OrderTotal.
É claro, procurar uma ordem de mercado por símbolo, tipo e mágico, e devolver o resultado da pesquisa: verdadeiro - sim, falso - não.
 
new-rena:
não tem tal função ?
Sim, o meu erro quando eu disse "sem inlúdios", essa função está apenas no Trade.mqh inluder.
 
Tapochun:
Como o pode fazer sem se esforçar demasiado? Pode ter um amontoado de encomendas de um amontoado de Consultores Especialistas sobre um amontoado de símbolos ao mesmo tempo. E quer que a sua EA processe apenas as suas encomendas, não é verdade?

é uma adição inicial ao robô principal . o robô principal tem sempre duas ordens abertas em ambas as direcções (o robô principal apanha-as, mas o próprio robô principal não consegue arrancar . Quando o robô principal termina uma das direcções, fecha-o) e depois esta EA deve abrir novamente uma ordem na direcção do mercado onde não há ordem.

só precisamos de lhe acrescentar condições de abertura de encomendas


Lotes duplos externos = 1,00;

externo int MagicNumb = 698541; //Magic


int start ()

{


se(OrdersTotal() == 0 && ********** )

OrderSend("USDCHF",OP_BUY,Lots,Ask,0,0,0,0, "5891",MagicNumb,0,Red);


se (OrderTotal() == 0 && ***********)

OrderSend("USDCHF",OP_SELL,Lots,Bid,0,0,0,0, "58892",MagicNumb,0,Red);


}

 
le0nid2014:
é uma adição inicial ao robô principal . o robô principal tem sempre duas ordens abertas em ambas as direcções (o robô principal apanha-as, mas o próprio robô principal não consegue arrancar . Quando o robô principal termina uma das direcções, fecha-o) e depois esta EA deve abrir novamente uma ordem na direcção do mercado em que não há ordem.
Os dois EAs devem ter os mesmos feiticeiros. Devem ser lançados em diferentes gráficos para um símbolo. Em geral, é claro, é mais fácil melhorar a EA principal do que construir outra.