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

 

Mes amis, pouvez-vous me dire ce que je dois faire pour sortir un prix à 5 chiffres ? Par exemple, je suis en train d'écrire une affaire comme celle-ci :

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

Et il imprime le prix avec quatre décimales.

Merci d'avance))

 
rid >> :

Et vous mettez cette fonction à quel endroit du code ?

J'en suis aux premières étapes de l'écriture de mon code... Donc il n'y a nulle part où le mettre. ....

Pouvez-vous m'expliquer de manière enfantine comment calculer le nombre de commandes avec le nombre magique ?))


 
Alex5757000 писал(а) >>

Mes amis, pouvez-vous me dire ce que je dois faire pour sortir un prix à 5 chiffres ? Par exemple, je suis en train d'écrire une affaire comme celle-ci :

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

Et il imprime le prix avec quatre décimales.

Merci d'avance))

Avez-vous essayé DoubleToStr() ?

 
ArtY0m писал(а) >>

J'en suis aux premières étapes de l'écriture de mon code... Donc il n'y a nulle part où le mettre. ....

Pouvez-vous m'expliquer de manière enfantine comment calculer le nombre de commandes avec le nombre magique ?))


Le moyen le plus simple est de regarder ici : https://book.mql4.com/ru/

 

Aidez-moi, s'il vous plaît. Je ne comprends pas une seule chose.

Si pendant le test visuel de l'EA 1.mq4 (ci-joint) je mets un indicateur 3-cci (ci-joint) sur le graphique, alors, comme il semble, avec exactement les mêmes paramètres des signaux de l'indicateur cci calculé et du cci réel (texte de l'objet dans le coin supérieur droit) ne coïncident pas.

POURQUOI ?

Et pour une raison quelconque, les alertes de cet indicateur ne fonctionnent pas.

Dossiers :
pack_1.rar  2 kb
 
Je n'arrive pas à trouver une référence à un indicateur qui dessine une bougie de temps fort sur un graphique de temps faible (c'est-à-dire les deux bougies en même temps). Qui peut me le dire ?
 
ArtY0m >> :

J'en suis aux premières étapes de l'écriture de mon code... Donc il n'y a nulle part où le mettre. ....

Pouvez-vous m'expliquer de manière enfantine comment calculer le nombre de commandes avec le chiffre magique) ?


Un conseiller expert (dans sa forme la plus simple) se compose de plusieurs parties.

Tout d'abord, les paramètres externes et les variables globales sont définis.

Ensuite, viennent généralement les fonctions d'initialisation et de désinitialisation.

Ensuite, la fonction START est exécutée, dans laquelle l'algorithme de travail principal du conseiller expert est défini.

Viennent ensuite les fonctions auxiliaires, définies par l'utilisateur.

Ces fonctions définies par l'utilisateur sont utilisées (appelées) dans la fonction START selon les besoins.

Voici quelque chose comme ça :

//+------------------------------------------------------------------+
//|                                                    ZZ expert.mq4 |
//|                                        Copyright © 2008, Rid     |
//|                                            Rid                   |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Rid ."
#property link      "Rid "

extern string     _  = "---- ОБЩИЕ ПАРАМЕТРЫ -----"; 
extern int       MAGIC = 777;
extern double    lots=0.1;

extern string     __  = "---- ПАРАМЕТРЫ BUY -----"; 
extern int       StopLossBuy=110;
extern int       TakeProfitBuy=55;

extern string     ___  = "---- ПАРАМЕТРЫ SELL -----"; 
extern int       StopLossSell=110;
extern int       TakeProfitSell=55;

extern string    _____= "Параметры функции ТРЕЙЛИНГ СТОП";
extern bool   UseTrailing = true;//Выключатель трейлинг стопа
extern int    MinProfit = 25;    //порог включения трейлин стопа
extern int    TrailingStop = 25;// величина трейлинг стопа
extern int    TrailingStep = 5; // шаг трейлинг стопа


int ticket;
bool  gbDisabled  = False;             // Флаг блокировки советника
bool  gbNoInit    = False;             // Флаг неудачной инициализации
//-- Подключаемые модули --
#include <stderror.mqh>
#include <stdlib.mqh>

//+------------------------------------------------------------------+
//| initialization function                                          |
//+------------------------------------------------------------------+
int init()
  {
gbNoInit= False;  
if (!IsTradeAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");
    gbNoInit= True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних экспертов");
    gbNoInit= True; return;
  }
  }

//жжжжжжжжжжжжж ФУНКЦИЯ СТАРТ жжжжжжжжжжжжжжжжжж+

int start()
  {
//Отображаем на графике число открытых позиций
// с задааным магиком "MAGIC"
Comment("Число бай позиций = ", NumberOfPositions(NULL,OP_BUY, MAGIC), "\n",
"Число селл позиций = ", NumberOfPositions(NULL,OP_SELL, MAGIC),"\n",
"Хи-Хи, тра-ля-ля");

if ( UseTrailing) TrailPositions(); // выключатель трейлинг стопа 
  
//-------- открываем позиции 
if ( NumberOfPositions(NULL, OP_BUY, MAGIC)< 1){//если нет открытыз бай-поз
//открываем позицию бай:
ticket=OrderSend(Symbol(),OP_BUY, lots,Ask,3,Ask-Point* StopLossBuy,
Ask+Point* TakeProfitBuy,"Хи-Хи, тра-ля-ля", MAGIC,0,Blue);
                                             } 
//--------------------------------------------------------------
    return(0);//конец функции int start()
  }
//жжжжжжжжжжж КОНЕЦ ФУНКЦИИ СТАРТ жжжжжжжжжжжжжжжж+


//жжжжжжж ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ жжжжжжжжжжжжжжж+
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++)                                    {
    if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES))      {
      if (OrderSymbol()== sy || sy=="")                   {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if ( op<0 || OrderType()== op)                   {
            if ( mn<0 || OrderMagicNumber()== mn) kp++;
          }}}}}  return( kp);}

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
void TrailPositions() // функция трейлинг стоп
{
  int Orders = OrdersTotal();
  for (int i=0; i< Orders; i++) {
    if (!(OrderSelect( i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;    
     if (OrderType() == OP_BUY && OrderMagicNumber()== MAGIC)  {
      if (Bid-OrderOpenPrice() > MinProfit*Point) {
        if (OrderStopLoss() < Bid-( TrailingStop+ TrailingStep-1)*Point) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Bid- TrailingStop*Point,
                                                     OrderTakeProfit(), 0, Blue);
        } } }
    if (OrderType() == OP_SELL && OrderMagicNumber()== MAGIC)  {
      if (OrderOpenPrice()-Ask > MinProfit*Point) {
        if (OrderStopLoss() > Ask+( TrailingStop+ TrailingStep-1)*Point 
                                                       || OrderStopLoss() == 0) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Ask+ TrailingStop*Point,
                                                      OrderTakeProfit(), 0, Blue);
        } } }      } }

//+----------------------------------------------------------------------------+
//|  Вывод сообщения в коммент и в журнал                                      |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment( m);
  if (StringLen( m)>0) Print( m);
}        

J'espère que vous n'avez plus de questions de ce genre maintenant !

 

Une autre question : est-il possible de placer un ordre en attente à partir d'une position ouverte, et non à partir du prix actuel ?

Merci d'avance)

 

Bien sûr que vous pouvez. Nous devons simplement nous assurer que cet ordre en attente est placé à une distance du prix actuel telle qu'il respecte les niveaux d'arrêt fixés par les sociétés de courtage.

Par exemple, si un ordre en attente est placé à 100 pips du dernier prix d'ouverture de l'ordre, mais qu'il est trop proche du prix actuel, le journal renverra une erreur 130 pour ouvrir l'ordre.

 
rid >> :

Bien sûr que vous pouvez. Nous devons simplement nous assurer que cet ordre en attente est placé à une distance du prix actuel telle qu'il respecte les niveaux d'arrêt fixés par les sociétés de courtage.

Par exemple, si l'ordre est fixé à une distance de 100 points du prix d'ouverture de la dernière position, mais qu'il est trop proche du prix actuel, le journal renverra une erreur 130 pour ouvrir l'ordre.

Comment, si ce n'est pas un secret ?