Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1076

 

Buon pomeriggio, per favore aiutatemi con questa domanda. Ho un codice (da qualche parte scaricato dalla brava gente) - l'essenza del codice è questa: se l'ordine viene chiuso da uno stop loss, viene reimpostato di nuovo con gli stessi parametri. Ma il problema è che se lo eseguo adesso, il codice reinserisce tutti gli ordini per i periodi passati, e io voglio solo gli ordini che hanno chiuso da stoploss per esempio solo per oggi! Quale filtro mettere, si prega di consigliare? Non sai come ottenere la data dell'ordine e confrontarla con la data attuale? Grazie.

  1. doppio OOP=0,OTP=0,OSL=0,OL=0;
  2. int OT=0;
  3. for (int i=OrdersHistoryTotal()-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. se (NormalizeDouble(OrderClosePrice(),Digits)==OSL)
  12. {
  13. OOP = NormalizeDouble(OrderOpenPrice(),Digits);
  14. //OSL = NormalizeDouble(OrderStopLoss(),Digits);
  15. OTP = NormalizeDouble(OrderTakeProfit(),Digits);
  16. OL = OrderLots();
  17. }
  18. altrimenti OOP=0;
  19. pausa;
  20. }
  21. }
  22. }
  23. se (OOP!=0)
  24. {
  25. per (i=0; i<OrdersTotal(); 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_SELL) OT=OP_SELLLIMIT;
  37. se (OrderSend(Symbol(),OT,OL,OOP,0,OSL,OTP,NULL,0,0,clrNONE)==-1);

 
rabanik:   Come ottenere la data dell'ordine e confrontarla con la data corrente

Va bene? if (OrderCloseTime() > iTime(Symbol(), PERIOD_D1, 0) ...

Ma prima di mezzanotte, gli ordini del giorno saranno fitti, e subito dopo mezzanotte, saranno vuoti

RequiredInterval=36000; // 10 ore

È meglio così? se ((TimeCurrent()-OrderCloseTime()) < RequiredInterval) ...

 
LRA:

Se (OrderCloseTime() > iTime(Symbol(), PERIOD_D1, 0) ...

Ma prima di mezzanotte, gli ordini di oggi saranno densi, e subito dopo mezzanotte, saranno vuoti.

RequiredInterval=36000; // 10 ore

È meglio così? se ((TimeCurrent()-OrderCloseTime()) < RequiredInterval) ...

Grazie mille. Farò un tentativo!
 
Ragazzi, non capisco cosa c'è che non va... quando si attraversa, toccando la linea del prezzo, Alert non si spegne e funziona per ogni tick, quindi come posso risolvere il problema? come faccio a farlo suonare per un tempo stabilito, o il numero di volte?
File:
 
Buongiorno, per favore aiutatemi a risolvere il problema, ho impostato il timeframe della MA a 5 minuti per guardarla sul grafico a 1 minuto, è disegnata una in una senza considerare la scala. Grazie!
 

Aiuta chi può, c'è un errore nella riga sottostante. Codice in mt5.

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

 
ara66676: Si verifica un errore nella stringa. Codice in mt5. StringTrimLeft( StringSubstr(ResultSymbols,1,StringLen(StringSubstr(ResultSymbols,0,1))- 1));
Aggiunta la stringa ResultSymbols="12345"; Compilato senza errori. Prova a dividere
 
LRA:
Aggiunta la stringa ResultSymbols="12345"; Compilato senza errori. Prova a dividere in parti
grazie, ho trovato la ragione, nella quinta MT non si possono inserire calcoli nella funzioneStringTrimLeft(), cioè prima si deve dichiarare una stringa, poi assegnarle dei calcoli e poi passare questa stringa alla funzione StringTrimLeft()
 
ObjectGetValueByShift è interpolazione ?
 
mario_SC--:   ObjectGetValueByShift è interpolazione, giusto?
Piuttosto, è un'estrapolazione lineare. L'aiuto dice: Il valore del prezzo è calcolato usando un'equazione lineare