Erreurs, bugs, questions - page 2829

 

Salutations. Pouvez-vous me conseiller ou me donner un lien pour savoir où aller ?

VPS WinServer 2012 R2, MT4 fonctionne, à un moment donné se décharge, et doit être relancé.

Où chercher, etc. ....

Merci d'avance.

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Particularités de mql5, trucs et astuces

fxsaber, 2020.08.20 18:52

Le code suivant sur le compte de démonstrationRannForex-Server permet de reproduire immédiatement cette situation en exécutant cet EA.

// Воспроизведение ситуации наличия позиции и отложенного ордера с одинаковыми тикетами.

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

MqlTradeResult Result = {0};
MqlTradeRequest Request = {0};

int OnInit()
{

        Request.action = TRADE_ACTION_PENDING;
        Request.symbol = _Symbol;
        Request.volume = 100;
        Request.price = Ask;
        Request.type = ORDER_TYPE_BUY_LIMIT;
        
        return(!OrderSend(Request, Result)); // Выставили лимитник по текущей цене.
}

#define  TOSTRING(A) #A + " = " + DoubleToString(A, _Digits)

void OnTradeTransaction( const MqlTradeTransaction&, const MqlTradeRequest&, const MqlTradeResult& )
{
  if (OrderSelect(Result.order) && (OrderGetInteger(ORDER_STATE) == ORDER_STATE_PARTIAL)) // Если наш лимитник исполнился частично
  {
    if (Ask - OrderGetDouble(ORDER_PRICE_OPEN) < 100 * _Point)                            // и находится близко от текущей цены
    {
        Request.action = TRADE_ACTION_MODIFY;
        Request.order = Result.order;
        Request.price = Ask - 1000 * _Point;

      // тогда передвигаем его подальше.
      if (OrderSend(Request, Result)) // Если синхронный OrderSend выполнился успешно, то торговое окружение должно соответствовать.
      {
        // Проверка соответствия торгового окружения.
        if (OrderSelect(Request.order) &&                                                                // Если получилось взять данные нашего ордера
            NormalizeDouble(OrderGetDouble(ORDER_PRICE_OPEN) - Request.price, _Digits))                  // и цена ордера не равна цене успешного OrderSend
          Alert("Bug:" + TOSTRING(OrderGetDouble(ORDER_PRICE_OPEN)) + " != " + TOSTRING(Request.price)); // сообщаем о баге MT5.
      }
    }
    else
      ExpertRemove();
  }     
}


A propos, le script montre (pas toujours la première fois) un bug dans l'exécution de l'OrderSend synchrone.

Alert: Bug:OrderGetDouble(ORDER_PRICE_OPEN) = 0.89837 != Request.price = 0.88837

Après l'exécution de l'OrderSend pendant quelques dizaines/centaines de millisecondes, le prix de l'ordre est ancien, et non celui qui a été placé avec succès par l'OrderSend.

 

envoyer une recherche - je ne l'ai pas trouvé moi-même

comment obtenir l' unicité des lignes avec plusieurs champs dans une table en SQLite?

ZS : si quelqu'un peut donner un exemple - merci d'avance !

 

Qui a eu l'idée de déplacer l'onglet Forum en haut de la liste d'en-tête ?

Mauvaise idée, ne dis pas qui.

 
Lamise en évidence du code dans la base ne fonctionne plus depuis plus d'une semaine, le changement de pièce jointe entraîne également une erreur.
 
Igor Makanu:

envoyer une recherche - je ne l'ai pas trouvé moi-même

comment obtenir l'unicité des lignes avec plusieurs champs dans une table en SQLite ?

ZS : si quelqu'un peut donner un exemple - merci d'avance !

Créez une clé unique pour plusieurs champs (les lignes contenant des données existantes doivent correspondre à l'unicité en cours de création, sinon une erreur se produira).

ALTER TABLE `t1` ADD UNIQUE (
`id` ,
`name` ,
`account`
);
 
Andrey Khatimlianskii:

Créez une clé unique pour plusieurs champs (les lignes contenant des données existantes doivent correspondre à l'unicité créée, sinon une erreur se produira).

OK, je vais essayer, mais je vais probablement devoir lire un livre sur le SQL, je n'ai pas assez de connaissances.

Merci !

 
Andrey Dik:

Qui a eu l'idée de déplacer l'onglet Forum en haut de la liste d'en-tête ?

Mauvaise idée, ne dis pas qui.

Je suis d'accord.

 
Andrey Dik:

Qui a eu l'idée de déplacer l'onglet Forum en haut de la liste d'en-tête ?

Mauvaise idée, ne dis pas qui.

Quel est le problème ? Réflexes ?)

Et "Forum" est toujours cliqué plus souvent que "Documentation" - du moins sur le site...

 
Les menus sont classés par fréquence d'utilisation.

Après un mois, tout le monde s'y habituera.