[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 995

 
Bonjour à tous, conseillez si c'est possible (si le prix monte, l'ordre reste ouvert, mais si le prix a baissé de 2 points, fermez l'ordre) conseillez comment le faire correctement.
if (iMomentum(NULL,0,-2,PRICE_HIGH,0)) 
      {
      OrderClose(OrderTicket(),OrderLots(),0,Bid,Violet);
 
artmedia70:

Je ne comprends pas... Pourquoi avez-vous besoin de calculer le spread moyen sur n-nombre de barres de l'historique dans la fonction de définition des critères de trading ?

Si vous comptez utiliser les fonctions du manuel britannique, il serait plus logique de le faire dans la fonction Events().

Ce n'est pas tout, regardez comment SK suggère de suivre le changement du StopLevel du courtier. Ce qui vous empêche de suivre exactement de la même manière le changement d'écart et, s'il y en a un, d'entrer la valeur suivante dans le tableau. Eh bien, et quand remplir le tableau calculer sa "température moyenne dans l'hôpital" (c) SK ...

L'idée est qu'à différents moments de la journée il y a différents spreads et parfois mon système de trading va trader avec succès à un spread moyen de disons 12 points, et à un spread de 6 points il va perdre et vice versa, si je l'ajuste à un spread de 6, il va perdre à un spread de 12, c'est-à-dire que les niveaux des ordres en attente dépendent de ce paramètre, je posterai toutes mes idées plus tard, mais maintenant je dois faire quelque chose par étapes, et j'ai aussi été confronté au niveau Freeze pour la première fois aujourd'hui, alors qu'est-ce que cela signifie ? si j'ai ouvert un ordre avec un take et un stop et qu'il est sur le marché, il est dans le plus de 100 pips en cinq chiffres et le take était à l'origine à 150 pips, mais maintenant il est dans le plus, je ne peux pas arrêter la perte ou prendre le profit si j'ai défini un stop-loss et un take-take et si le prix est proche de la zone, je ne peux pas arrêter la perte ou prendre le profit. en conséquence, le système a fonctionné correctement, j'ai donné une commande d'inversion, mais le terminal a échoué et le prix a baissé sans prendre une position de vente et sans prendre une position d'achat

Comment la combattre ?

 
ex_kalibur:

L'idée est qu'à différents moments de la journée, le spread est différent, et il peut arriver qu'avec un spread moyen, mon système de trading négocie avec succès à un spread de, disons, 12 points, et à un spread de 6 points, il perdra de l'argent. Si j'ajuste le spread pour 6, alors à 12 points, il perdra de l'argent, c'est-à-dire que les niveaux des ordres en attente dépendent de ce paramètre, je posterai le plan complet plus tard, mais maintenant je dois faire quelque chose par étapes, et aujourd'hui, j'ai également été confronté au niveau de gel pour la première fois, si j'ai ouvert un ordre avec un take et un stop et qu'il est sur le marché, il est dans le plus de 100 pips en cinq chiffres et le take était à l'origine à 150 pips, mais maintenant il est dans le plus, je ne peux pas arrêter la perte ou prendre le profit si je fixe un stop-loss et un take-take et si le prix est proche de la zone de profit, je ne peux pas arrêter la perte ou prendre le profit. en conséquence, le système a fonctionné correctement, j'ai donné une commande d'inversion, mais le terminal a échoué et le prix a baissé sans prendre une position de vente et sans prendre une position d'achat

Comment puis-je le combattre ?

On dirait que vous êtes au bon endroit...
 
Je ne programme que depuis trois jours et je n'arrive pas à trouver comment écrire la partie "trailing stop" du programme.

Le problème est que tout fonctionne, MAIS ! il déplace le stop loss à la fois d'un côté et de l'autre, que dois-je ajouter pour qu'il déplace le stop loss uniquement du côté de la transaction ouverte ?

Voici en gros le mien :

if (Ticket> 0)
{
if (Opn_B == true)
{
SL = Ask - TS*Point ;
Ticket= OrderModify(Ticket,Price,SL,TP,0) ;
}
if (Opn_S == true)
{
SL = Ask + TS*Point ;
Ticket= OrderModify(Ticket,Price,SL,TP,0) ;
}
}
 

ex_kalibur merci pour la boîte de réception, je vous enverrai un email un jour.

 
ZahvatkiN:

ex_kalibur merci pour la boîte de réception, je vous enverrai un email un jour.

Excusez-moi ?
 

Bonsoir !

Pouvez-vous me dire comment exporter les données d'un graphique(valeurs des indicateurs) de Metatrader 4 vers Exel ?

Je serais heureux de recevoir de l'aide et des conseils :)

 
L'impression vous aidera :)
 

Cher artmedia70, je suis très reconnaissant que vous êtes activement aider dans ce fil, les écrits suivants sont principalement adressés à vous, mais s'il ya plus de professionnels, s'il vous plaît ne pas passer et aider, il s'est avéré que comme dans un conte de fées, plus loin dans les bois plus de bois de chauffage, à la suite de la liquidation je frappe un mur, et j'ai vraiment besoin d'aide, j'espère que cette stratégie sera mis en œuvre et de nombreux nouveaux arrivants acquerront de l'expérience dans une programmation cohérente et efficace

le problème est le suivant :

1. trouver les variables basse et haute (le processus pour trouver chacune d'entre elles reste différent)

2. il est nécessaire de calculer le spread moyen pour les N derniers ticks (la variable N dans l'externe).

3. supposer que l'écart entre le haut et le bas est supérieur à la moyenne dans k parties de la largeur du canal (par exemple 2/3 ou 1/3 minimum de la largeur du canal).

4. une fois ces conditions remplies, les ordres en attente sont placés :

- au-dessus de la ligne Haut - Vendre

- sous la ligne Low - Bay

Les commandes sont passées aux deux côtés en utilisant la grille :

*L'ordre de vente le plus proche correspond au volume minimum, et est placé si possible au niveau du High,

* L'ordre suivant sera placé à une distance de High + un certain nombre de points (par exemple : High + (High - Low)).

* Le nombre total de commandes doit être défini dans une variable externe, dans ce cas, chaque commande n'a pas un volume égal (par exemple, la première 0,1, la deuxième 0,2, la troisième 0,3 etc. Ici, nous supposons différentes méthodes d'augmentation des volumes en progression arithmétique ou en progression géométrique, nous déciderons ici plus tard, respectivement, ce bloc devrait être une fonction séparée).

* Le StopLoss est exposé comme suit : dans les paramètres externes, nous spécifions le SL désiré, puis sur le premier SL (le plus petit) est égal au StopLoss (des paramètres), chaque StopLoss suivant sera égal à la même valeur que le premier (pour 0,1 = 60 points, pour 0,2 = 40 points), c'est-à-dire qu'en cas de déclenchement d'un StopLoss sur le plus petit ordre, tous les ordres seront fermés en même temps.

* Le Take Profit est égal à (High -Low)* Point + Prix d'ouverture.

*Conditions de clôture du marché :

open Bay-

Si l'ordre est en profit, le niveau High a changé et est devenu inférieur à la valeur précédente, Bid>= High, StopLewel permet de fermer l'ordre, alors tous les ordres ouverts du type Bay sont fermés, en commençant par le plus grand volume de notre instrument.

*Conditions d'ouverture selon le marché :

si Baie ==0, et en même temps Bid < Low et en même temps Ask < High + spread moyen, alors nous ouvrons avec le volume minimum autorisé et supprimons l'ordre en attente de ce type avec le volume minimum (si les conditions le permettent).

si pendant la transaction, un nouvel ordre en attente s'ouvre avec une valeur plus importante que le tout premier, et se ferme au même prix de clôture, nous ouvrons un nouvel ordre en attente avec le même volume, au même prix que celui qui a été fermé (si les conditions le permettent) et si placer un ordre en attente est impossible, et qu'après la clôture du dernier ordre, le prix croise à nouveau le prix ouvert du dernier ordre fermé alors

on revient sur le marché avec le même volume et au même prix avec + slippage

* Après la fermeture du premier ordre (c'est l'ordre avec le volume minimum), tous les ordres d'achat en attente seront supprimés, on suppose qu'il ne devrait plus y avoir d'ordres ouverts, puis l'ordre est recalculé et la grille est lancée à nouveau.

* Les ordres ouverts sont calculés en permanence pour le type d'ordre opposé et une grille avec le type d'ordre opposé est lancée.

* L'ouverture d'ordres opposés n'est pas autorisée tant que le premier ordre (avec le volume minimum) est ouvert.

5. le calcul du volume du lot, autorisé soit fixe soit en pourcentage dans les paramètres :

Si tous les ordres ont un volume fixe - tous les ordres avec un volume fixe

-avec fixe - le volume total de tous les ordres en cas de fermeture de la grille (série) par un stop loss, ne doit pas dépasser la perte en % autorisée.

respectivement, les volumes sont calculés dans l'ordre suivant : le volume maximal est le plus éloigné du prix actuel et avec le stoploss minimal et les volumes les plus proches du prix sont les volumes minimaux (

Exemple de série 0.1\0.2\0.3\0.4\0.5 ressemble à ceci - si nous avons assez d'argent et que le % permet d'ouvrir dans cet ordre

série 0.1\0.1\0.1\0.2\0.3 - dans ce cas nous n'avons pas assez d'argent pour la série entière

6. Blocage du calcul du dépôt minimum

*Ici, le calcul de la perte maximale possible est calculé sur la base des valeurs des variables High, Low, il est considéré que tous les ordres en attente seront ouverts, et seront fermés sur le Stop Loss, par conséquent, la perte donnée devrait faire un certain pourcentage du dépôt, sur ce qui après les calculs le trader reçoit un message :

"avec le % de risque choisi, si les ordres sont fermés par un stop loss, vous subirez une perte de ...",

ou "il n'y a pas assez d'argent pour mettre en place une série d'arrêts, le conseiller expert ne fonctionne pas".

7. Je n'ai qu'une seule fonction : garder la trace des événements, informer, j'aimerais voir les erreurs comme si elles étaient dans un livre.

8. et probablement le dernier, un certain "bouton" ou une fonction spéciale qui, lorsque vous cliquez dessus (ou modifiez les paramètres), supprime tous les ordres en attente du type opposé à celui de l'ouverture (si le marché est à l'achat, alors tous sont supprimés), et l'expert travaille jusqu'à ce que la série soit fermée.

Je voudrais vous demander d'écrire un programme selon la structure du livre https://book.mql4.com/ru/build/index.

pour ce faire, dans ce post, je vais joindre tous les fichiers du livre, et dans chacun de ces fichiers va commencer le travail, après l'achèvement de chaque fichier individuel sera enregistré et également joint au public, à l'achèvement du programme de codage sera également affiché sur ce forum

je vous préviens tout de suite que cette idée est uniquement cognitive, de nature éducative, et ne garantit pas qu'à l'issue de l'expert sera rentable, elle concerne tous les polypes qui passent des jours et des heures à chercher des grails, et qui veulent écraser le cul d'un autre un hérisson ))))

Mon objectif personnel, une fois la programmation terminée, est d'apprendre à coder dans cette structure, c'est-à-dire avec toutes les règles : commentaires, fonctions individuelles, fichiers externes, travail avec les bibliothèques, etc.

 

La 1ère étape est très importante, je pense qu'elle est même basique, c'est un cahier des charges correctement formulé, accessible, pour que le programmeur comprenne ce qu'on attend de lui

J'attends donc des commentaires sur mon plan, rédigeons des TdR corrects et ensuite nous commencerons.