Erreurs, bugs, questions - page 555

 
sergey1294:
Chez Alpari, vous ne pouvez pas placer des stops immédiatement pendant l'exécution du marché, vous devez d'abord ouvrir une position et ensuite la modifier.
Veuillez clarifier : est-il impossible de placer un ordre avec des stops en utilisant une seule commande OrderSend ? Ou s'agit-il d'appeler PositionSelect avant de fixer un stop sur un ordre existant ?
 
Snaf:

Метатестер пилит диск HDD

Version 527.

Si vous regardez dans le moniteur de processus, vous verrez qu'il n'en finit pas avec ces absurdités.

Pas d'activité réseau, pas de connexion au cloud. Le terminal et le metatester ne fonctionnent pas. Aucun fichier n'est en cours de modification.

Il n'y a aucune information sur les noms de fichiers dans la capture d'écran ci-dessus.

Veuillez joindre un journal plus détaillé sous forme de texte.

 
idispatch:

Dans MQL4, vous pouviez créer un ordre avec des stops immédiatement, mais dans MQL5, ce n'est pas possible - vous devez définir les stops après la création de l'ordre.

Suis-je lent (veuillez me donner un exemple de code) ou est-ce mon intention ?

Vous pouvez également créer un ordre avec un stop et un profit.

Vous avez dans votre demande

reqest.sl=SL ;

reqest.tp=TP ;

Il s'agit d'une erreur. Les niveaux SL et TP doivent être fixés à une certaine distance des prix du marché, de sorte que ces lignes doivent ressembler à ceci

pour une position d'achat :

request.sl = SymbolInfoDouble(Symbol(),SYMBOL_BID) - SL * SymbolInfoDouble(Symbol(),SYMBOL_POINT) ;

request.tp = SymbolInfoDouble(Symbol(),SYMBOL_ASK) + TP * SymbolInfoDouble(Symbol(),SYMBOL_POINT) ;

inverse pour une position de vente

request.sl = SymbolInfoDouble(Symbol(),SYMBOL_ASK) + SL * SymbolInfoDouble(Symbol(),SYMBOL_POINT) ;

request.tp = SymbolInfoDouble(Symbol(),SYMBOL_BID) - TP * SymbolInfoDouble(Symbol(),SYMBOL_POINT) ;

J'espère que je ne me trompe pas...

 
idispatch:
Veuillez clarifier : dans Alpari, est-il impossible de placer un ordre avec des stops avec une seule commande OrderSend ? Ou voulons-nous dire qu'avant de fixer des arrêts pour un ordre existant, nous devons appeler PositionSelect?

Vous pouvez, pourquoi pas ?

Dans quel mode passez-vous la commande ?

 
ShurikAn:

Vous pouvez le faire avec un stop et un profit.

Vous avez dans votre requête

reqest.sl=SL ;

reqest.tp=TP ;

Il s'agit d'une erreur. Les niveaux SL et TP doivent être fixés à une certaine distance des prix du marché, ces lignes doivent donc ressembler à ceci :

Bien sûr, SL et TP sont définis comme les vôtres. De plus, j'ai écrit plus haut que si j'ajoute juste

m_request.action = TRADE_ACTION_SLTP;
OrderSend(m_request, m_result) ;

alors les stops seront fixés avec succès aux SL et TP spécifiés, ce qui ne se produira pas s'ils ne sont pas définis correctement.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
Renat:

Vous pouvez, pourquoi pas ?

Dans quel mode passe-t-on la commande ?

MqlTradeRequest m_request ;
MqlTradeResult m_result ;

m_request.action = TRADE_ACTION_DEAL ;
m_request.symbol = Symbol() ;
m_request.type = ORDER_TYPE_BUY ;

m_request.price = Price ; // calculé à l'avance et vrai :)

m_request.sl = SL ; // déjà calculé et correct :)
m_request.tp = TP ; // calculé à l'avance et vrai :)

m_request.volume = Vol ;

m_request.type_filling = ORDER_FILLING_FOK ;
m_request.deviation = 10 ;
m_request.type_time = 0 ;
m_request.expiration = 0 ;
m_request.magic = 0 ;
m_request.comment = "" ;

OrderSend(m_request, m_result) ;
 
idispatch:
Veuillez clarifier : dans Alpari, vous ne pouvez pas placer un ordre avec des stops en utilisant une seule commande OrderSend ? Ou s'agit-il d'appeler PositionSelect avant de fixer des arrêts pour un ordre existant ?

Exactement. Avec les arrêts, vous ne pouvez le faire qu'en mode instantané.

Types d'exécution

Le terminal client dispose de quatre modes d'exécution des ordres :

  • Exécution instantanée
    Dans ce mode, l'exécution d'un ordre au marché se fait au prix proposé au courtier. Lors de l'envoi d'une demande d'exécution, le terminal substitue automatiquement le prix actuel à l'ordre. Si le courtier accepte les prix, l'ordre sera exécuté. Si le courtier n'accepte pas le prix demandé, la "Requote" se produit - le courtier renvoie les prix auxquels l'ordre peut être exécuté.
  • Exécution de la demande
    Dans ce mode, l'ordre de marché est exécuté au prix précédemment reçu du courtier. Avant d'envoyer un ordre au marché, les prix d'exécution sont demandés au courtier. Une fois reçu, l'exécution de l'ordre à ce prix peut être soit confirmée, soit rejetée.
  • Exécution du marché
    Dans ce mode d'exécution des ordres au marché, la décision sur le prix d'exécution est prise par le courtier sans aucune approbation supplémentaire du trader. L'envoi d'un ordre au marché dans ce mode implique un accord précoce sur le prix auquel il sera exécuté.

Lorsque vous appuyez sur le bouton "Vendre au marché" ou "Acheter au marché", un ordre sera créé pour que le courtier exécute une transaction de vente ou d'achat, respectivement, au prix défini par le courtier.

  • Dans le mode d'exécution "Par marché", les niveaux de Stop Loss et Take Profit ne peuvent être fixés que pour une position déjà ouverte en la modifiant.
  • Le commentaire d'un ordre peut être modifié par un courtier ou un serveur. Par exemple, dans le cas d'une clôture au niveau du Stop Loss ou du Take Profit, il comprendra les informations pertinentes.
  • Si le champ "Exécution" est inactif, cela signifie que la possibilité de le modifier est bloquée sur le serveur.
  • Un double clic sur la fenêtre d'ouverture de la position permet d'ouvrir/masquer le tick.
  • Exécution de la bourse
    Dans ce mode, les opérations commerciales effectuées dans le terminal client sont transférées à un système de négociation externe (bourse). Les opérations commerciales sont exécutées aux prix des offres actuelles du marché.

Le mode d'exécution pour chaque symbole est sélectionné par votre société de courtage.


Tout est écrit dans l'aide du terminal. Mais personne ne le lit.

Pour savoir quel type d'exécution vous devez demander la propriété avec la fonction SymbolInfoInteger() avec l'identifiant SYMBOL_TRADE_EXEMODE

SYMBOL_TRADE_EXEMODE

Mode commercial

ENUM_SYMBOL_TRADE_EXECUTION




ENUM_SYMBOL_TRADE_EXECUTION

Identifiant

Description

DEMANDE_DE_TRANSACTION_DE_SYMBOLE

Commerce sur demande

SYMBOL_TRADE_EXÉCUTION_INSTANTANÉE

Commerce à des prix de flux

MARCHÉ_DE_L'EXÉCUTION_DES_SYMBOLES

Marché de l'exécution_exécution

BOURSE_DE_COMMERCE_DE_SYMBOLE

Exécution de la bourse


 

Merci beaucoup, maintenant je comprends.

Et j'ai lu l'aide, ce que je n'ai pas trouvé c'est mon oubli + le manque d'élaboration des références croisées ou quelque chose comme ça dans l'aide :)

 

Lors du test du conseiller du chirurgien https://www.mql5.com/ru/code/611

avec un

[citation].

Pour commencer les tests, à la ligne 84, remplacez :
double Limit=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_LIMIT) ;
par
double Limit= 5 ;

[/quote]

Sur un compte démo normal, lorsque l'onglet Trade de la section Tools est actif, la vue du terminal change à la fin du test.

Dossiers :
Error01.JPG  382 kb
Error02.JPG  346 kb
 

Sur un compte de démonstration, c'est le bazar :

Il revient toujours au début.

Et sur XAUUSD, vous appuyez sur F9 et ensuite

bien que vous ne puissiez pas double-cliquer sur la fenêtre d'ordre dans "l'aperçu du marché".

P.S. Je sais que vous ne pouvez pas négocier le XAUUSD).