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

 
Alexey Kozitsyn:
Eh bien... Je ne pense pas qu'il faille creuser si profondément, mais la demande en boucle est vraiment la première chose qui attire l'attention.

Et s'il a besoin de ces données une seule fois, ou une fois par heure ? Pourquoi faire une boucle inutile ?

Aucun d'entre nous, à l'exception de l'auteur de la question lui-même, ne sait ce qu'il veut. Nous ne pouvons donc que lui conseiller ce qu'on lui a conseillé de faire, c'est-à-dire d'aller lire dans un club télépathique ses manquements dans la formulation de la question. Et ne soyez pas offensé par ceux qui ont décidé de rire un peu.

 
Alexey Kozitsyn:
Trollers :) Une meilleure suggestion serait de mettre les prix dans une boucle. Par conséquent, stockez-les dans des tableaux.
Lisez-le à votre guise).
 
Vous auriez dû simplement répondre que ma question n'était pas claire pour vous. Et vous "sel et poivre..." Rancœur
 
STARIJ:

A mon avis, c'est plus simple comme ça

Les sorties d'alerte s'affichent immédiatement à l'écran. C'est la fin de la table


Avez-vous lu la question ? Vous semblez l'avoir manqué.
 
Romal001:
Vous auriez dû simplement répondre que ma question n'était pas claire pour vous. Et vous "sel, poivre..." Offensive

Lisez ma première réponse, c'était une question qui vous était adressée. Si vous aviez répondu clairement, la conversation aurait pu être différente.

De quel type de signaux s'agit-il ?

Et qu'est-ce que cela a à voir avec les données sur les bougies ?

 
#property indicator_chart_window
extern int boom = 1;
//=================================
void fishka(int ma,int mi,double map,double mip) // ф-ция
{
   ObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[ma], map, Time[mi], mip);// Проводим линию
   ObjectSet("Макс_Мин",OBJPROP_RAY,false);     // Выключить свойство бесконечного луча
}

int deinit()
  {

 ObjectsDeleteAll();// Удалим все объекты
  return(0);
  }

void start()
{  
  string Символ = "GBPUSD";
  datetime Первый, Последний;
  int Период=PERIOD_H1;

  Последний = iTime(Символ, Период, 0);// Прежде всего узнаем дату и время последнего бара
 
if(boom){
   Alert("Последний бар на часовом  ",Последний);}
 
  
  MqlDateTime MqlПервый;              // Теперь получить начало суток, обнулив часы
  TimeToStruct(Последний,MqlПервый);  // Для этого преобразуем время последнего бара в структуру
  MqlПервый.hour=0;

  
  Первый=StructToTime(MqlПервый);            // Терерь надо обратно преобразовать во время
if(boom){
  Alert("Первый бар на часовом  ",Первый);}  // Смотрим начало первого бара суток
  
  int НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);// По времени определим номер первого бара суток
if(boom){
   Alert("Первый бар на часовом под номером ",НомерПервого);}

// Можно было просто узнать время начала бара на D1

  // Теперь у нас есть НомерПервого бара, а номер послелнего = 0
  // Найдем на этом интервале номера баров, где макс и мин
  // iHighest и iLowest находят номер бара с макс и мин ценой
 int  БарМакс = iHighest(Символ,  // symbol = инструмента
                Период,           // timeframe = Период
                MODE_HIGH,        // Наибольшая цена бара
                НомерПервого+1,   // Количество баров
                0);               // Начальный бар

int  БарМин  = iLowest(Символ,Период,MODE_LOW,НомерПервого+1,0); // Наименьшая цена бара
                               
if(boom){
  Alert("Максимальный бар = ", БарМакс, "  Минимальный бар = ", БарМин);}
                                                                           

 
double max_price=iHigh(Символ, Период, БарМакс); // iHigh и iLow дают макс и мин цены указанного бара
double min_price=iLow (Символ, Период, БарМин);
   
    fishka(БарМакс,БарМин,max_price,min_price); // ф-ция
 if(boom){
   Alert("Максимум цены = ", max_price, "  Минимум цены = ", min_price);
 
   Alert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));} // Теперь хорошо бы узнать угол               
}

comment le mettre en boucle pour afficher non pas un seul jour mais l'historique, tout tordu comme un serpent ne fonctionne pas, l'intérêt est technique, ça me démange)).

 

Comment obtenir un prix correct et plus précis là où les deux machines se chevauchent ?


 
missha32:   Veuillez indiquer comment obtenir un prix correct et plus précis lorsque deux machines se croisent.

L'intersection est entre les barres, et le calcul est basé sur les barres. Ou devez-vous être plus précis ? Vous pouvez interpoler, mais devez-vous le faire ? Le Ma lent a la même valeur.

 
STARIJ:

Intersection entre les barres, et le calcul se fait barre par barre. Ou devez-vous être plus précis ? Vous pouvez interpoler, mais devez-vous le faire ? Slow Ma a la même valeur.

Dans cette figure, MA1(1)>MA2(1) et MA1(2)<=MA2(2) est le fait du croisement. La barre entre parenthèses indique la barre à laquelle sont prises les MA1 et MA2
 

Le croisement des MA se produit entre les barres - prise d'un exemple clair

Le MA sur les barres à gauche et à droite du croisement est différent du prix au point de croisement. Je comprends que l'auteur de la question souhaite obtenir la valeur au point de croisement exact plutôt que la valeur sur l'une des barres adjacentes. Cette valeur exacte peut être obtenue en utilisant l'interpolation linéaire - parce que le MA entre les barres est construit comme des segments de ligne droite. Ou prenez les coordonnées de chaque MA sur des barres adjacentes. Construire analytiquement 2 droites et calculer leur point d'intersection. Il est possible de calculer en considérant 2 triangles similaires. Une autre question se pose : pourquoi en avons-nous besoin ? Les coûts sont-ils comparables à la valeur du résultat ? Après tout, les points d'intersection se déplaceront si les paramètres MA sont modifiés de façon minimale. Le plus souvent, il est exigé par le responsable du projet de cours.

Raison: