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 1076

 

Boa tarde, por favor, ajude com esta pergunta. Eu tenho um código (em algum lugar baixado das pessoas boas) - a essência do código é esta: se a ordem é fechada por uma parada de perda, ela é reajustada com os mesmos parâmetros. Mas o problema é que se eu o executar agora mesmo, o código reinsere todas as ordens para períodos passados, e eu quero apenas aquelas ordens que fecharam por perda de estoque, por exemplo, apenas para hoje! Que filtro colocar, por favor, informe? Não sabe como obter a data do pedido e comparar com a data atual? Obrigado.

  1. duplo OOP=0,OTP=0,OSL=0,OL=0;
  2. int OT=0;
  3. para (int i=OrdensHistóriaTotal()-1; i>=0; i--)
  4. {
  5. if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
  6. {
  7. OT = OrderType();
  8. OSL = NormalizeDouble(OrderStopLoss(),Digits);
  9. se (OT<2)
  10. {
  11. if (NormalizeDouble(OrderClosePrice(),Digits)==OSL)
  12. {
  13. OOP = NormalizeDouble(OrderOpenPrice(),Digits);
  14. //OSL = NormalizeDouble(OrderStopLoss(),Digits);
  15. OTP = NormalizeDuplo(OrderTakeProfit(),Dígitos);
  16. OL = OrderLots();
  17. }
  18. senão OOP=0;
  19. pausa;
  20. }
  21. }
  22. }
  23. se (OOP!=0)
  24. {
  25. para (i=0; i<OrdensTotal(); i+++)
  26. {
  27. se (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  28. {
  29. se (OrderSymbol()==Symbol())
  30. {
  31. if (NormalizeDouble(OrderOpenPrice(),Digits) == OOP && OL == OrderLots()) return(0)
  32. }
  33. }
  34. }
  35. se (OT===OP_BUY) OT=OP_BUYLIMIT;
  36. se (OT===OP_SELLL) OT=OP_SELLLIMIT;
  37. se (OrderSend(Symbol(),OT,OL,OOP,0,OSL,OTP,NULL,0,0,clrNONE)===-1);

 
rabanik:   Como obter a data do pedido e compará-la com a data atual

Está OK? se (OrderCloseTime() > iTime(Symbol(), PERIOD_D1, 0) ...

Mas antes da meia-noite, as ordens do dia serão grossas, e imediatamente após a meia-noite, elas estarão vazias

Intervalo requerido=36000; // 10 horas

É melhor assim? se ((TimeCurrent()-OrderCloseTime()) <Intervalo necessário) ...

 
LRA:

Isto serve? se (OrderCloseTime() > iTime(Symbol(), PERIOD_D1, 0) ...

Mas antes da meia-noite, as ordens de hoje serão densas, e logo após a meia-noite, elas estarão vazias.

Intervalo requerido=36000; // 10 horas

É melhor assim? se ((TimeCurrent()-OrderCloseTime()) <Intervalo necessário) ...

Muito obrigado. Vou tentar!
 
caras, não entendo o que está errado... ao cruzar, tocando a linha de preço, o Alerta não se cala e funciona para cada carrapato, então como faço para consertá-lo? como faço para que ele apite por um tempo determinado, ou o número de vezes?
Arquivos anexados:
 
Boa tarde! Por favor, ajude-me a resolver este problema. Coloquei um prazo de 5 minutos no MA para vê-lo em um gráfico de 1 minuto, ele é desenhado um a um sem considerar a escala. Obrigado!
 

Ajude quem puder, há um erro na linha abaixo. Código em mt5.

StringTrimLeft( StringSubstr(ResultSymbols,1,StringLen(StringSubstr(ResultSymbols,0,1))- 1));

 
ara66676: Ocorre um erro na linha. Código em mt5. StringTrimLeft( StringSubstr(ResultSymbols,1,StringLen(StringSubstr(StringSymbols,0,1))- 1));
Adicionado string ResultSymbols="12345"; Compilado sem erros. Tente a divisão
 
LRA:
Adicionado string ResultSymbols="12345"; Compilado sem erros. Tente dividir-se em partes
obrigado, encontrei o motivo, na quinta MT você não pode inserir cálculos na funçãoStringTrimLeft(), ou seja, primeiro você tem que declarar uma string, depois atribuir cálculos a ela e depois passar esta string para a função StringTrimLeft()
 
ObjectGetValueByShift é interpolação ?
 
mario_SC--:   ObjectGetValueByShift é interpolação, certo?
Ao contrário, é uma extrapolação linear. A ajuda diz: O valor do preço é calculado usando uma equação linear