Comment sans objet, nous connaissons le prix et c'est la ligne, il faut vérifier si elle a changé ou non, il est clair qu'il faut comparer ce prix je ne sais pas comment).
quel genre de
où obtenir une mesure du prix2))
le prix de la dernière barre et sera Price2, comparez Bid avec n'importe quel prix de la dernière barre de votre choix - Open, Close, High, Low.
Si vous voulez des prix intermédiaires, vous devez sauvegarder l'historique des ticks et prendre le prix précédent à partir de là, puis l'offre sera comparée au prix du tick précédent.
Et quel est le sens de la normalisation du prix ? Vous devez normaliser des valeurs calculées qui seront utilisées ultérieurement dans les ordres de négociation, et le prix est déjà normalisé.
La méthode de recherche dans celle qui suit est légèrement différente :
#property strict/******************************************************************************/bool AddValue(double &array[], constdouble value) {
constint size = ArraySize(array);
if (ArrayResize(array, size + 1) != size + 1) {
returnfalse; // Ошибка, значение не может быть добавлено к массиву
}
array[size] = value; //записываемreturntrue; // Нет ошибки, значение добавлено к массиву
}
/******************************************************************************/bool AddValueIfFound(double &array[], conststring name) {
constint type = ObjectType(name);
if (type == OBJ_TREND) {
switch ((color)ObjectGet(name, OBJPROP_COLOR)) { // Тип color допустимо использовать в switchcase Goldenrod:
case Gainsboro:
case White:
if (!AddValue(array, ObjectGetValueByShift(name, 1))) {
returnfalse; // Ошибка, значение найдено, но не может быть добавлено к массиву
}
}
}
returntrue; // Нет ошибки, значение, если найдено, добавлено к массиву
}
/******************************************************************************/bool MassTrendNumber(double &array[], constbool buy) { // Поиск значения цены трендовой линии, текущего бара, запись в массив. Два массива: masS и masBconststring subname = (buy ? "uptrendline" : "downtrendline"); // существует два названия трендовых линий, первое и второеif (ArrayResize(array, 0) != 0) {
returnfalse; // Ошибка, массив не может быть заполнен достоверно
}
for (int i = 0, limit = ObjectsTotal(OBJ_TREND); i < limit; i++) {
if (!AddValueIfFound(array, subname + IntegerToString(i))|| !FilTrenLin(subname+IntegerToString(i))) { \\ Вот куда вставилreturnfalse; // Ошибка, массив, если и заполнен, то недостоверно
}
}
returntrue; // Нет ошибки, массив заполнен достоверно
}
/***************************************************************************/boolFilTrenLin(string name) {
const string dt_123 = TimeToStr(TimeCurrent(),TIME_SECONDS); //const datetime vremnin= StrToTime(dt_123); // Присваиваем время в секундах const datetime vrem2kor= ObjectGet(name,OBJPROP_TIME2);// время второй координатыMqlDateTime str1;
TimeToStruct(vrem2kor,str2);
const int PjatPon=str1.sec;
if(PjatPon+3600>=vremnin){ \\ если время 2-ой координаты + час > времени нынешнего то блокируем запись в массивPrint(" PjatPon ", PjatPon," vremnin ",vremnin," vrem2kor ",vrem2kor);
returnfalse;
}
returntrue;
}
/******************************************************************************/void FillAndPrint(double &array[], constbool buy) {
if (MassTrendNumber(array, buy)) {
constint limit = ArraySize(array);
Print("Найдено объектов: ", limit);
for (int i = 0; i < limit; i++) {
Print("Price[", i, "] = ", DoubleToStr(array[i], Digits));
}
} else {
Print("Чёрт!");
}
}
N'y voyez pas d'insolence, je nesais même plus comment l'aborder, mais c'est plus fort que moi.J'ai pensé que si je pouvais constituer un réseau, alors les conditions seraient martelées, filtrant le signal comme rien d'autre.
Ne faites pas attention à moi, jene sais même plus comment l'aborder, mais je ne peux rien y faire. J'ai pensé que si je pouvais faire un tableau, alors les conditions seraient un casse-tête pour filtrer le signal.
Lafonction TimeCurrent() est surchargée. Si vous lisez la description du type datetime, vous verrez que la première variante de la première fonction fera l'affaire :
Nous pouvons aller dans une autre direction, non pas pour obtenir la différence des moments dans le temps, mais pour comparer ces moments (en même temps, nous pouvons utiliser à nouveau une expression conditionnelle) :
01:30:29 Script 2 EURUSDm,H1: loaded successfully
01:30:292 EURUSDm,H1: initialized
01:30:312 EURUSDm,H1: Момент времени dt НЕ достигнут
01:30:332 EURUSDm,H1: Момент времени dt НЕ достигнут
01:30:352 EURUSDm,H1: Момент времени dt достигнут
01:30:382 EURUSDm,H1: Момент времени dt достигнут
01:30:382 EURUSDm,H1: uninit reason 001:30:38 Script 2 EURUSDm,H1: removed
Après avoir compris l'essence des idées appliquées, et s'être rappelé ce qu'est le type de date, travailler avec des moments de temps, si la précision requise ne dépasse pas les unités de secondes, ne devrait pas poser de difficultés.
Lafonction TimeCurrent() est surchargée. Si vous lisez la description de ce qu'est le type datetime, vous constaterez que la première version de la fonction est parfaite :
C'est le cas :
Nous pouvons également aller dans l'autre sens, non pas pour obtenir la différence des moments, mais pour comparer ces moments (en même temps, nous pouvons à nouveau utiliser une expression conditionnelle) :
Donne en cours d'exécution :
Une fois que vous avez compris les idées, et que vous vous souvenez du type datetime, travailler avec des points dans le temps ne devrait pas poser de problème, tant que la précision requise ne dépasse pas les unités de secondes.
Pour être honnête, je n'ai pas encore trouvé comment l'appliquer. Il reste un millimètre à faire, c'est dommage de s'arrêter quand c'est presque fini.
Task, ne pas écrire le prix dans le tableau si l'objet time(2nd parameter+3600sec>current)||(1st parameter time - 2nd parameter time)<3600sec )
/******************************************************************************/bool MassTrendNumber(double &array[], constbool buy) { // Поиск значения цены трендовой линии, текущего бара, запись в массив. Два массива: masS и masBconststring subname = (buy ? "uptrendline" : "downtrendline"); // существует два названия трендовых линий, первое и второеif (ArrayResize(array, 0) != 0) {
returnfalse; // Ошибка, массив не может быть заполнен достоверно
}
for (int i = 0, limit = ObjectsTotal(OBJ_TREND); i < limit+2; i++) {
if (!AddValueIfFound(array, subname + IntegerToString(i))||!FilTrenLin(subname + IntegerToString(i)) {// Условие вставил вот сюдаreturnfalse; // Ошибка, массив, если и заполнен, то недостоверно
}
}
returntrue; // Нет ошибки, массив заполнен достоверно
}
/***************************************************************************/bool FilTrenLin(string name) {
constdatetime dt = TimeCurrent();
constdatetime dt1 = ObjectGet(name,OBJPROP_TIME1);
constdatetime dt2 = ObjectGet(name,OBJPROP_TIME2);
Print(" DiffInSecs(dt,dt2) ", DiffInSecs(dt,dt2)," DiffInSecs(dt2,dt1)) ",DiffInSecs(dt2,dt1)," dt1 ",dt1);
if(DiffInSecs(dt,dt2)<3600||DiffInSecs(dt2,dt1)<3600)// Если время объекта второго параметра + 3600 сек > текущего времени,
или если разница первого и второго параметра времени объекта < 3600 сек, то запускаем ошибку, чтоб цена не записалась в массив.
{ returnfalse;
}
returntrue;
}
/******************************************************************************/long DiffInSecs(constdatetime dt1, constdatetime dt2) {
return dt1 - dt2;
}
Oui, merci beaucoup, vous êtes au-delà des mots, tellement utile, tellement clair ! Awesomeooo !!!
Ce serait cool si vous pouviez vous enseigner progressivement des compétences importantes de la manière la plus directe et efficace possible.
Et si d'autres peuvent en bénéficier de la même manière.
Je ne peux pas penser à quoi que ce soit) il y a une ligne Et comment puis-je vérifier si la ligne a changé
Je ne peux pas penser) il y a une ligne Et comment puis-je vérifier si cette ligne a changé
CHARTEVENT_OBJECT_CHANGE
Modification des propriétés d'un objet graphique via la boîte de dialogue des propriétés
CHARTEVENT_OBJECT_CHANGE
Modification des propriétés d'un objet graphique via le dialogue des propriétés
Comment sans objet, si nous savons que le prix est une ligne, nous devons vérifier s'il a changé, il est clair que nous devons comparer le prix).
quel genre de
où obtenir une mesure du prix2))
Comment sans objet, nous connaissons le prix et c'est la ligne, il faut vérifier si elle a changé ou non, il est clair qu'il faut comparer ce prix je ne sais pas comment).
quel genre de
où obtenir une mesure du prix2))
le prix de la dernière barre et sera Price2, comparez Bid avec n'importe quel prix de la dernière barre de votre choix - Open, Close, High, Low.
Si vous voulez des prix intermédiaires, vous devez sauvegarder l'historique des ticks et prendre le prix précédent à partir de là, puis l'offre sera comparée au prix du tick précédent.
Et quel est le sens de la normalisation du prix ? Vous devez normaliser des valeurs calculées qui seront utilisées ultérieurement dans les ordres de négociation, et le prix est déjà normalisé.
le prix de la dernière barre sera Price2
Si vous voulez des prix intermédiaires, vous devez sauvegarder l'historique des ticks et prendre le prix précédent à partir de là.
J'ai tout compris :)
Non, ça ne marcherait pas avec mes barres.
La méthode de recherche dans celle qui suit est légèrement différente :
N'y voyez pas d'insolence, je nesais même plus comment l'aborder, mais c'est plus fort que moi.J'ai pensé que si je pouvais constituer un réseau, alors les conditions seraient martelées, filtrant le signal comme rien d'autre.
Ne faites pas attention à moi, jene sais même plus comment l'aborder, mais je ne peux rien y faire. J'ai pensé que si je pouvais faire un tableau, alors les conditions seraient un casse-tête pour filtrer le signal.
Lafonction TimeCurrent() est surchargée. Si vous lisez la description du type datetime, vous verrez que la première variante de la première fonction fera l'affaire :
C'est le cas :
Nous pouvons aller dans une autre direction, non pas pour obtenir la différence des moments dans le temps, mais pour comparer ces moments (en même temps, nous pouvons utiliser à nouveau une expression conditionnelle) :
Le démarrage donne :
Après avoir compris l'essence des idées appliquées, et s'être rappelé ce qu'est le type de date, travailler avec des moments de temps, si la précision requise ne dépasse pas les unités de secondes, ne devrait pas poser de difficultés.
Lafonction TimeCurrent() est surchargée. Si vous lisez la description de ce qu'est le type datetime, vous constaterez que la première version de la fonction est parfaite :
C'est le cas :
Nous pouvons également aller dans l'autre sens, non pas pour obtenir la différence des moments, mais pour comparer ces moments (en même temps, nous pouvons à nouveau utiliser une expression conditionnelle) :
Donne en cours d'exécution :
Une fois que vous avez compris les idées, et que vous vous souvenez du type datetime, travailler avec des points dans le temps ne devrait pas poser de problème, tant que la précision requise ne dépasse pas les unités de secondes.
Pour être honnête, je n'ai pas encore trouvé comment l'appliquer. Il reste un millimètre à faire, c'est dommage de s'arrêter quand c'est presque fini.
Task, ne pas écrire le prix dans le tableau si l'objet time(2nd parameter+3600sec>current)||(1st parameter time - 2nd parameter time)<3600sec )