J'ai crée un EA mais ne passe pas d'ordre

 

Bonjour à tous,

Je viens vers vous pour demander de l'aide au sujet d'un EA que j'ai crée.

L'idée est de passer des ordre sell une fois la dernière bougie fermer en hausse.

La compilation n'a fourni aucune erreur et dans le testeur de stratégie aucun ordre ne passe

Voici mon code :


=====================================================================================================


#include <Trade\Trade.mqh>

#include <Trade\AccountInfo.mqh>


input int takeProfit = 100;

input double lotSize = 0.01; 


void OnTick()

{

    double openPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID);

    double previousClose = iClose(_Symbol, PERIOD_M1, 1);


    if (openPrice > previousClose) 

    {

        double accountBalance = (double)AccountInfoDouble(ACCOUNT_BALANCE);

        double tickValue = (double)SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);

        double tradeSize = NormalizeDouble(lotSize * accountBalance / (tickValue * _Point), 2.0);


        MqlTradeRequest request = {};

        MqlTradeResult result = {};

        request.action = TRADE_ACTION_DEAL;

        request.symbol = _Symbol;

        request.type = ORDER_TYPE_SELL;

        request.volume = tradeSize;

        request.price = openPrice;

        request.sl = 0;

        request.tp = openPrice - takeProfit * _Point;

        request.magic = 12345;

        request.comment = "Sell order";


        bool res = OrderSend(request, result);

        // Check for errors

}

}

=======================================================================================================================


Merci de votre retour

 

Bonjour, erreur au niveau du lot( tradeSize chez vous).

Essayer avec  tradeSize=0.01; Et vous verrez!

 
ALAIN MICHEL AUGE #:

Bonjour, erreur au niveau du lot( tradeSize chez vous).

Essayer avec  tradeSize=0.01; Et vous verrez!

Bonjour et merci de votre réponse.

J'ai pas bien compris votre remarque.

Pourriez vous m'en apprendre davanatage. Mercii

 

Bonjour, vous me dites avoir conçu cet expert, donc vous avez codé cette ligne:

double tradeSize = NormalizeDouble(lotSize * accountBalance / (tickValue * _Point), 2.0);

Qui équivaut à votre lot (arrêtez moi si je me trompe). Je n'ai même pas pris le temps de calculer la valeur que cela retournerait mais je crois que cela retourne un mauvais lot.

C'est pour cela que je vous ai dit d'essayer directement :

double  tradeSize=0.01;

dans votre code et voyez si cela prend une position, si oui l'erreur vient de la.