Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1946

 
Alexey Viktorov #:

Tous les indicateurs fonctionnent dans le même fil. En conséquence, chaque indicateur consomme des ressources de l'unité centrale. Mettez 100500 indicateurs avec les mêmes paramètres et que va-t-il se passer pour le terminal ? Si 300 grammes de pommes de terre suffisent à vous rendre heureux dans les 20 prochaines minutes, vous en aurez un sac plein sur les épaules. Comment l'aimez-vous ?

Je vois. Merci pour l'explication.
 

Pouvez-vous me dire si j'ai vu une sous-fenêtre d'indicateur dessinée dans ce style quelque part dans kodobase ?

Je ne le trouve pas.


 
makssub #:

Bon après-midi. J'ai lu des choses sur Vail. Je ne sais ni additionner ni soustraire.
Je ne peux rien dire sur la gestion de l'argent, je n'ai pas essayé.
J'ai joint la dernière version. Mais j'ai déjà tout gâché pour moi)
Order1(2) le profit de l'ordre sélectionné
Order1(3) le lot de l'ordre sélectionné

Je n'ai pas pu comprendre le code.

Je vais essayer d'expliquer. J'espère que vous connaissez les tickets des commandes nécessaires, cela rend les choses très faciles. Les conditions. Il existe un ordre de gain avec un profit supérieur à zéro, un ordre de perte avec un profit inférieur à zéro et supérieur au profit, et une condition de clôture partielle d'un ordre de perte.

En général, si les ordres sont dirigés différemment, vous pouvez clôturer via OrderCloseBy sans y réfléchir à deux fois. L'ordre de perte le plus petit sera fermé de la même manière que l'ordre de profit le plus petit. Nous n'avons besoin que de 2 tickets.

Nous pouvons rendre les choses plus compliquées, obtenir OrderProfit() (c'est l'argent) et OrderLots() (c'est le volume en lots) des deux ordres. Calculez le rapport entre le profit et la perte et fermez l'ordre profitable et cette partie en lots de l'ordre perdant. Avant d'obtenir les bénéfices et les lots de l'ordre, vous devez d'abord sélectionner l'OrderSelect.

// ticket1 тикет прибыльного ордера, ticket2 убыточного

bool sel1=OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES);
double profit1=OrderProfit();
double  Lts1=OrderLots();
double price1=0; if(OrderType()==0)price1=Bid; else price1=Ask;

bool sel2=OrderSelect(ticket2,SELECT_BY_TICKET,MODE_TRADES);
double profit2=OrderProfit();                     // profit1 < profit2 можно условием впереди поставить
double  Lts2=OrderLots();
double price2=0; if(OrderType()==0)price2=Bid; else price2=Ask;

double ratio=fabs(profit1/profit2); // или если ratio<1, и берем модуль, у нас один профит меньше нуля
double lotsl=Lts2*ratio;

 Alert("Попытка закрыть прибыльный ордер тикет1 ",ticket1,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
 bool    Ans1=OrderClose(ticket1,Lts1,price1,2);      // Закрытие прибыльного ордера
         if(Ans1==true) // Получилось :)
         Alert("Закрыт ордер тикет1 ",ticket1,". профит1 ",profit1); 
else Alert(" Ошибка при закрытии ордера  тикет1",ticket1," Код ошибки ",GetLastError());

Alert("Попытка закрыть часть ордера тикет2 ",ticket2,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
bool     Ans2=OrderClose(ticket2,lotsl,price2,2);      // Закрытие убыточного ордера частично
         if(Ans2==true) // Получилось :)
         Alert("Закрыт частично ордер тикет2 ",ticket2,". профит2 ",profit2); 
else Alert(" Ошибка при закрытии ордера  тикет2",ticket2," Код ошибки ",GetLastError());

 

  
 


Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
  • book.mql4.com
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
 
Vitaly Muzichenko #:

Pouvez-vous me dire si j'ai vu une sous-fenêtre d'indicateur dessinée dans ce style quelque part dans kodobase ?

Je ne le trouve pas.


Voir les indicateurs par Scriptor

Scriptor
Scriptor
  • 2019.02.10
  • www.mql5.com
Профиль трейдера
 
Artyom Trishkin #:

Voir les indicateurs de Scriptor.

Merci, je l'ai trouvé, mais c'est un peu différent, seulement sur une ligne.

 
Vitaly Muzichenko #:

Merci, je l'ai trouvé, mais c'est un peu différent, c'est seulement pour une ligne.

Je pense qu'il y a aussi plusieurs rangs.

 
Artyom Trishkin #:

Je pense qu'il y a quelques rangs là-dedans aussi.

Il y a plus de 1500 codes, j'ai dû le manquer, malheureusement.

 
Vitaly Muzichenko #:

Merci, je l'ai trouvé, mais c'est un peu différent, seulement sur une ligne.

Vitaly, vous me surprenez. Tous ces indicateurs sont basés sur la construction de DRAW_ARROW avec le code approprié. Dans votre dessin, les carrés représentent le code 167.

      ObjectSetInteger(0, up_arrow, OBJPROP_ARROWCODE, 167);    // установим код стрелки 

Et le niveau de la série est fixé selon les désirs du chat ou de la chatte d'Artyom. Elle peut être exprimée en nombres entiers ou en dixièmes.

Commencez et demandez ce qui ne fonctionne pas.

 
Vitaly Muzichenko #:

Pouvez-vous me dire si j'ai vu une sous-fenêtre d'indicateur dessinée dans ce style quelque part dans kodobase ?

Je ne le trouve pas.


DRAW_ARROW n'est pas bon ?

8 tampons si vous dessinez avec une seule couleur, 16 si vous dessinez avec deux.

ou DRAW_COLOR_LINE avec des lignes plus épaisses.

Le sens est que les lignes sont toujours au même niveau (première 1 deuxième 2 etc.), seule la couleur change.

 
Alexey Viktorov #:

Vitaly, vous me surprenez. Tous ces indicateurs sont basés sur le dessin DRAW_ARROW avec un code correspondant. Dans votre image, les carrés sont codés 167

Et le niveau de la rangée est fixé selon les souhaits du chat ou du chat d'Artyom. Elle peut être exprimée en nombres entiers ou en dixièmes.

Commencez et demandez ce qui ne fonctionne pas.

Je ne comprends pas le principe de l'indentation à partir du bas pour qu'il y ait égalité sur plusieurs rangs.

C'est là que je n'arrive pas à démarrer.