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
Comprar e vender na década de 100
Zamanibe,
Entendo o que você escreveu, mas não vejo como você fecha com lucro.
Isto me parece uma EA do tipo Hedge.
Há vários desses em Forex-tsd,
e você não tem que Martingale.
Grande Seja
Qualquer pessoa pode compartilhar idéias/código sobre como fechar um pedido no valor TakeProfit.
Por alguma razão 'TakeProfit' na função OrderSend() nem sempre funciona em pedidos curtos/vendidos em MT4, embora funcione bem em pedidos longos/comprados.
Eu escrevi algum código comparando o valor TakeProfit do pedido com o preço atual, mas não funciona corretamente. Alguma idéia?
euroLongs são fechados a preço de "compra", enquanto que os shorts são fechados a preço de "compra".
Zamanibe,
Entendo o que você escreveu, mas não vejo como você fecha com lucro.
Isto me parece uma EA do tipo Hedge.
Há vários desses em Forex-tsd,
e você não tem que Martingale.
Grande SejaVejo o mercado se movimentar em ondas para cima e para baixo alguma semana você recebe 2 ciclos para cima/para baixo eu tenho uma estratégia diferente quando ela tende. i comercial manualy
por favor, me encaminhe para a sebe ea . Eu vejo muito disso . mas não o que excatly o que eu quero.
problema de código ou de plataforma?
Os longos são fechados por "lances", enquanto que os calções são fechados por "pedidos".
Obrigado por responder.
Por alguma razão, meu código não funciona:
se (OrderSelect(orderNo, SELECT_BY_TICKET)==verdadeiro) {
if (OrderType() == OP_BUY && Close[0] >= OrderTakeProfit()) CloseOrder(OrderNo);
if (OrderType() == OP_SELL && Close[0] <= OrderTakeProfit()) CloseOrder(orderNo); }
Agradecia um conselho.
euro
Obrigado por responder.
Por alguma razão, meu código não funciona:
if (OrderType() == OP_BUY && Close[0] >= OrderTakeProfit()) CloseOrder(orderNo);
if (OrderType() == OP_SELL && Close[0] <= OrderTakeProfit()) CloseOrder(orderNo); }
[/PHP]
I would be grateful for advice.
euroCerto; "Fechar[0]" é o preço de "oferta", que não é o preço contra o qual um OP_SELL é fechado. Um OP_SELL é fechado contra o preço "ask", que é alguns poucos pips (aka spread) acima do preço "bid".
Quando seu EA é executado, o preço "bid" também está disponível como a variável chamada "Bid" e o preço "ask" como a variável chamada "Ask". Portanto, o trecho de código ficaria mais bonito:
[PHP]if (OrderSelect(orderNo, SELECT_BY_TICKET)==verdadeiro) {
if (OrderType() == OP_BUY && Bid >= OrderTakeProfit()) CloseOrder(OrderNo);
if (OrderType() == OP_SELL && Ask <= OrderTakeProfit()) CloseOrder(orderNo); }
Por favor, ajude em código, obrigado...
Hi,
Tenho novidades por escrito EA, estava tentando o seguinte, mas recebi um erro de "Invalid ticket for OrderModify function", Alguém pode, por favor, dar uma olhada e ajudar? Agradecemos antecipadamente.
void ModifyHedgeSL(int SL) {
se (SL<1) retornar;
bool bres;
dupla sl,openadj;
if (lastopenbuy===1 && lastopensell==0) {openadj=Ask-Bid;} else {openadj=0;}
for (int i = 0; i < OrderTotal(); i++) {
OrderSelect (i, SELECT_BY_POS,MODE_TRADES);
if ( OrderSymbol() == Symbol() || OrderMagicNumber() == expertId && OrderType() == OP_BUY )
{
sl = GetLastLongOpenPrice()-openadj-SL*Point;
bres = OrderModify (OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, White);
if (bres) Print("Modifing Hedge BUY completed");
if (!bres) Print("Error Modifying Hedge BUY order : "ErrorDescription(GetLastError()));
}
if ( OrderSymbol() == Symbol() || OrderMagicNumber() == expertId && OrderType() == OP_SELLL )
{
sl = GetLastShortOpenPrice()-openadj+SL*Point;
bres = OrderModify (OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, Gold);
if (bres) Print("Modifing Hedge SELL completed");
if (!bres) Print("Error Modifying Hedge SELL order: "ErrorDescription(GetLastError()));
}
}
retornar;
}
duplo GetLastLongOpenPrice() {
int ord;
dobro LastLongOpenPrice=0;
//----
para (int i = 0; i <= OrderTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber()==expertId && OrderType() == OP_BUY)
{
LastLongOpenPrice=OrderOpenPrice();
}
}
if (LastLongOpenPrice>0) {return(LastLongOpenPrice);}
senão {retorno(-1);}
}
Como codificar pedidos de compra/venda quando o SL é atingido
Por exemplo, se eu comprar 1 lote de EUR/JPY a 164,30 e Sl a 164,00.
se o SL for atingido, então eu farei outra compra pelo mesmo preço, 164,30, com o mesmo SL a 164, e com mais lotes, digamos 1,5. Então, se o SL for atingido novamente, outra ordem de compra será colocada para comprar 2 lotes ao mesmo preço com o mesmo SL.
Existe algum código para isto? Obrigado!
Por exemplo, se eu comprar 1 lote de EUR/JPY a 164,30 e Sl a 164,00.
se o SL for atingido, então farei outro pedido de compra ao mesmo preço, 164,30, com o mesmo SL a 164, e com mais lotes, digamos 1,5. Então, se o SL for atingido novamente, outra ordem de compra será colocada para comprar 2 lotes ao mesmo preço com o mesmo SL.
Existe algum código para isto? Obrigado!Veja este tópico sobre Frank EA https://www.mql5.com/en/forum
Acho que é o que você precisa ou você pode usá-lo como exemplo.
ok
Veja este tópico sobre Frank EA https://www.mql5.com/en/forumI pense que é o que você precisa ou você pode usá-lo como exemplo.
tks muito newdigital, quaisquer perguntas que eu colocarei aqui. tks novamente.
Edição TP
if (OrderType() == OP_BUY && Bid >= OrderTakeProfit()) CloseOrder(orderNo);
if (OrderType() == OP_SELL && Ask <= OrderTakeProfit()) CloseOrder(orderNo); }
Ralph,
como você pode ver, chamo uma função separada CloseOrder() onde eu tinha usado 'Ask' e 'Bid' como você recomenda, mas o problema ainda existe.
// Função CloseOrder() **********************************************************
bool CloseOrder(int orderT) {
duplo sA;
se (OrderSelect(orderT, SELECT_BY_TICKET)==verdadeiro) {
if (OrderType() == OP_BUY) sA = Bid;
else sA = Perguntar;
bool bClosed = OrderClose(orderT,OrderLots(),sA,0,CLR_NONE);
se (bClosed == 1) {
pTrades = 0; retorno(1); }
caso contrário retornar(0); }}}}}
**********************************************************
Eu esperava que fosse uma quarentena para que o comércio fosse fechado uma vez que o TP fosse atingido, mas não é o caso, veja quadro anexo, onde o pedido curto foi aberto em 104,03 com TP em 103,79. Por outro lado, o preço bateu (TP) e a ordem não foi fechada.