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

 
"2014.04.02 00:19:50.590 2010.10.15 00:00:00 failed exchange buy 0.07 GBPUSD at 1.60082[Invalid volume]"

 
MetaNt:
"2014.04.02 00:19:50.590 2010.10.15 00:00:00 failed exchange buy 0.07 GBPUSD at 1.60082 [Invalid volume]"

Veuillez exécuter ce petit script sur un graphique GBPUSD, et rapportez le résultat.

void OnStart()
  {
   printf("Volume min = %f, volume step = %f for symbol %s.",
          SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN),
          SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP),
          _Symbol);

  }
 
angevoyageur:

Veuillez exécuter ce petit script sur un graphique GBPUSD, et rapportez le résultat.

Désolé, je n'avais pas vu le message. Je m'occupais de certains problèmes que j'avais eus avec la version mql4 de ce script en mode démo.

Je vais lancer le script, merci.

 

Rapport

"2014.04.02 15:11:27.158 Lot (GBPUSD,D1) Volume min = 0.010000, volume step = 0.010000 pour le symbole GBPUSD."

 
MetaNt:

Rapport

"2014.04.02 15:11:27.158 Lot (GBPUSD,D1) Volume min = 0.010000, volume step = 0.010000 pour le symbole GBPUSD."

C'est bizarre. Pouvez-vous poster tout le code pertinent, y compris l'appel d'ordres et le traitement des erreurs (impression) ?
 
angevoyageur:
C'est bizarre. Pouvez-vous poster tout le code pertinent, y compris l'appel à la commande et le traitement des erreurs (impression) ?

Oui, c'est ci-dessous comme demandé

Lot=LotSize/8;


MqlTradeResult StageOneBuyRes={0};
MqlTradeRequest StageOneBuy={0};

StageOneBuy.action=TRADE_ACTION_DEAL;  
StageOneBuy.magic=MagicNumber;  
StageOneBuy.symbol=_Symbol;            // symbol
StageOneBuy.volume=Lot;
StageOneBuy.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
StageOneBuy.sl=0;                  // Stop Loss is not specified
StageOneBuy.tp=0;                 // Take Profit is not specified 
StageOneBuy.deviation =7;  
StageOneBuy.type=ORDER_TYPE_BUY; // order type
StageOneBuy.type_filling = ORDER_FILLING_FOK;
StageOneBuy.comment = "test";
 

MqlTradeResult StageOneSellRes={0};
MqlTradeRequest StageOneSell={0};

StageOneSell.action=TRADE_ACTION_DEAL;  
StageOneSell.magic=MagicNumber;  
StageOneSell.symbol=_Symbol;            // symbol
StageOneSell.volume=Lot;
StageOneSell.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
StageOneSell.sl=0;                  // Stop Loss is not specified
StageOneSell.tp=0;                 // Take Profit is not specified 
StageOneSell.deviation =7;  
StageOneSell.type=ORDER_TYPE_SELL; // order type
StageOneSell.type_filling = ORDER_FILLING_FOK;
StageOneSell.comment = "test";

if(SymbolInfoInteger(_Symbol,SYMBOL_SESSION_DEALS)==0){if(OrderSend(StageOneBuy,StageOneBuyRes))buyticket1=(int)OrderGetInteger(ORDER_POSITION_ID);}
       if(buyticket1>0){Print("Order Placed ","Order Ticket ", buyticket1," Order Lots ",OrderGetDouble(ORDER_VOLUME_INITIAL));return;}else{Print("Order Placement Unsuccessful ", GetLastError());return;}

if(SymbolInfoInteger(_Symbol,SYMBOL_SESSION_DEALS)==0){if(OrderSend(StageOneSell,StageOneSellRes))sellticket1=(int)OrderGetInteger(ORDER_POSITION_ID);}
       if(sellticket1>0){Print("Order Placed ","Order Ticket ", sellticket1," Order Lots ", OrderGetDouble(ORDER_VOLUME_INITIAL));return;}else{Print("Order Placement Unsuccessful ", GetLastError());return;}
 
MetaNt:

Oui, c'est ci-dessous comme demandé


Ce code n'est pas correct, vous ne pouvez pas l'utiliser comme vous le faites.

buyticket1=(int)OrderGetInteger(ORDER_POSITION_ID);

Vous devez utiliser la structure StageOneBuyRes pour obtenir des informations sur votre commande/affaire. Vous devez principalement vérifier le retcode, veuillez consulter la documentation ou chercher sur le site des exemples d'utilisation de OrderSend(), cela ne fonctionne pas comme avec mql4.

Votre code renvoie probablement une erreur là où il n'y en a pas. Avez-vous vérifié le terminal pour voir si une position était ouverte ou augmentée ?

En passant, mais sans rapport avec ce sujet, le code suivant ne fait probablement pas ce que vous pensez qu'il fait.

SymbolInfoInteger(_Symbol,SYMBOL_SESSION_DEALS)
 

Bien, je vais modifier cela.

Je ne suis pas sûr de ce que vous voulez dire par vérifier le terminal, il n'y a pas de résultats de backtesting affichés là.

 
MetaNt:

Bien, je vais modifier cela.

Je ne suis pas sûr de ce que vous voulez dire par vérifier le terminal, il n'y a pas de résultats de backtesting affichés là.

Ah ok, je n'avais pas compris que c'était un backtesting.
 
angevoyageur:

Ce code n'est pas correct, vous ne pouvez pas l'utiliser comme vous le faites.

Vous devez utiliser la structure StageOneBuyRes pour obtenir des informations sur votre commande/affaire. Vous devez principalement vérifier le retcode, veuillez consulter la documentation ou chercher sur le site des exemples d'utilisation de OrderSend(), cela ne fonctionne pas comme avec mql4.


Comment cela va-t-il provoquer l'apparition de l'erreur ?
Raison: