//--- description
#property description "Le script crée un objet \"Graphique\"."
//--- affichage de la fenêtre des paramètres d'entrée lors du lancement du script
#property script_show_inputs
//--- paramètres d'entrée du script
input string InpName="Chart"; // nom de l'objet
input string InpSymbol="EURUSD"; // Symbole
input ENUM_TIMEFRAMES InpPeriod=PERIOD_H1; // Période
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Coin d'ancrage
input int InpScale=2; //Echelle
input bool InpDateScale=true; // Affichage de l'échelle des heures
input bool InpPriceScale=true; // Affichage de l'échelle des prix
input color InpColor=clrRed; // Couleur de la bordure au moment de la surbrillance
input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Style de ligne lors qu'il est mis en surbrillance
input int InpPointWidth=1; // Taille du point pour le déplacement
input bool InpBack=false; // Objet en arrière-plan
input bool InpSelection=true; // Mise en surbrillance pour déplacer
input bool InpHidden=true; // Caché dans la liste des objets
input long InpZOrder=0; // Priorité du clic de souris
//+----------------------------------------------------------------------------------------------------+
//| Création de l'objet Graphique |
//+----------------------------------------------------------------------------------------------------+
bool ObjectChartCreate(const long chart_ID=0, // identifiant du graphique
const string name="Chart", // nom de l'objet
const int sub_window=0, // indice de la sous-fenêtre
const string symbol="EURUSD", // symbole
const ENUM_TIMEFRAMES period=PERIOD_H1, // période
const int x=0, // coordonnée X
const int y=0, // coordonnée Y
const int width=300, // largeur
const int height=200, // hauteur
const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // coin d'ancrage
const int scale=2, // échelle
const bool date_scale=true, // Affichage de l'échelle des heures
const bool price_scale=true, // Affichage de l'échelle des prix
const color clr=clrRed, // couleur de la bordure en surbrillance
const ENUM_LINE_STYLE style=STYLE_SOLID, // Style de trait en surbrillance
const int point_width=1, // déplace la taille du point
const bool back=false, // en arrière-plan
const bool selection=false, // mise en surbrillance pour déplacer
const bool hidden=true, // caché dans la liste des objets
const long z_order=0) // priorité du clic de souris
{
//--- réinitialise la valeur d'erreur
ResetLastError();
//--- crée l'objet Graphique
if(!ObjectCreate(chart_ID,name,OBJ_CHART,sub_window,0,0))
{
Print(__FUNCTION__,
" : échec de création del'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
return(false);
}
//--- définit les coordonnées de l'objet
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- définit la taille de l'objet
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- définit le coin du graphique, relativement auquel les coordonnées du point sont définies
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- définit le symbole
ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol);
//--- définit la période
ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,period);
//--- définit l'échelle
ObjectSetInteger(chart_ID,name,OBJPROP_CHART_SCALE,scale);
//--- affiche (true) ou cache (false) l'échelle des heures
ObjectSetInteger(chart_ID,name,OBJPROP_DATE_SCALE,date_scale);
//--- affiche (true) ou cache (false) l'échelle des prix
ObjectSetInteger(chart_ID,name,OBJPROP_PRICE_SCALE,price_scale);
//--- définit la couleur de la bordure lorsque le mode de mise en surbrillance de l'objet est activé
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- définit le style de ligne de la bordure lorsque le mode de mise en surbrillance de l'objet est activé
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- définit la taille du point d'ancrage pour déplacer un objet
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- affiche en premier plan (false) ou en arrière-plan (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- active (true) ou désactive (false) le mode de déplacement de l'étiquette par la souris
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- masque (true) ou affiche (false) le nom de l'objet graphique dans la liste des objets
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- définit la priorité pour recevoir l'événement d'un clic de souris dans le graphique
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- exécution réussie
return(true);
}
//+----------------------------------------------------------------------------------------------------+
//| Définit le symbole et la période de l'objet Graphique |
//+----------------------------------------------------------------------------------------------------+
bool ObjectChartSetSymbolAndPeriod(const long chart_ID=0, // identifiant du graphique (not Chart object's one)
const string name="Chart", // nom de l'objet
const string symbol="EURUSD", // symbole
const ENUM_TIMEFRAMES period=PERIOD_H1) // période
{
//--- réinitialise la valeur d'erreur
ResetLastError();
//--- définit le symbole et la période de l'objet Graphique
if(!ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol))
{
Print(__FUNCTION__,
" : échec de sélection du symbole pour l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,période))
{
Print(__FUNCTION__,
": échec de sélection de la période pour l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
return(false);
}
//--- exécution réussie
return(true);
}
//+----------------------------------------------------------------------------------------------------+
//| Déplace l'objet Graphique |
//+----------------------------------------------------------------------------------------------------+
bool ObjectChartMove(const long chart_ID=0, // identifiant du graphique (not Chart object's one)
const string name="Chart", // nom de l'objet
const int x=0, // Coordonnée X
const int y=0) // Coordonnée Y
{
//--- réinitialise la valeur d'erreur
ResetLastError();
//--- déplace l'objet
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
{
Print(__FUNCTION__,
" : échec du déplacement de la coordonnée X de l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
{
Print(__FUNCTION__,
" : échec du déplacement de la coordonnée Y de l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
return(false);
}
//--- exécution réussie
return(true);
}
//+----------------------------------------------------------------------------------------------------+
//| Change la taille de l'objet Graphique |
//+----------------------------------------------------------------------------------------------------+
bool ObjectChartChangeSize(const long chart_ID=0, // identifiant du graphique (not Chart object's one)
const string name="Chart", // nom de l'objet
const int width=300, // largeur
const int height=200) // hauteur
{
//--- réinitialise la valeur d'erreur
ResetLastError();
//--- modifie la taille de l'objet
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
{
Print(__FUNCTION__,
" : échec du changement de largeur de l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
{
Print(__FUNCTION__,
" : échec du changement de hauteur de l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
return(false);
}
//--- exécution réussie
return(true);
}
//+----------------------------------------------------------------------------------------------------+
//| Retourne l'identifiant de l'objet Graphique |
//+----------------------------------------------------------------------------------------------------+
long ObjectChartGetID(const long chart_ID=0, // identifiant du graphique (not Chart object's one)
const string name="Chart") // nom de l'objet
{
//--- prépare la variable pour récupérer l'identifiant de l'objet Graphique
long id=-1;
//--- réinitialise la valeur d'erreur
ResetLastError();
//--- récupère l'identifiant
if(!ObjectGetInteger(chart_ID,name,OBJPROP_CHART_ID,0,id))
{
Print(__FUNCTION__,
" : échec de récupération de l'identifiant de l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
}
//--- retourne le résultat
return(id);
}
//+----------------------------------------------------------------------------------------------------+
//| Supprime l'objet Graphique |
//+----------------------------------------------------------------------------------------------------+
bool ObjectChartDelete(const long chart_ID=0, // identifiant du graphique (not Chart object's one)
const string name="Chart") // nom de l'objet
{
//--- réinitialise la valeur d'erreur
ResetLastError();
//--- supprime le bouton
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
" : échec de la suppression de l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
return(false);
}
//--- exécution réussie
return(true);
}
//+----------------------------------------------------------------------------------------------------+
//| Fonction de démarrage du script |
//+----------------------------------------------------------------------------------------------------+
void OnStart()
{
//--- récupère le nombre de symboles dans le Market Watch
int symbols=SymbolsTotal(true);
//--- vérife si le symbole ayant le nom spécifié est présent dans la liste des symboles
bool exist=false;
for(int i=0;i<symbols;i++)
if(InpSymbol==SymbolName(i,true))
{
exist=true;
break;
}
if(!exist)
{
Print("Erreur ! Le symbole ",InpSymbol," n'existe pas dans le \"Market Watch\" !");
return;
}
//--- vérifie la validité des paramètres d'entrée
if(InpScale<0 || InpScale>5)
{
Print("Erreur ! Valeurs incorrectes des paramètres d'entrée !");
return;
}
//--- taille de la fenêtre du graphique
long x_distance;
long y_distance;
//--- définit la taille de la fenêtre
if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
{
Print("Impossible d'obtenir la largeur du graphique ! Code d'erreur = ",GetLastError());
return;
}
if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
{
Print("Impossible d'obtenir la hauteur du graphique ! Code d'erreur = ",GetLastError());
return;
}
//--- définit les coordonnées et la taille de l'objet Graphique
int x=(int)x_distance/16;
int y=(int)y_distance/16;
int x_size=(int)x_distance*7/16;
int y_size=(int)y_distance*7/16;
//--- crée l'objet Graphique
if(!ObjectChartCreate(0,InpName,0,InpSymbol,InpPeriod,x,y,x_size,y_size,InpCorner,InpScale,InpDateScale,
InpPriceScale,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redéssine le graphique et attend 1 seconde
ChartRedraw();
Sleep(1000);
//--- élargit l'objet Graphique
int steps=(int)MathMin(x_distance*7/16,y_distance*7/16);
for(int i=0;i<steps;i++)
{
//--- redimmensionnement
x_size+=1;
y_size+=1;
if(!ObjectChartChangeSize(0,InpName,x_size,y_size))
return;
//--- vérifie si l'exécution du script a été stoppée
if(IsStopped())
return;
//--- redessine le graphique et attend 0.01 seconde
ChartRedraw();
Sleep(10);
}
//--- délai d'une demie seconde
Sleep(500);
//--- change la période du graphique
if(!ObjectChartSetSymbolAndPeriod(0,InpName,InpSymbol,PERIOD_M1))
return;
ChartRedraw();
//--- trois secondes de délai
Sleep(3000);
//--- supprime l'objet
ObjectChartDelete(0,InpName);
ChartRedraw();
//--- attente d'1 seconde
Sleep(1000);
//---
}
|