Errori, bug, domande - pagina 1797

 
fxsaber:
Perché la doppia barra agisce sul backslash? E perché la macro porta un commento a doppia barra quando viene attivata?
Il commento non fa parte della macro. La macro dovrebbe essere continua. Un backslash - continua la macro dalla linea successiva. // all'inizio della linea interrompe la macro perché tale linea non può essere terminata con un backslash \
 
A100:
Un commento non fa parte di una macro. Una macro deve essere continua. L'inverso \ continua la macro dalla linea successiva. // all'inizio della linea interrompe la macro perché tale linea non può finire con un backslash \
È quello che sto chiedendo: perché una macro deve considerare una linea con una doppia barra? Dovrebbe.
 

Metaquotes-Demo

SYMBOL_SESSION_PRICE_LIMIT_MIN == 1199.2. Ma anche al prezzo più alto non posso impostare BuyLimit.

 
fxsaber:
Così ho chiesto, perché la macro considera una linea con una doppia barra? Dovrebbe.

In questo caso il commento viene sostituito con una stringa vuota(il testo del commento viene ignorato, mentre la stringa stessa rimane), e la stringa vuota interrompe la macro

#define MACRO  \
  if (true)    \
  {            \
    Print(""); \

  }
 
A100:

In questo caso il commento è sostituito da una linea vuota

#define MACRO  \
  if (true)    \
  {            \
    Print(""); \

  }
Lo trovo illogico. Non dovrebbe esserci nemmeno una linea bianca.
 
fxsaber:
I freni non sembrano essere difficili da riparare se si scrive uno script competente. Ecco cosa viene fuori abbastanza velocemente con un ping di 50ms
2017.02.10 21:32:42.726 Trades  '5122740': exchange buy 1.00 Si-3.17 at market
2017.02.10 21:32:42.796 Trades  '5122740': accepted exchange buy 1.00 Si-3.17 at market
2017.02.10 21:32:42.806 Trades  '5122740': deal #117193624 buy 1.00 Si-3.17 at 58810 done (based on order #133580668)
2017.02.10 21:32:42.808 Trades  '5122740': order #133580668 buy 1.00 / 1.00 Si-3.17 at 58810 done in 81.663 ms
2017.02.10 21:32:42.810 Trades  '5122740': modify #133580668 buy 1.00 Si-3.17 sl: 0, tp: 0 -> sl: 58710, tp: 58910
2017.02.10 21:32:42.886 Trades  '5122740': accepted modify #133580668 buy 1.00 Si-3.17 sl: 0, tp: 0 -> sl: 58710, tp: 58910
2017.02.10 21:32:42.888 Trades  '5122740': modify #133580668 buy 1.00 Si-3.17 -> sl: 58710, tp: 58910 done in 78.188 ms
2017.02.10 21:32:42.888 Trades  '5122740': exchange sell 1.00 Si-3.17 at market, close #133580668 buy 1.00 Si-3.17 58810
2017.02.10 21:32:43.079 Trades  '5122740': accepted exchange sell 1.00 Si-3.17 at market, close #133580668 buy 1.00 Si-3.17 58810
2017.02.10 21:32:43.079 Trades  '5122740': deal #117193626 sell 1.00 Si-3.17 at 58810 done (based on order #133580670)
2017.02.10 21:32:43.080 Trades  '5122740': order #133580670 sell 1.00 / 1.00 Si-3.17 at 58810 done in 192.146 ms
2017.02.10 21:32:43.081 Trades  '5122740': buy limit 1.00 Si-3.17 at 58713
2017.02.10 21:32:43.221 Trades  '5122740': accepted buy limit 1.00 Si-3.17 at 58713
2017.02.10 21:32:43.222 Trades  '5122740': order #133580671 buy limit 1.00 / 1.00 Si-3.17 at market done in 141.851 ms
2017.02.10 21:32:43.222 Trades  '5122740': cancel order #133580671 buy limit 1.00 Si-3.17 at 58713
2017.02.10 21:32:43.652 Trades  '5122740': accepted cancel order #133580671 buy limit 1.00 Si-3.17 at 58713
2017.02.10 21:32:43.653 Trades  '5122740': cancel #133580671 buy limit 1.00 Si-3.17 at market done in 430.484 ms
Solo un promemoria, questo è Metaquotes-Demo. Non riesce a gestire il carico di MT5 per qualche motivo.
Allo stesso modo
2017.02.13 12:44:48.104 Trades  '5122740': buy limit 1.00 RTS-12.17 at 114430
2017.02.13 12:44:48.737 Trades  '5122740': accepted buy limit 1.00 RTS-12.17 at 114430
2017.02.13 12:44:48.739 Trades  '5122740': order #133670570 buy limit 1.00 / 1.00 RTS-12.17 at market done in 634.624 ms
Questa è una risposta a una richiesta come questa.
Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 0
Request.symbol = RTS-12.17
Request.volume = 1.0
Request.price = 114430.0
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_BUY_LIMIT (2)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_DAY (1)
Request.expiration = 1970.01.01 00:00:00
Request.comment = My Order
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 0
Result.order = 133670570
Result.volume = 1.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Request executed 634.708 + 0.002 ms
Result.request_id = 5827
Result.retcode_external = 0
MT5 sta rallentando, purtroppo.
 
fxsaber:
MT5 sta rallentando, purtroppo.

Ancora più figo - la demo era di 1,5 secondi di marcia!

'5122740': accepted exchange sell 1.00 DINRM at market, close #133675792 buy 1.00 DINRM 149.07
'5122740': deal #117297621 sell 1.00 DINRM at 149.07 done (based on order #133675793)
'5122740': order #133675793 sell 1.00 / 1.00 DINRM at 149.07 done in 1596.317 ms

Query

Request.action = TRADE_ACTION_DEAL (1)
Request.magic = 0
Request.order = 0
Request.symbol = DINRM
Request.volume = 1.0
Request.price = 149.04
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_SELL (1)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment =
Request.position = 133675792
Request.position_by = 0
Result.retcode = 10009
Result.deal = 117297621
Result.order = 133675793
Result.volume = 1.0
Result.price = 149.07
Result.bid = 149.04
Result.ask = 149.06
Result.comment = Request executed 1596.364 + 0.209 ms
Result.request_id = 13486
Result.retcode_external = 0
 
Impossibile trovare il parametro di slippage di un ordine a mercato sospeso, che è impostato in Request.deviation.
 
fxsaber:
Lo trovo illogico. Non dovrebbe nemmeno esserci una stringa vuota.
// significa che il commento è dopo, non che l'intera stringa è un commento. Rimuovi // e ottieni una stringa vuota. Per il confronto, aggiungete degli spazi davanti a //
 
A100:
// significa che il commento è dopo, non tutta la stringa è un commento. Se si rimuove //, si ottiene una stringa vuota

D'accordo! Ma nel caso delle macro, questo è scomodo.

Immaginate di prendere un pezzo di codice e di volerlo rendere una macro. Per esempio, sostituire una funzione con una macro.

Sembrerebbe, si mette un backslash alla fine di ogni linea, e il gioco è fatto. Ma no! Dovresti sostituire le doppie barre con /* */. E se /* */ non è in una riga, è un peccato.

Motivazione: