Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 858

 

Bon après-midi.

L'indicateur dans la fenêtre affiche jusqu'à 5 décimales.

Lorsqu'on l'utilise dans un Expert Advisor via iCustom(Symbol(), PERIOD_M1, "MACD",12, 26, SignalSMA, 0, 0), il affiche jusqu'à 4 décimales (définies par la commande Print).

Comment obtenir 5 chiffres dans le tableau ?

 
Imprimez en utilisant la fonction DoubleToString et vous obtiendrez les 5 chiffres souhaités. Si vous le souhaitez, vous pouvez également obtenir 8 caractères.
 
AlexeyVik:
Imprimez en utilisant la fonction DoubleToString et vous obtiendrez les 5 chiffres souhaités. Si vous voulez, vous pouvez aussi en obtenir 8.
En d'autres termes, les calculs de l'indicateur dans l'Expert Advisor sont effectués sur 5 chiffres, et Print coupe le 4ème chiffre lorsqu'il est affiché dans le Journal ?
 
Craft:
En d'autres termes, les calculs de l'indicateur dans le conseiller expert sont effectués avec 5 décimales et Print réduira le résultat à 4 décimales lorsqu'il sera affiché dans le journal ?

Le résultat du calcul peut comporter jusqu'à 16 décimales s'il n'est pas normalisé :

Данные типа double выводятся с точностью до 16 десятичных цифр после точки, при этом данные могут выводиться либо в традиционном либо в научном формате – в зависимости от того, как запись будет наиболее компактна.
Данные типа float выводятся с 5 десятичными цифрами после точки. Для вывода вещественных чисел с другой точностью либо в явно указанном формате необходимо использовать функцию PrintFormat(). 

La sortie du calcul directement via Print n'est pas coupée. Il y a quelque chose d'autre dans le code, la normalisation, par exemple.




 

C'est ça le truc, il n'y a rien d'autre (normalisations, etc.) :

double g_macd=iCustom(Symbol(), PERIOD_M1, "g_MACD",12, 26, SignalSMA, 1, 0) ;

Imprimer ("g_macd=",g_macd) ;

g_MACD a une valeur (du 1er tampon) dans l'indicateur à la 5e décimale, alors que Print dans le journal montre une valeur à la 4e décimale, ce qui n'est pas acceptable.

Comment résoudre ce problème ?

 
Craft:

C'est ça le truc, il n'y a rien d'autre (normalisations, etc.) :

double g_macd=iCustom(Symbol(), PERIOD_M1, "g_MACD",12, 26, SignalSMA, 1, 0) ;

Imprimer ("g_macd=",g_macd) ;

g_MACD a une valeur (du 1er tampon) dans l'indicateur à la 5e décimale, alors que Print dans le journal montre une valeur à la 4e décimale, ce qui n'est pas acceptable.

Comment résoudre ce problème ?

Regardez dans votre code, le problème est quelque part là.

Pour le tester, j'ai exécuté un script simple avec un appel WPR et j'ai imprimé le résultat de l'appel de l'indicateur:

 double wpr1=iWPR(NULL,0,1440,1);
 Print("WPR=",wpr1);

****2015.03.08 01:12:15	2015.03.06 22:59 **** EURUSD,H1: WPR=-99.1902834008098


L'indicateur lui-même, comme vous le savez, affiche des valeurs avec 4 décimales dans sa fenêtre, mais pour les Expert Advisors, il affiche 13 et même 14.

 
Pokrov:

Bonjour, Regardez le code ci-dessous, création de l'objet "Flèche" sur le signal, les flèches ne sont pas dessinées dans le testeur, bien que le journal passe, et aussi dans le journal au démarrage dans le testeur écrit une erreur TestGenerator : unmatched data error (volume limit 412 at 2014.10.13 17:10 exceeded),

Et pendant le test, il émet une erreur "Checking USDJPYm,M5 arrow : Error in object creation : code #4200" - mais je suppose que c'est normal, car au début le programme constate que l'objet a été créé, et après l'avoir supprimé, le crée à nouveau. D'une manière générale, je vous serais reconnaissant de bien vouloir répondre à ces questions.

Ne jugez pas strictement ce qui est écrit.


Les amis, aidez-moi avec les flèches, s'il vous plaît ! !!

//+------------------------------------------------------------------+
//| SignalOpenOrderBuy SendMail                                      |
//+------------------------------------------------------------------+
if (PLO0>S0 && PLO1<=S1 && PLO2<S2 && Time[0] > SignalTime)
{
SignalTime = TimeCurrent();
bool SignalBuy = ObjectCreate(0,"ArrowBay",OBJ_ARROW_BUY,0,0,Bid,SignalTime);
Print("Стрелка Buy установлена");
ObjectSetInteger(0,"ArrowBay",OBJPROP_COLOR,clrGreen);
if(!SignalBuy)
Print("Ошибка создания объекта: code #",GetLastError());
ResetLastError();
ObjectDelete(0,"ArrowBay");
RefreshRates();
SignalBuy = ObjectCreate(0,"ArrowBay",OBJ_ARROW_BUY,0,0,Bid,SignalTime);
ObjectSetInteger(0,"ArrowBay",OBJPROP_COLOR,clrGreen);
if(!SignalBuy)
Print("Ошибка создания объекта: code #",GetLastError());
else
Print("Стрелка Buy установлена");
}
 
Pokrov:

Les amis, aidez-moi avec les flèches, s'il vous plaît ! !!

Trouvez cette ligne.

bool SignalBuy = ObjectCreate(0,"ArrowBay",OBJ_ARROW_BUY,0,0,Bid,SignalTime);

Regardez où la flèche est dessinée.

 
AlexeyVik:

Trouvez cette ligne

Regardez où la flèche est dessinée.

J'ai maintenant les flèches et elles se déplacent de signal en signal en fonction des points,

Je peux alors analyser le déclenchement du signal sur le graphique ?

 
Pokrov:

Merci, Alexey ! Cela a aidé, maintenant les flèches apparaissent et se déplacent de signal en signal par points, mais comment faire pour que les flèches apparaissent et restent à leur place sur chaque signal ?

Je peux alors analyser le déclenchement du signal sur le graphique ?

Arrêtez de bouger et dessinez-en de nouveaux.
Raison: