Trovare difficoltà nell'inviare ordini. - pagina 3

 
Beh, sembra che CT Trade lo sia.
 
Non gli piace la dimensione del lotto dinamico? Funziona con il ct trade, quando uso una dimensione fissa del lotto.
 
MetaNt:
Non gli piace la dimensione dinamica del lotto? Funziona con il ct trade, quando uso una dimensione di lotto fissa.

CTrade è un wrapper per OrderSend().

Hai scritto che non funziona con un volume di 0,07 o anche di 1. Come lo definisci? Lotto=0.07 ?

 
angevoyageur:

CTrade è un wrapper per OrderSend().

Hai scritto che non funziona con un volume di 0,07 o anche di 1. Come lo definisci? Lotto=0.07?

Non ero sicuro di aver scritto correttamente Mqlrequest e Mqlresult e così ho usato invece CTrade, ho scoperto che funzionava se usavo volumi fissi, e ora ho scoperto che posso moltiplicare i volumi fissi per interi, ma se provo a modificare i volumi con frazioni ottengo errori come invalid lotsize, il risultato del lotto modificato viene stampato con l'errore[volume non valido].
 
Sono decimali di una certa complessità, proverò a normalizzare il doppio.
 
MetaNt:
Sono decimali di una certa complessità, proverò a normalizzare il doppio.
Normalize double è fornito un fix per i decimali complessi, lo proverò sul mio lotto dinamico.
 
MetaNt:
Normalize double è fornito un fix per i decimali complessi, lo proverò sul mio lotto dinamico.

Fisso.

Sembra che fosse uno dei miei fattori di scala da alcune equazioni che si trovano al di fuori del CT Buy/Sell. Non era un problema che avevo incontrato in mql4 quindi mi ci è voluto un po' per individuarlo, dovrò fare attenzione a questo se mql4 si aggiorna di nuovo.

Per chiunque altro abbia questo problema, usate 2 per la parte di cifra della funzione NormalizeDouble().

 

007 dici?

Forse dovresti chiedere al signor Bond ;-)

 

Sembra che mi stia imbattendo nello stesso problema qui. Ho confermato che la dimensione del lotto soddisfa i requisiti SYMBOL_VOLUME_MIN, SYMBOL_VOLUME_MAX e SYMBOL_VOLUME_STEP.

Per esempio ottengo questo:

2014.04.07 14:49:35 2014.04.04 16:00:00 CTrade::OrderSend: instant sell 0.53 EURUSD at 1.36934 sl: 1.37434 tp: 1.35934 [volume non valido]

Durante il backtesting dell'EA con questo simbolo e queste specifiche:


Qui il codice che sto usando per inviare l'ordine:

int    losses=1;
int    DecimalPoints=2;
 double Risk=0.03;
double Inc=0.1;
my_symbol=Symbol();
leverage=AccountInfoInteger(ACCOUNT_LEVERAGE);
contract=SymbolInfoDouble(my_symbol,SYMBOL_TRADE_CONTRACT_SIZE);
min_lot=SymbolInfoDouble(my_symbol,SYMBOL_VOLUME_MIN);
max_lot=SymbolInfoDouble(my_symbol,SYMBOL_VOLUME_MAX);
trade_size=equity*(Risk/100)*leverage;
trade_size/=contract;
trade_size+=losses*Inc;
NormalizeDouble(trade_size,DecimalPoints);
  if(trade_size<min_lot)
    {
     trade_size=min_lot;
    }
  else if(trade_size>max_lot)
    {
     trade_size=max_lot;
    }
trade.Sell(trade_size,my_symbol,price,0,price-tp,"Expert Sell");

EDIT:

Naturalmente posso piazzare manualmente operazioni con questa esatta dimensione del lotto.

 
Candles:

Mi sembra di incorrere nello stesso problema qui. Ho confermato che la dimensione del lotto soddisfa i requisiti SYMBOL_VOLUME_MIN, SYMBOL_VOLUME_MAX e SYMBOL_VOLUME_STEP.

Per esempio ottengo questo:

2014.04.07 14:49:35 2014.04.04 16:00:00 CTrade::OrderSend: instant sell 0.53 EURUSD at 1.36934 sl: 1.37434 tp: 1.35934 [volume non valido]

Durante il backtesting dell'EA con questo simbolo e queste specifiche:


Qui il codice che sto usando per inviare l'ordine:

EDIT:

Naturalmente posso piazzare manualmente operazioni con questa esatta dimensione del lotto.

Questa linea è senza effetto:

NormalizeDouble(trade_size,DecimalPoints);

Devi influenzare il risultato in una variabile, vedi la documentazione di NormalizeDouble.

trade_size=NormalizeDouble(trade_size,DecimalPoints);
Motivazione: