Ich würde vorschlagen, Metaquotes die Schaffung eines Kurses, der von den Grundlagen (Syntax) beginnt, auch mit einigen Video, wenn möglich, der speziell für mq5: Dies ist sehr nützlich für diejenigen, die Programmierung beginnen.
Ich denke, dass viele Menschen in MT5 interessiert sind, aber nicht wissen, wie zu programmieren.
vielen Dank, Ihr Code funktioniert, d.h. die Beschriftung wird angezeigt, aber der Wert wird nicht aktualisiert. Habe ich einen Fehler gemacht?
Hier ist mein Code.
walb99,
Versuchen Sie dies. Das Problem war, dass Sie versucht haben, den Wert nur zu aktualisieren, wenn das Label-Objekt nicht verfügbar war. Ich habe dem Label einen Zeitstempel hinzugefügt, so dass Sie die Zeitaktualisierung bei jedem Tick sehen können.
int OnCalculate( constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
int limit;
if (CountBars >= rates_total) limit = 0; else limit = rates_total - CountBars;
CopyBuffer(ma1_handle, 0, 0, rates_total, MA1TempBuffer);
for (int i = rates_total - 1; i > limit; i--)
{
MA1Buffer[i] = MA1TempBuffer[i];
double myMA_now = MA1TempBuffer[i];
double myMA_previous = MA1TempBuffer[i - 1]; //MA One bar agoif (myMA_now >= myMA_previous) MA1ColorBuffer[i] = 0;
elseif (myMA_now < myMA_previous) MA1ColorBuffer[i] = 1;
}
myMAnow=MA1TempBuffer[rates_total-1-MA1_Shift];
// myMAnow=MA1TempBuffer[rates_total - 1];
myPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID);
if(myPrice>myMAnow)label_color=Lime; else label_color=Red;
// check if label object does not already exist and create itif(ObjectFind(0,label_info)<0)
{
// Create label in indicator's window ObjectCreate(0,label_info,OBJ_LABEL,window,0,0);
// Set X and Y distance from UPPER RIGHT CORNER ObjectSetInteger(0,label_info,OBJPROP_XDISTANCE,200);
ObjectSetInteger(0,label_info,OBJPROP_YDISTANCE,20);
ObjectSetInteger(0,label_info,OBJPROP_CORNER, CORNER_RIGHT_UPPER);
// Set text properties: colour, font and font sizeObjectSetInteger(0,label_info,OBJPROP_COLOR,label_color);
ObjectSetString(0,label_info,OBJPROP_FONT,"Arial");
ObjectSetInteger(0,label_info,OBJPROP_FONTSIZE,14);
// Set text to displayObjectSetString(0,label_info,OBJPROP_TEXT,DoubleToString(myMAnow,nDigits));
} else
{
ObjectSetString(0,label_info,OBJPROP_TEXT,TimeToString(TimeCurrent(), TIME_SECONDS)+" "+DoubleToString(myMAnow,nDigits));
};
return(rates_total);
}
Versuchen Sie dies. Das Problem war, dass Sie versucht haben, den Wert nur zu aktualisieren, wenn das Label-Objekt nicht verfügbar war. Ich habe dem Label einen Zeitstempel hinzugefügt, so dass Sie die Zeitaktualisierung bei jedem Ticken sehen können.
Danke, das funktioniert
Wenn ich auch Informationen über die Etikettenfarbe in die Klammern einfüge, wird die Etikettenfarbe auch richtig aktualisiert.
ok, ich denke, ich habe es Arbeit von nur den Text anzeigen, als nächstes werde ich mit dem Indikator arbeiten. aber kann mir jemand sagen, warum ich nicht obj_label anstelle von obj_text verwenden kann, um es den Text anzeigen zu lassen?
//+------------------------------------------------------------------+ //| text win 2.mq5 | //| Copyright CREATE BY DK | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "CREATE BY DK" #property link "http://www.mql5.com" #property version "1.00" #property indicator_separate_window #property indicator_plots 1
string ddock = "try it out"; int windows = -1; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ intOnInit() { //--- indicator buffers mapping /* if ((ENUM_PROGRAM_TYPE)MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR) windows=ChartWindowFind();
if (ObjectFind(0,ddock)<0) { ObjectCreate(0,ddock,OBJ_LABEL,windows,0,0); ObjectSetInteger(0,ddock,OBJPROP_XDISTANCE,200); ObjectSetInteger(0,ddock,OBJPROP_YDISTANCE,20); ObjectSetInteger(0,ddock,OBJPROP_CORNER, CORNER_RIGHT_UPPER); ObjectSetInteger(0,ddock,OBJPROP_COLOR,LightBlue); ObjectSetString(0,ddock,OBJPROP_FONT,"Arial"); ObjectSetInteger(0,ddock,OBJPROP_FONTSIZE,14); ObjectSetString(0,ddock,OBJPROP_TEXT, "TRYING VERY HARD"); } else Print("ddock already exists"); */ /* if((ENUM_PROGRAM_TYPE)MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR) windows=ChartWindowFind(); */ // check if label object does not already exist and create it if(ObjectFind(0,ddock)<0) { // Create label in indicator's window ObjectCreate(0,ddock,OBJ_TEXT,windows,0,0); // Set X and Y distance from UPPER RIGHT CORNER ObjectSetInteger(0,ddock,OBJPROP_XDISTANCE,200); ObjectSetInteger(0,ddock,OBJPROP_YDISTANCE,20); ObjectSetInteger(0,ddock,OBJPROP_CORNER, CORNER_RIGHT_UPPER); // Set text properties: colour, font and font size ObjectSetInteger(0,ddock,OBJPROP_COLOR,LightPink); ObjectSetString(0,ddock,OBJPROP_FONT,"Arial"); ObjectSetInteger(0,ddock,OBJPROP_FONTSIZE,14); // Set text to display ObjectSetString(0,ddock,OBJPROP_TEXT,"TRYING VERY HARD"); } elsePrint("ddock already exists");
//--- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ intOnCalculate(constint rates_total, constint prev_calculated, constdatetime& time[], constdouble& open[], constdouble& high[], constdouble& low[], constdouble& close[], constlong& tick_volume[], constlong& volume[], constint& spread[]) { //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ /* void OnDeinit(const int reason) { if (!ObjectFind(0,ddock)<0) ObjectDelete(0,ddock); } /* void OnDeinit(const int reason) { //--- if(!ObjectFind(0,ddock)<0) ObjectDelete(0, ddock); } */
Danke wald99 : Ich versuche.
Ich würde vorschlagen, Metaquotes die Schaffung eines Kurses, der von den Grundlagen (Syntax) beginnt, auch mit einigen Video, wenn möglich, der speziell für mq5: Dies ist sehr nützlich für diejenigen, die Programmierung beginnen.
Hallo Investeo
vielen Dank, Ihr Code funktioniert, d.h. die Beschriftung wird angezeigt, aber der Wert wird nicht aktualisiert. Habe ich einen Fehler gemacht?
Hier ist mein Code.
walb99,
Versuchen Sie dies. Das Problem war, dass Sie versucht haben, den Wert nur zu aktualisieren, wenn das Label-Objekt nicht verfügbar war. Ich habe dem Label einen Zeitstempel hinzugefügt, so dass Sie die Zeitaktualisierung bei jedem Tick sehen können.
walb99,
Versuchen Sie dies. Das Problem war, dass Sie versucht haben, den Wert nur zu aktualisieren, wenn das Label-Objekt nicht verfügbar war. Ich habe dem Label einen Zeitstempel hinzugefügt, so dass Sie die Zeitaktualisierung bei jedem Ticken sehen können.
Danke, das funktioniert
Wenn ich auch Informationen über die Etikettenfarbe in die Klammern einfüge, wird die Etikettenfarbe auch richtig aktualisiert.
Wo weisen Sie den Objektnamen im obigen RSI-Beispiel zu? Ich habe den ganzen Code gelesen, aber nicht verstehen,
Ich möchte nur einen einfachen Text in das Indikator-Fenster setzen, ich kann nur nicht das gleiche Ergebnis wie das RSI-Beispiel oben bekommen
Mein Code :
Ergebnis :
ok, ich denke, ich habe es Arbeit von nur den Text anzeigen, als nächstes werde ich mit dem Indikator arbeiten. aber kann mir jemand sagen, warum ich nicht obj_label anstelle von obj_text verwenden kann, um es den Text anzeigen zu lassen?