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

 
Порт-моне тв:

Quelqu'un peut-il m'aider ?

Afin de ne pas s'embêter avec les noms des figures, vous pouvez trouver la figure avec les dates de point les plus récentes. Et ensuite, lorsque ce chiffre est trouvé, la question est pour vous : quel événement doit être suivi ? Intersection de l'horizontal, du vertical, du top-down, du bottom-up.

L'événement à surveiller est OnChartEvent.

 

Bonjour !

Avant, je pouvais mettre une limite dans le code pour afficher les valeurs de l'indicateur sur le moniteur. Mais avec cet indicateur, rien ne fonctionne. Peut-être pouvez-vous m'aider à mettre une limite dans le code ? S'il vous plaît !

Merci !

Dossiers :
Tipu_MACD.mq4  18 kb
 

Bonjour. Pourriez-vous me dire comment calculer le prix de l'offre ?

Comment calculer un prix acheteur auquel plusieurs positions d'achat auront un profit total nul pour les paires de devises, où la devise de base (première devise) est le dollar, et la valeur du pip n'est pas constante et dépend des prix ?

Pour les paires où le dollar est la (deuxième) devise cotée et où la valeur du pip est constante, j'ai dérivé cette fonction,

double Null_BUY(){ 
   double null=0; double summ_count=0; double lots_count=0; double position_count=0;
   for (int i=OrdersTotal()-1; i>=0; i--){
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
        if (OrderSymbol() == Symbol() ){
            if(OrderType()==OP_BUY ){
               position_count=Bid-((OrderProfit()+OrderSwap()+OrderCommission()) / OrderLots()*MarketInfo(Symbol(), MODE_TICKVALUE))*Point; 
               summ_count+=position_count*OrderLots();
               lots_count+=OrderLots();
            }
         }
      }
   }
   if(lots_count!=0) null=NormalizeDouble(summ_count/lots_count, Digits);
   return(null);
}
 
Forallf:

Pouvez-vous me donner un indice ? J'ai dessiné un segment de ligne sur un graphique. J'ai besoin de connaître les prix de début et de fin du segment. Est-ce que c'est possible ?

J'ai trouvé un exemple. Je l'ai fait comme ça.

//+------------------------------------------------------------------+
//|                                                        линия.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {  
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   //Проверим что есть трендовая линия и она в единственном экземпляре:
   if(ObjectsTotal(OBJ_TREND)!=1)
   {Comment("Нарисуйте 1 трендовую линию!");}

   //Получим ИМЯ трендовой линии:
   for(int i=0;i<ObjectsTotal();i++)
     {
      string name=ObjectName(i);
      if(ObjectType(name)==OBJ_TREND)
        {
         datetime t1=ObjectGet(name,OBJPROP_TIME1);
         datetime t2=ObjectGet(name,OBJPROP_TIME2);
         double p1=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE1),Digits);
         double p2=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE2),Digits);
         Comment(p1,"   ",p2);
        }
     }
  }
//+------------------------------------------------------------------+

Aidez-moi à faire un autre segment qui serait horizontal au milieu du premier. Je vais modifier la longueur du premier segment, de sorte que l'emplacement du deuxième segment devrait également changer. Tirer de PRICE2 10 bougies en avant.

Dossiers :
EURUSDM12.png  25 kb
 
Forallf:

J'ai trouvé un exemple. Je l'ai fait comme ça.

Veuillez m'aider à créer un autre segment qui serait horizontal par rapport au milieu du premier segment. Je vais changer la longueur du premier segment, donc l'emplacement du deuxième segment devrait changer en conséquence. Tirer de PRICE2 10 bougies en avant.

comme ça.


369
369
  • 2021.01.07
  • www.youtube.com
лин
 
Iurii Tokman:

voilà -


Donc.
 
Forallf:
Bien.

ce vélo est une caractéristique standard du terminal
appelé lignes de Fibonacci

 
Iurii Tokman:

ce vélo est une caractéristique standard du terminal
appelé lignes de Fibonacci

Celui du milieu est pour moi, à titre d'exemple. Il y aura un niveau différent, calculé.
 
Forallf:
Le milieu est pour moi à titre d'exemple. Il y aura un autre niveau, calculé.

Vous pouvez trouver n'importe quel point sur une ligne en connaissant ses coordonnées. Dans votre cas, nous connaissons les prix et les dates de début et de fin du segment. On peut aussi trouver le prix du milieu = (prix de départ + prix d'arrivée)/2. Ou toute autre formule que vous utilisez.

Nous pouvons maintenant utiliser la première fonction pour trouver l'heure d'un point sur un segment.

//находит дату точки (координату X) на прямой, на заданную цену (координата Y)
datetime GetPointTimeOnStraight(datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, double ePrice3, string eSymbol, int eTimeFrame)
   {
   if(ePrice2-ePrice1==0) return(0.0);
   //индекс бара соответствующий заданному времени, возможно задавать будующее время
   int eIndex1=(eTime1>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime1)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime1);
   int eIndex2=(eTime2>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime2)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime2);
   int eIndex3=eIndex1+(int)((eIndex2-eIndex1)*(ePrice3-ePrice1)/(ePrice2-ePrice1));
   return(iTime(eSymbol,eTimeFrame,eIndex3));
   }

//находит цену точки (координату Y) на прямой, на заданное время (координата X)
double GetPointPriceOnStraight(datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, datetime eTime3, string eSymbol, int eTimeFrame)
   {
   //индекс бара соответствующий заданному времени, возможно задавать будующее время
   int eIndex1=(eTime1>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime1)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime1);
   int eIndex2=(eTime2>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime2)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime2);
   if(eIndex2-eIndex1==0) return(0.0);
   int eIndex3=(eTime3>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime3)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime3);
   return(ePrice1+(ePrice2-ePrice1)*(eIndex3-eIndex1)/(eIndex2-eIndex1));
   }
 
Aleksei Stepanenko:

Si ça n'a aucun sens, je vais devoir vous donner un indice :

Je pense que je l'ai eu, merci ! !!