Il est difficile d'envoyer des commandes. - page 3

 
On dirait que c'est CT Trade.
 
Il n'aime pas la taille de lot dynamique ? ?? Il fonctionne avec ct trade, lorsque j'utilise une taille de lot fixe.
 
MetaNt:
Il n'aime pas la taille de lot dynamique ? ?? Il fonctionne avec ct trade, lorsque j'utilise une taille de lot fixe.

CTrade est un wrapper pour OrderSend().

Vous avez écrit que cela ne fonctionne pas avec un volume à 0.07 ou même 1. Comment définissez-vous cela ? Lot=0.07 ?

 
angevoyageur:

CTrade est un wrapper pour OrderSend().

Vous avez écrit que cela ne fonctionne pas avec un volume à 0.07 ou même 1. Comment définissez-vous cela ? Lot=0.07 ?

Je n'étais pas sûr d'avoir écrit Mqlrequest et Mqlresult correctement et j'ai donc utilisé CTrade à la place, j'ai trouvé que cela fonctionnait si j'utilisais des volumes fixes, et maintenant j'ai trouvé que je pouvais multiplier les volumes fixes par des entiers, mais si j'essaie de modifier les volumes avec des fractions, j'obtiens des erreurs telles que invalid lotsize, le résultat de la taille de lot modifiée est imprimé avec l'erreur[invalid volume].
 
Ce sont des décimales d'une certaine complexité, je vais essayer de normaliser le double.
 
MetaNt:
Ce sont des décimales d'une certaine complexité, je vais essayer de normaliser le double.
Normalize double est fourni un correctif pour les décimales complexes, je vais l'essayer sur mon lot dynamique.
 
MetaNt:
Normalize double est fourni un correctif pour les décimales complexes, je vais l'essayer sur mon lot dynamique.

Fixe.

Il semble que ce soit l'un de mes facteurs d'échelle provenant de certaines équations qui se trouvent en dehors du CT Buy/Sell. Ce n'était pas un problème que j'avais rencontré dans mql4, il m'a donc fallu un certain temps pour le localiser, je devrai faire attention à cela si mql4 se met à nouveau à jour.

Pour tous ceux qui rencontrent ce problème, utilisez 2 pour la partie numérique de la fonction NormalizeDouble().

 

007 vous dites ?

Vous devriez peut-être demander à M. Bond ;-)

 

Il semble que je rencontre le même problème ici. J'ai confirmé que la taille du lot répond aux exigences de SYMBOL_VOLUME_MIN, SYMBOL_VOLUME_MAX et SYMBOL_VOLUME_STEP.

Par exemple, j'obtiens ceci :

2014.04.07 14:49:35 2014.04.04 16:00:00 CTrade::OrderSend : vente instantanée 0.53 EURUSD à 1.36934 sl : 1.37434 tp : 1.35934 [volume invalide].

Pendant le backtesting de l'EA avec ce symbole et ces spécifications :


Voici le code que j'utilise pour envoyer l'ordre :

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 :

Je peux bien sûr placer manuellement des transactions avec cette taille de lot exacte.

 
Candles:

Il semble que je rencontre le même problème ici. J'ai confirmé que la taille du lot répond aux exigences de SYMBOL_VOLUME_MIN, SYMBOL_VOLUME_MAX et SYMBOL_VOLUME_STEP.

Par exemple, j'obtiens ceci :

2014.04.07 14:49:35 2014.04.04 16:00:00 CTrade::OrderSend : vente instantanée 0.53 EURUSD à 1.36934 sl : 1.37434 tp : 1.35934 [volume invalide].

Pendant le backtesting de l'EA avec ce symbole et ces spécifications :


Voici le code que j'utilise pour envoyer l'ordre :

EDIT :

Je peux bien sûr placer manuellement des transactions avec cette taille de lot exacte.

Cette ligne est sans effet :

NormalizeDouble(trade_size,DecimalPoints);

Vous devez affecter le résultat à une variable, voir la documentation de NormalizeDouble.

trade_size=NormalizeDouble(trade_size,DecimalPoints);