[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 554

 
drknn >>:

artmedia70, Проходим по всем ордерам и суммируем их профиты. Если результирующий профит больше нуля или больше некой, заранее заданной величины, то закрываем все позы.

Попробуйте код закрытия всех ордеров сделать самостоятельно.

Подсказка: Для цикла, в котором все ордера будут закрываться, нужно направление перебора ордеров делать обратным - точно так, как я это сделал в вышеприведённом коде. А именно - от последнего ордера к первому. Если поменять направление перебора, то в цикле будут закрыты не все ордера. Например, ордер, который стоит в списке первым, будет закрыт и в результате на его место встанет другой. А поскольку счётчик цикла увеличился на единицу, то другой ордер из этой строчки списа будет пропущен.

Merci. Ce n'est pas tout à fait ce dont j'ai besoin, ou plutôt pas du tout... J'ai besoin de faire une contre-fermeture d'une perte par une ou plusieurs rentabilités pour sortir de l'équité d'un drawdown.
 

Eh bien, c'est toujours une boucle.

Déclare une variable de type double.

Nous passons tous les ordres. Si le bénéfice de l'ordre est inférieur à celui du double, nous y enregistrerons ce bénéfice. Ainsi, après la boucle, cette variable contiendra la valeur du plus petit profit (c'est-à-dire la plus grande des pertes existantes). Si nous sauvegardons dans les tableaux à la fois le ticket de l'ordre perdant actuel et les ordres qui ont un bénéfice supérieur à zéro, et le bénéfice total des ordres qui ont un bénéfice positif, nous pouvons tout décider (quels ordres utiliser et combien couvrir) en une seule fonction.

 
drknn >>:

Ну всё равно цикл.

Объявляем переменную типа double.

Проходим по все ордерам. Если профит ордера меньше чем тот, что в double, то запоминанем в неё этот профит. Таким образом после цикла в этой переменой лежит значение самого маленького профита (читай самый большой убыток из имеющихся). Если параллельно запоминать в массиывы и тикет текущего убыточного ордера и те тикеты ордеров, у котороых профит больше нуля, и суммарный профит ордеров, у которых он положительный, то можно всё решение (какими ордерами и сколько перекрывать) принять в одной функции.

Sens ! !! Maintenant c'est une chose ! Je vais aller faire un tour... :)
 

Voici une autre question...
Les amis ! Dites-moi, s'il vous plaît, comment est-il possible de ne pas acheter au sommet de la hausse et de ne pas vendre au creux de la vague ? Le signal d'achat existe toujours, mais il est proche de l'inversion, et il (le conseiller expert) a... et achète. Le poste s'avère déficitaire. Comment le filtrer ?

J'ai essayé toutes sortes d'indulgences différentes - toutes différentes...

Peut-être quelqu'un a-t-il déjà été confronté à ce problème, ou plutôt à un problème ? Comment cela peut être résolu, même un demi-mot, s'il vous plaît ...
Profits sans fin pour tous !

 
artmedia70 >>:

А вот ещё вопросик...
Други! Подскажите, плиз, каким образом возможно не покупать на самом верху движения вверх и не продавать на самом донышке. А то получается, что сигнал на покупку ещё присутствует, но уже близко к развороту, а он (советник) хрясь... и покупает. Позиция оказывается убыточной. Как бы фильтровать енто дело, а???

Перепробовал уже уйму всяческую различных индюков - всё не то...

Мож кто сталкивался ужо с данной проблемой, даже, скажем точнее - проблемищей? Как её возможно решить, хоть пол-словом обмолвитесь, пожалуйста...
Всем профитов нескончаемых!


En option - les métiers alternatifs. Par exemple, nous tradons sur la base de - la direction du mouvement + l'emplacement du prix (je vous dirai tout de suite que le système est déficitaire, mais il illustre bien l'approche). Par exemple. Écrivez dans le code : SignalBuy=false ; SignalSell=false ; - signaux nuls. Ensuite, nous vérifions : un signal d'achat est un mouvement à la hausse et le prix est supérieur à la moyenne mobile. Par conséquent, SignalBuy=true ; si le mouvement est à la baisse et que le prix est inférieur au mouvement, alors SignalSell=true ; nous devrions également écrire une condition : s'il n'y a pas d'ordres sur le marché et que la position d'achat est vraie et que le dernier ordre dans l'historique est un achat, alors SignalBuy=false ; - c'est-à-dire que nous abandonnons le signal d'achat puisque l'ordre long vient d'être fermé. Il en va de même pour les positions courtes. Qu'est-ce que nous essayons d'atteindre ? Si le glissement est inversé et que le prix casse, un ordre approprié sera ouvert. Ensuite, le conseiller expert attendra le signal opposé. Cela signifie que si la position longue est fermée presque au sommet de la tendance, alors à ce moment-là, la position longue ne s'ouvrira pas, car l'EA sera dans un état d'attente du signal pour ouvrir la position courte.

Je pense que le principe est clair.

 
drknn >>:


Как вариант - чередовать сделки. Например, торгуем по признаку - направление скользящей + местонахождение цены (скажу сразу система убыточна, но хорошо иллюстрирует подход). Например. Пишем в коде: SignalBuy=false; SignalSell=false; - обнулили сигналы. Далее проводим проверку: сигнал к покупке - скользящая вверх и цена выше скользяшей. Следовательно SignalBuy=true; если скользящая вниз и цена ниже скользящей, то SignalSell=true; Дале пишем условие: если ордеров в рынке нет, и при этом сигнал к покупке имеет положение "истина" и при этом последний ордер в истории - Buy, то SignalBuy=false; - то есть, сбрасывем сигнал к покупке, так как только что лонговый ордер был закрыт. То же самое с шортовыми позициями. Чего мы этим добьёмся? При перевороте скользящей и пробитии ценой будет открыт соответствующий ордер. Далее советник будет ждать противоположного сигнала. Это значит, что если лонговая поза закрылась почти на самом верху тренда, то в этой точке лонг уже не откроется, так как советник встанет в состояние ожидания сигнала открыть шорт.

Думаю, принцип понятен.

Oui, bien sûr, merci, le principe est clair, mais dans mon TS, ce sera encore moins rentable... Je trade dans presque tous les TFs en même temps (de M5 à D1), et dans chaque TF plusieurs de mes TS travaillent simultanément... Donc, sur le M5, je collecte tout ce que je peux pendant le mouvement des prix... Voici le problème... Le signal d'achat dure jusqu'au renversement de tendance. Même chose pour Sell. Bien sûr, il peut recueillir suffisamment de bénéfices sur le mouvement, mais ces positions perdantes ouvertes sur les sommets et les creux des prix consomment tous les bénéfices du mouvement ou... (si vous ne les fermez pas, mais restez assis) ... manger toute la marge. Alors comment les couper avec quelque chose... ...pour couper ces pics et ces creux afin qu'ils n'aient pas de signal...
 
artmedia70 >>:
Да, конечно, спасибо, принцип понятен, но в моей ТС он будет ещё более убыточен. У меня торговля идёт сразу почти по всем ТФ (от М5 до D1) и на кждом ТФ несколько своих ТС одновременно пашут... Так вот на М5 у меня собирает по ходу движения цены всё, что можно... Вот здесь и загвоздочка... Сигнал на Бай длится до самого разворота. Также и на Селл. По движению он собирает конечно достаточно, но эти убыточные позиции, открытые на пиках-донышках либо съедают всю прибыль от движения, либо... (если их не закрывать, а пересиживать) ... жрут всю маржу. Вот как бы их подрезать чем-нить... эти пики-дондышки, чтоб сигнала уже не было...


>> Chaque TF a son propre système de trading.

Cela signifie que si nous voulons que les conseillers utilisant des systèmes de trading différents n'interfèrent pas entre eux, nous utilisons une magik - pour chaque TS telle qu'elle est différente de la magik des autres TS. Cela permettra à l'EA de ne voir que ses propres ordres. Ensuite, nous passons en revue les ordres et si l'ordre portant le numéro magique spécifié est déjà présent sur le marché (par exemple, achat), nous annulons le signal d'achat. Ou, si le dernier ordre long est le dernier de l'historique, alors nous l'annulons également et attendons le court.

Sinon, si nous voulons que notre EA n'interfère pas avec d'autres systèmes de trading de la même paire de devises, nous ne tiendrons pas compte du numéro Magic dans la boucle d'ordre. La suite de la logique de simplification des positions est la même. Mais il y a un point subtil ici. Si un EA interfère avec un autre EA, nous devons préparer ce dernier à une situation où il s'apercevra soudainement que son ordre a disparu - l'EA doit pouvoir réagir correctement à cette situation - ne pas ouvrir immédiatement un nouvel ordre sans réfléchir, mais analyser, par exemple, le même historique de transactions.

 

Vous dites que votre signal s'étend jusqu'au demi-tour. Mais il existe aussi un moyen de contourner ce problème. Il n'y a pas d'ordres sur le marché - nous vérifions l'existence d'un signal. Le signal apparaît - nous ouvrons une position, supprimons l'indicateur de signal(mise à zéro de la variable) et ne vérifions plus l'existence d'un signal (par exemple long) jusqu'à ce que le signal opposé apparaisse (short). De cette façon, le drapeau sur la présence d'un signal d'un type donné ne durera que quelques secondes - le drapeau est activé, l'ordre est placé, le drapeau est retiré - nous attendons que le signal opposé se produise. Le contraire s'est produit, le drapeau du signal opposé est activé et nous activons le drapeau, ce qui donne le droit de suivre les signaux qu'il était interdit de suivre auparavant.

Démarrer l'Expert Advisor (pas la fonction start(), mais juste le début du travail) :

- Nous donnons la permission de suivre les signaux longs et courts.

Nous avons un long signal :

- Permettez-nous de suivre les signaux courts.

- Nous définissons l'ordre long, et si l'ordre a déjà été défini, alors

- Enlever le drapeau qui nous permet de suivre les signaux longs.

Le signal court a été déclenché

- Si nous avons la possibilité d'inverser les ordres, alors fermez l'ordre long et définissez l'ordre court.

- Établir un drapeau qui nous permet de suivre les signaux longs et supprimer le drapeau qui nous permet de suivre les signaux courts.

D'une manière générale, les drapeaux sont des interrupteurs. Nous pourrions également concevoir des interrupteurs au lieu de commutateurs. Dans ce cas, le conseiller expert commence à travailler sur les principes d'un automate cybernétique qui a une mémoire de l'état dans lequel il se trouve. Cela peut être réalisé, par exemple, en déclarant une variable entière et en lui attribuant des numéros d'état. Par exemple, dans le bloc d'initialisation, nous écrivons

Sostojanie=0 ;

Mais dès le départ, le conseiller expert sait que dans l'état zéro (if(Sostojanie==0){}), il n'est autorisé à effectuer que les opérations A, B et C. Et en fonction du résultat d'une ou plusieurs de ces opérations, l'EA sélectionne l'état vers lequel il doit aller (Sostojanie=1;/ou 2, ou 3 et ainsi de suite), ou inversement, s'il doit rester dans l'état actuel.

Dans chaque état, le conseiller expert sait ce qu'il peut et ne peut pas faire, et dans quelles conditions il doit passer à un autre état.

 

Il a été mentionné précédemment que le courtier peut fermer+réouvrir un ordre existant et que certains de ses paramètres seront modifiés (commentaires, etc.).

- Je voudrais savoir quels sont les paramètres qui seront hérités à 100% ?(heure d'ouverture, lots, ... ?)

 
chief2000 >>:

Ранее упоминалось что брокер может закрыть+переоткрыть существующий ордер и при этом некоторые его параметры изменятся (комментарии и т.д.).

- Хотелось бы узнать какие параметры на 100% будут унаследованы? (время открытия/закрытия, лоты, ...?)

Personne n'est autorisé à toucher au lot et à la magik, et il y aura un addendum du courtier au commentaire sur la queue. Mais votre commentaire peut toujours être trouvé en recherchant une sous-chaîne.