Concours d'EA sur des comptes réels - page 17

 

Maintenant, j'ai regardé l'historique du compte et je l'ai découvert. Que la fonction de fermeture des positions après avoir atteint le profit spécifié dans le compte réel ne fonctionne pratiquement pas ! Bien que cela fonctionne correctement dans le testeur.

C'est-à-dire que dans la plupart des cas, les positions rentables sont fermées à un Ticrofit égal à 15 pips - le niveau de stop minimum autorisé.

Mais ce conseiller expert Pipswise a été optimisé pour clôturer +11 sur EURCHF et +8 sur EURGBP !

Une telle différence (surtout 15 et 8) est très sensible pour un Expert Advisor scalping !

Je ne sais pas encore pourquoi c'est arrivé ainsi.... J'ai pris une fonction prête à l'emploi d'une autre conception (extraterrestre).

Je l'ai peigné et amélioré (pour eurofrank la fonction ressemble à ça) :

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
//Функция дает команду на  закрытие  позиции при достижении профита , 
//задаваемого  параметром CloseProfit. Для корректной работы 
//этой функции необходимо наличие вспомогателной функции del(int ticket)
void CloseProfit()                                                    {
    if (OrdersTotal() > 0)                                            {
      for (int q = OrdersTotal() + 1; q >= 0; q--)                    {
         if (OrderSelect( q, SELECT_BY_POS, MODE_TRADES))              {
            if (OrderSymbol() == "EURCHF")                            {
               if (OrderMagicNumber() == Magic)                       {
                  if (OrderCloseTime() == 0)                          {
                     if (OrderType() == OP_BUY)                       {
                        RefreshRates();
                        if (Bid > OrderOpenPrice() + CloseProfit* Point) {
                           Print("ClosePozishion"); del(OrderTicket());
                        } }
                     if (OrderType() == OP_SELL)                         {
                        RefreshRates();
                        if (Ask < OrderOpenPrice() - CloseProfit* Point) {
                           Print("ClosePozishion"); del(OrderTicket());
                        }}}}}}}}}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
//Функция реализует закрытие позиций по текущей цене
void del(int ticket) {
   int Error;
   double _bid;
   for (int w = 0; w < 1; w++) {
      GetLastError();
      OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES);
      if (OrderType() == OP_BUY) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_BID);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if (OrderType() == OP_SELL) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_ASK);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if ( Error == 0) {  PlaySound("expert.wav");  return; }//при  нормальном закрытии  
      //  позиции, - даем сигнал "expert.wav"
      if ( Error != 0) {// если произошла ошибка закрытия - сигнал и печать .
         PlaySound("timeout.wav");
         Print("Error for Close Funtion =", Error);
      }
      while (!IsTradeAllowed()) Sleep(5000);//если торг. поток занят, - ждем 5 сек
      if ( Error == 146) while (IsTradeContextBusy()) Sleep(10000);
      //если нет соединения с сервером, ждем - 10 сек
   }
}

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
 

Donne-t-il des erreurs ?

cette conception peut être simplifiée

      if (OrderType() == OP_BUY) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_BID);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if (OrderType() == OP_SELL) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_ASK);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }

comme ceci

RefreshRates();
if (!OrderClose( ticket, OrderLots(),OrderClosePrice(), 3, Green)) Error = GetLastError();
 
keekkenen писал(а) >>

Donne-t-il des erreurs ?

cette conception peut être simplifiée

comme ça.

Je ne peux rien dire sur les erreurs. Je n'ai que le mot de passe d'investissement de ce compte.

Mais les erreurs se produisent très souvent sur mon compte réel avec cette société de courtage. Je reçois un signal sonore d'erreurs dans le code et j'entends ce signal assez souvent ! Au début, il y a un signal d'erreur de fermeture. Et souvent, après une autre minute ou deux, il y a un signal de déclenchement de Take Profit. En d'autres termes, la fonction de clôture ne fonctionne pas correctement et le prix dépasse le niveau de clôture fixé, franchissant ainsi le niveau de prise de bénéfices !

Quant à la simplification de la conception, elle peut être simplifiée mais elle est plus claire pour moi lorsque tout est décrit en détail.

 

Vous avez écrit : Ce Pips Expert Advisor est optimisé pour clôturer +11 sur EURCHF et +8 sur EURGBP !

Tout est facile à expliquer. Vous ouvrez une position longue et attendez que la condition déclenche les 15 pips légaux.

if (OrderType() == OP_BUY){
	RefreshRates();
    if (Bid > OrderOpenPrice() + CloseProfit* Point) {
		Print("ClosePozishion"); del(OrderTicket());
    }
}

Vous achetez à l'achat et fermez à l'achat, vous perdez donc le spread (4 pips), vous devez donc définir Ask au lieu de Bid dans l'Ifa,

pour obtenir vos 15 pips...


et aussi, ce qui précède n'est pas clair... si le takeprofit est de 15 pips, pourquoi fermer plus tôt ?

 
keekkenen писал(а) >>

Vous avez écrit : Ce Pips Expert Advisor est optimisé pour clôturer +11 sur EURCHF et +8 sur EURGBP !

Tout est facile à expliquer. Vous ouvrez une position longue et attendez que la condition déclenche les 15 pips légaux.

Vous achetez à l'achat et fermez à l'achat, vous perdez donc le spread (4 pips), vous devez donc définir Ask au lieu de Bid dans l'Ifa,

pour obtenir vos 15 pips...

Si le takeprofit est de 15 pips, pourquoi devrais-je fermer plus tôt ?

Pas exactement. Je veux fermer la position après avoir atteint +11 pips de profit. Alors que le take profit est à +15 (parce qu'il est impossible de le placer plus près - le niveau de stop en DC est autorisé = 15).

Pourquoi pensez-vous que j'ai acheté aux enchères ? J'achetais sur l'asc.

Mais les positions longues sont fermées par la vente ? - N'est-ce pas ?

et c'est pour ça qu'il y a une enchère sur le prix de l'e-fee...

Mais même si je perds la taille de l'écart dans votre opinion, ce fait n'explique pas la divergence des résultats entre le réel et le testeur !

Presque 500$ de divergence vers le pire avec lot =0.1 en 10 jours avec 200 trades.

 
leonid553 >> :

Mais même si je perds la taille de l'écart selon vous, ce fait n'explique pas la différence de résultats entre le réel et le testeur !

>> Il y a aussi le niveau de gel, c'est peut-être ça le problème.
 
TheXpert писал(а) >>

Près d'un tiers des transactions sont manquantes dans le réel, ce qui peut représenter un profit manqué. Ou peut-être qu'il manque quelque chose. Faites-moi savoir et nous trouverons une solution.

J'ai fait le tri dans le nombre de transactions. J'ai maintenant exécuté le conseiller expert dans le testeur avec l'option de modélisation des requêtes activée. Le nombre de transactions dans le testeur et dans le compte réel était presque le même (dans des limites raisonnables).

C'est-à-dire que les requêtes sont à blâmer. Ils réduisent fortement le nombre de transactions et beaucoup de transactions rentables ont dû être réduites sur le compte réel.

Mais tout de même - cela n'explique pas toutes les différences entre le test et les résultats réels.

//-------------------------------------------------------------------

Mon conseiller expert semble donc avoir "travaillé" et être devenu l'un des leaders...

http://acompetition.love-craft.ru/?q=ru

 
TheXpert писал(а) >>
Il y a aussi un niveau de gel, peut-être que le problème se situe à ce niveau.

Si je comprends bien, ce concept inclut une limite sur le nombre de positions ouvertes en même temps et une limite sur la taille du lot.

Je ne pense pas que ce facteur soit pertinent.

Selon l'algorithme de l'Expert Advisor, il ne peut y avoir plus d'une position sur le marché pour une paire à la fois.

Le lot est fixé pour l'instant. (0.1)

 
leonid553 >> :

Si je comprends bien, ce concept comprend une limite sur le nombre de positions ouvertes et une limite sur la taille du lot.

Non - il s'agit d'un niveau inférieur auquel vous ne pouvez pas modifier les ordres, ainsi que les prises et les lots.

 
Merci pour cette précision. Je vais aller sur le site de DC pour clarifier la question.