Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 78
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
Favor responder em ordem de prioridade. Eu tenho um indicador exibido por um gráfico de barras. Ao unir ou após reconectar, mostra um valor op-penny. Estabeleci a condição na primeira partida para reiniciar a 0ª célula da matriz. E eu a coloquei inite - isso não ajudou. Eu o reinicializo no início - ok. (Coloco condição no início: if(GetLastError()==6)zas[0]=0.0; - não ajuda.
Não posso passar sem código.
Dozol:
Tente passar as ordens em ordem inversa.
Amigos, ajudem-me. Preciso fechar todos os pedidos em um par de moedas selecionado. Aqui está o que escrevi (parte do código EA):
int Zakrit_vse() ...
Use SRC para colar código no fórum
Vou colá-lo aqui, talvez vocês encontrem algo interessante para vocês mesmos:
Amigos, ajudem-me. Preciso fechar todos os pedidos em um par de moedas selecionado. Aqui está o que escrevi (parte do código EA):
Por que reinventar a roda quando tudo já foi inventado antes de você. Por exemplo. Não se esqueça disto.
Socorro! Tenho código para um indicador de canal externo (quando o limite superior do canal é atingido, o comércio se abre para vender - fecha quando o limite inferior é atingido, para comprar em ordem inversa). Por razões desconhecidas, não abre negócios, não consigo encontrar o erro. Funciona perfeitamente com outro indicador de canal. Gostaria de especificar imediatamente que todos os amortecedores estão prontos.
O código está anexado.
Lotes duplos externos = 0,1;
Comentário de cadeia externa = "TMA Canal2";
Exterior int TakeProfit = 20;
StopLoss int externo = 20;
escorregamento interno externo = 2; // escorregamento
magia int externa = 124;
cadeia externa Indi = "Dados indicadores";
String externo TimeFrame = " período detempo atual;
período TMAP externo int = 56;
preço interno externo = PREÇO_CLOSE;
duplo ATRMultiplicador externo = 2,0;
período intTRP externo = 100;
duplo TrendThreshold externo = 0,5;
bool externo ShowCenterLine = falso;
duplo PriceHigh, PriceLow, SL, TP;
int ticket;
//+------------------------------------------------------------------+
//| função de iniciação de especialista |
//+------------------------------------------------------------------+
int init()
{
se (Dígitos ==3 || Dígitos ==3) // para um corretor de cinco dígitos
{
TakeProfit *= 10;
StopLoss *= 10;
Slippage *= 10;
}
retorno(0);
}
//+------------------------------------------------------------------+
//| Calcular posições abertas |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(símbolo de corda)
{
int compra=0,vende=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==124)
{
if(OrderType()==OP_BUY) compra++;
if(OrderType()==OP_SELL) vende++;
}
}
//---- volume de pedidos de devolução
if(compra>0) return(compra);
senão devolve(-sells);
}
//+------------------------------------------------------------------+
//| Verifique as condições de pedidos em aberto |
//+------------------------------------------------------------------+
CheckForOpen()
{
preço duplo alto, preço baixo;
int ticket;
//---- go trading only for first tics of new bar
if(Volume[0]>1) voltar;
PriceHigh = iCustom (Symbol(), 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 1, 0);
PriceLow = iCustom (Symbol(), 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 2, 0);
if(Open[1]>PriceHigh ||| Close[1]>PriceHigh ||| High[1]>PriceHigh && Ask<==PriceHigh)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,0, "TMA Canal2",124,0,Red);
retornar;
}
//---- condições de compra
if(Open[1]<PriceLow ||| Close[1]<PriceLow ||| Low[1]<PriceLow && Bid>=PriceLow)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,0, "TMA Canal2",124,0,Blue);
retornar;
}
//----
}
//+------------------------------------------------------------------+
//| Verifique as condições de fechamento do pedido |
//+------------------------------------------------------------------+
verificação nula CheckForClose()
{
preço duplo alto, preço baixo;
//---- go trading only for first tiks of new bar
if(Volume[0]>1) voltar;
PriceHigh = iCustom (Symbol(), 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 1, 0);
PriceLow = iCustom (Symbol(), 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 2, 0);
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderMagicNumber()!=124 || OrderSymbol()!=Symbol()) continua;
//---- check order type
if(OrderType()==OP_BUY)
{
if(Open[1]>PriceHigh ||| Fechar[1]>PriceHigh |||Alto[1]>PriceHigh) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
pausa;
}
if(OrderType()==OP_SELL)
{
if(Open[1]<PriceLow ||| Close[1]<PriceLow ||| Low[1]<PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
pausa;
}
}
//----
}
//+------------------------------------------------------------------+
//| Função Start |
//+------------------------------------------------------------------+
início nulo()
{
//---- verificação de histórico e comércio
if(Bars<100 || IsTradeAllowed()==falso) retorna;
//---- calcular pedidos em aberto pelo símbolo atual
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
senão CheckForClose();
//----
}
//+------------------------------------------------------------------+
Sou novo no mql4, sou bom em trabalhar com SL e TP, mas tenho um problema quando preciso fechar pedidos por um sinal cruzado de um indicador. Não entendo realmente como funciona a função OrderSelect(). Sei que para buscar uma ordem usamos um loop, mas no processo de negociação, a ordem acaba de ser aberta e imediatamente fechada, já que as condições para abrir uma compra coincidem com as condições para fechar uma venda e como explicar que isto não deve ser entendido, por favor explique.
O botão SRC é usado para colar o código!
Como você o escreveu, faça também adições usando a Documentação!
Se você copiou, favor entrar em contato com o autor para revisões ou para trabalhar!
Vou acrescentar mais uma vez. Quantas vezes eu já lhe disse, use o botão na linha superior para inserir o código
E é desejável ater-se aos estilos de escrita de código.... Desejável, mas não essencial. Mas é mais provável que a maioria das pessoas responda com códigos fáceis de entender.
Sou novo no mql4, sou bom em trabalhar com SL e TP, mas tenho um problema quando preciso fechar pedidos por um sinal cruzado de um indicador. Não entendo realmente como funciona a função OrderSelect(). Sei que o laço é usado para procurar ordens, está no código, mas no processo de negociação acontece que a ordem acaba de ser aberta e imediatamente fechada, porque as condições para abrir uma compra coincidem com as condições para fechar a venda e como explicar que isto não deve fazer eu não entendo, por favor explique.
borilunad agradece pela dica, retoca-a, depois você também pode apagar essa mensagem com a citação para não desarrumá-la.