Erreurs, bugs, questions - page 1789

 
Yousufkhodja Sultonov:
Merci, je ne le savais pas, je l'ai mis en place. Maintenant, je ne peux pas voir l'état des derniers éléments. Dommage, je ne peux pas faire en sorte, par programmation, que la dernière ligne ne descende pas ?

C'est possible, exactement de manière programmatique. Écrivez un indicateur qui affiche cette ligne sur tous les graphiques, par exemple.

Les développeurs pourraient faire en sorte que cette information soit dupliquée dans la barre d'état, ou dans la barre de titre de la fenêtre, mais cela ne les intéresse probablement pas.

 
Qu'est-ce qu'il y a ?
AccountInfoString(ACCOUNT_SERVER) = MetaQuotes-Demo

OrderSend(NULL,OP_BUYLIMIT,1,SymbolInfoDouble(Symbol(),SYMBOL_ASK)-100*_Point,100,0,0,My Order)
Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 0
Request.symbol = Si-3.17
Request.volume = 1.0
Request.price = 59647.0
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_BUY_LIMIT (2)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00

Request.comment = My Order
Request.position = 0
Request.position_by = 0
Result.retcode = 10022
Result.deal = 0
Result.order = 0
Result.volume = 0.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Invalid expiration
Result.request_id = 0
Result.retcode_external = 0
 
fxsaber:
Quelle est l'erreur ?
ORDER_TIME_GTC sur le symbole n'est pas supporté
 
A100:
ORDER_TIME_GTC sur le symbole n'est pas supporté
Merci !
 

Bug sérieux, car il concerne le commerce lui-même.

FIBOGroup-MT5 Server, démo, devise de base USD, Netting, build 1525.

Tout d'abord, une capture d'écran de "Ordres, Trades".

Une position a été ouverte par 1 lot et fermée (pas inversée !) par 1,5 lot.

Le fait qu'il s'agisse d'une seule position est confirmé par l'écran "Positions".

J'ai souligné en rouge qu'il y avait également une erreur dans le calcul du swap (position vécue 1 seconde) et une perte énorme.

Le journal ressemble à ceci

2017.02.09 08:39:14.285 Trades  '1013175': exchange buy 1.00 EURUSD at market
2017.02.09 08:39:15.352 Trades  '1013175': deal #1542796 buy 1.00 EURUSD at 1.06763 done (based on order #2246162)
2017.02.09 08:39:15.354 Trades  '1013175': order #2246162 buy 1.00 / 1.00 EURUSD at 1.06763 done in 1069.212 ms
2017.02.09 08:39:15.354 Trades  '1013175': failed modify #2156238 buy 1.50 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.06990, tp: 1.07190 [Invalid stops]
2017.02.09 08:39:15.355 Trades  '1013175': exchange sell 1.50 EURUSD at market, close #2156238 buy 1.50 EURUSD 1.07090333
2017.02.09 08:39:16.421 Trades  '1013175': deal #1542797 sell 1.50 EURUSD at 1.06761 done (based on order #2246163)
2017.02.09 08:39:16.422 Trades  '1013175': order #2246163 sell 1.50 / 1.50 EURUSD at 1.06761 done in 1066.734 ms

PositionGetDouble(POSITION_VOLUME) retournait 1,5 lot, au lieu de 1,0. Une erreur d'arrêts invalides s'est produite, bien que SYMBOL_TRADE_STOPS_LEVEL == 0.

Je devrais probablement ajouter que la position a été fermée avec Request.position = PositionTicket. C'est-à-dire que ce paramètre n'était pas nul.

En somme, une BASE qui concerne directement l'argent !

 

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

FORTS. Questions sur l'exécution

fxsaber, 2017.02.09 08:56

Est-ce que je comprends bien que dans ce cas, OrderSend a retourné vrai presque instantanément, mais que 65 secondes ont été observées(ENUM_ORDER_STATE)::OrderGetInteger(ORDER_STATE) == ORDER_STATE_STARTED?

Au fait, pourquoi, lorsque je place un ordre en attente via OrderSend, celui-ci renvoie vrai immédiatement après que l'état de l'ordre soit devenu ORDER_STATE_STARTED, au lieu d'attendre ORDER_STATE_PLACED ?

Ce n'est pas un OrderSendAsync asynchrone.

 
fxsaber:

À propos, pourquoi renvoie-t-il immédiatement la réponse vraie lorsque l'état de l'ordre devient ORDER_STATE_STARTED au lieu d'attendre ORDER_STATE_PLACED lors du placement d'un ordre en attente via OrderSend ?

Ce n'est pas un OrderSendAsync asynchrone.

Probablement parce qu'il s'agit du résultat de l'exécution réussie de l'OrderSend et non du résultat de l'établissement réussi de l'ordre ?
 
Artyom Trishkin:
Probablement parce que c'est le résultat d'un OrderSend réussi et non pas le résultat d'un établissement d'ordre réussi ?
ORDER_STATE_STARTED est le résultat d'un OrderCheck réussi.
 
fxsaber:
ORDER_STATE_STARTED est le résultat d'un OrderCheck réussi.
Et quand une commande est déjà passée, quelque chose est retourné ?
 
Artyom Trishkin:
Et quand une commande est déjà passée, quelque chose est retourné ?
COMMANDE_ÉTAT_PLACÉ.