Erreurs, bugs, questions - page 259

 

Modérateurs, une question pour vous.

Je ne peux pas envoyer une demande à Servicedesk.

Et le bouton de fermeture ne fonctionne pas

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
sergeev:

Modérateurs, une question pour vous.

Je ne peux pas envoyer une demande à Servicedesk.

Et le bouton "Fermer" ne fonctionne pas.

Veuillez réessayer. Servicedesk fait partie d'un système interne à l'entreprise qui a été récemment redémarré.
 
Pouvez-vous me dire comment savoir si une transaction a été fermée sur un stop loss ?
 
J'aimerais savoir s'il existe une alternative au script de boucle infinie en 5, car un tel script est très capricieux, j'aimerais qu'il continue à fonctionner lors de la réouverture du terminal ou du changement d'horizon temporel ?
 
Olegts:
J'aimerais savoir s'il existe une alternative au script de la boucle infinie en 5, car un tel script est très capricieux, j'aimerais qu'il continue à fonctionner lorsqu'on ouvre à nouveau le terminal ou qu'on change d'horizon temporel ?

Si vous êtes satisfait de la fréquence minimale de 1 seconde, alors OnTimer, autrement

Tant qu' il n'y a pas d' opération de microseconde dans OnTimer.

 
perte possible de données due à la conversion de type ChartObject.mqh 213 4
perte possible de données due à la conversion de type ChartObject.mqh 481 4
perte possible de données due à la conversion de type ChartObject.mqh 867 17
perte possible de données en raison de la conversion de type ChartObjectsTxtControls.mqh 519 4

Bild 375 - les vornings sont apparus dans les bibliothèques standard. Il y en a peut-être d'autres, je ne les ai pas encore vérifiés.

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Urain:

Si vous êtes satisfait d'une fréquence minimale de 1s, alors OnTimer, sinon...

Jusqu'à OnTimer , il n'y a pas d' opération de microseconde.

Merci, un intervalle plus court est nécessaire, donc c'est à l'ancienne :)
 
nanaos:
Pouvez-vous me dire comment savoir si une transaction a été fermée par un stop loss ?

Dans MT5 ce n'est pas le trade qui se ferme sur le stop loss, mais la position, pour l'instant vous ne pouvez le savoir que par le commentaire du trade qui a fermé la position sur le stop loss. Voici un exemple de code.

void Event()
  {
   if(!HistorySelectByPosition(ID))return;
   double margin=0.0;
   bool res;
   int total=HistoryOrdersTotal();
   ulong deal_ticket=HistoryDealGetTicket(total-1);
   string coment=HistoryDealGetString(deal_ticket,DEAL_COMMENT);
   long deal_type=HistoryDealGetInteger(deal_ticket,DEAL_TYPE);
   double volume=HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);
   double MinLot=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   double MaxLot=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   ulong stoplevel=SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);

   if(deal_type==ORDER_TYPE_BUY)
     {
      if(StringFind(coment,"sl")>=0)
        {
         request.volume=NormalizeDouble(volume*Klot,DigitsVolume());
         request.price=NormalizeDouble(Bid,_Digits);
         request.type = ORDER_TYPE_SELL;
         if(SL<=0 || TP<=0)return;
         if(SL>=stoplevel) request.sl=NormalizeDouble(Ask+(SL*_Point),_Digits);
         if(SL<stoplevel) request.sl=NormalizeDouble(Ask+(stoplevel*_Point),_Digits);
         if(TP>=stoplevel) request.tp=NormalizeDouble(Bid -(TP*_Point),_Digits);
         if(TP<stoplevel) request.tp=NormalizeDouble(Bid -(stoplevel*_Point),_Digits);
         OrderCalcMargin(request.type,_Symbol,request.volume,Bid,margin);
         if(AccountInfoDouble(ACCOUNT_FREEMARGIN)-margin<0)return;
        }
      if(StringFind(coment,"tp")>=0){flagNewSeries=true;return;}
     }
   if(deal_type==ORDER_TYPE_SELL)
     {
      if(StringFind(coment,"sl")>=0)
        {
         request.volume=NormalizeDouble(volume*Klot,DigitsVolume());
         request.price=NormalizeDouble(Ask,_Digits);
         request.type = ORDER_TYPE_BUY;
         if(SL<=0 || TP<=0)return;
         if(SL>=stoplevel) request.sl=NormalizeDouble(Bid -(SL*_Point),_Digits);
         if(SL<stoplevel) request.sl=NormalizeDouble(Bid -(stoplevel*_Point),_Digits);
         if(TP>=stoplevel) request.tp=NormalizeDouble(Ask+(TP*_Point),_Digits);
         if(TP<stoplevel) request.tp=NormalizeDouble(Ask+(stoplevel*_Point),_Digits);
         OrderCalcMargin(request.type,_Symbol,request.volume,Ask,margin);
         if(AccountInfoDouble(ACCOUNT_FREEMARGIN)-margin<0)return;
        }
      if(StringFind(coment,"tp")>=0){flagNewSeries=true;return;}
     }

   if(request.volume<MinLot)request.volume=MinLot;
   if(request.volume>MaxLot)request.volume=MaxLot;
   request.volume=NormalizeDouble(request.volume,DigitsVolume());

   request.action       = TRADE_ACTION_DEAL;
   request.magic        = Magic;
   request.symbol       = _Symbol;
   request.deviation    = Slip;
   request.type_filling = ORDER_FILLING_AON;
   request.comment      = CommentOrder;

   OrderSend(request,result);

   switch(result.retcode)
     {
      case 10008: {Print("Ордер размещен");PositionSelect(Symbol());ID=PositionGetInteger(POSITION_IDENTIFIER);}break;
      case 10009: {Print("Заявка выполнена");PositionSelect(Symbol());ID=PositionGetInteger(POSITION_IDENTIFIER);}break;
      case 10004: {Print("Реквота");}break;
      case 10006: {Print("Запрос отвергнут");}break;
      case 10007: {Print("Запрос отменен трейдером");res=false;}break;

      case 10010: {Print("Заявка выполнена частично");res=false;}break;
      case 10011: {Print("Ошибка обработки запроса");res=false;}break;
      case 10012: {Print("Запрос отменен по истечению времени");}break;
      case 10013: {Print("Неправильный запрос");res=false;}break;
      case 10014: {Print("Неправильный объем в запросе");res=false;}break;
      case 10015: {Print("Неправильная цена в запросе");res=false;}break;
      case 10016: {Print("Неправильные стопы в запросе");res=false;}break;
      case 10017: {Print("Торговля запрещена");res=false;}break;
      case 10018: {Print("Рынок закрыт");}break;
      case 10019: {Print("Нет достаточных денежных средств для выполнения запроса");res=false;}break;
      case 10020: {Print("Цены изменились");}break;
      case 10021: {Print("Отсутствуют котировки для обработки запроса");}break;
      case 10022: {Print("Неверная дата истечения ордера в запросе");res=false;}break;
      case 10023: {Print("Состояние ордера изменилось");}break;
      case 10024: {Print("Слишком частые запросы");res=false;}break;
      case 10025: {Print("В запросе нет изменений");res=false;}break;
      case 10026: {Print("Автотрейдинг запрещен сервером");res=false;}break;
      case 10027: {Print("Автотрейдинг запрещен клиентским терминалом");res=false;}break;
      case 10028: {Print("Запрос заблокирован для обработки");res=false;}break;
      case 10029: {Print("Ордер или позиция заморожены");res=false;}break;
      case 10030: {Print("Указан неподдерживаемый тип исполнения ордера по остатку");res=false;}break;
      case 10031: {Print("Нет соединения с торговым сервером");}break;
      case 10032: {Print("Операция разрешена только для реальных счетов");res=false;}break;
      case 10033: {Print("Достигнут лимит на количество отложенных ордеров");res=false;}break;
      case 10034: {Print("Достигнут лимит на объем ордеров и позиций для данного символа");res=false;}break;
      default:    Print("Ошибка № - ",result.retcode);
     }
  }
 

L'EA a été optimisée sur l'intervalle AB. Ci-dessus, une exécution avec ces paramètres sur l'intervalle AD. Je ne comprends pas ce qui se passe au point C.

Je ne comprends pas que le conseiller expert ne soit pas optimisé pratiquement sur l'intervalle CD. Peut-être qu'il y a un changement dans certaines règles commerciales après 25.10.2010 (point C) ou autre chose ?

 
sultanm:

L'EA a été optimisée sur l'intervalle AB. Ci-dessus, une exécution avec ces paramètres sur l'intervalle AD. Je ne comprends pas ce qui se passe au point C.

Alors que l'Expert Advisor n'est pratiquement pas optimisé sur l'intervalle CD. Peut-être qu'il y a un changement dans certaines des règles commerciales après 25.10.2010 (point C) ou autre chose ?

Quel est le bénéfice moyen des transactions du conseiller expert ? Quelque chose me dit que c'est moins de 10 pips.

Le problème se situe probablement dans les données historiques - elles sont soit plus peignées (filtrées), soit simplement plus correctes (par exemple, elles contiennent les bons spreads).

Quel est le serveur ?