Ich brauche kein Unterfenster, der Indikator sollte im Preisdiagramm wie ein Standarddiagramm platziert werden.
Ich betrachte es als ein Beispiel und versuche zu verstehen.
Ich möchte, dass der Indikator im Diagramm eine eigene Nummer hat, so dass die erforderliche Anzahl von Kopien im Diagramm über die Schaltfläche "Hinzufügen" erstellt werden kann ..... Ich möchte eine mit der Schaltfläche "Kreuz" ........ (ich möchte sie noch nicht beschreiben) ausgewählte Datei löschen.)
Wann ein Indikator zum Hauptdiagrammfenster hinzugefügt werden soll
Unterfenster
[in] Nummer des Diagrammunterfensters.0 bedeutet Hauptdiagrammfenster. Um einen Indikator zu einem neuen Fenster hinzuzufügen, muss der Parameter um eins größer sein als der Index des letzten vorhandenen Fensters, d.h. gleichCHART_WINDOWS_TOTAL. Wenn der ParameterwertCHART_WINDOWS_TOTAL übersteigt, wird kein neues Fenster erstellt, der Indikator wird nicht hinzugefügt.
Sie können den Indikator nicht zu OnInit() hinzufügen, da der Experte zu diesem Zeitpunkt noch nicht gebildet wurde. Aber die Funktion OnTick() ist ein Zeichen für das vollständige Funktionieren des Expert Advisors.
//+------------------------------------------------------------------+//| 0000.mq5 |//| Copyright 2016, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2016, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"inputint MA_Period=21;
inputint MA_Shift=0;
inputENUM_MA_METHOD MA_Method=MODE_SMA;
//--- variablesint MA_handle=INVALID_HANDLE;
bool first_start=false;
//+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ intOnInit()
{
Print(__FUNCTION__,", first_start = ",first_start);
MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",MA_Period,MA_Shift,MA_Method,PRICE_CLOSE);
if(MA_handle==INVALID_HANDLE)
return(INIT_FAILED);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| "Tick" event handler function |//+------------------------------------------------------------------+voidOnTick()
{
//---if(!first_start)
{
if(AddIndicator()) //попробуем добавить индикатор на график
first_start=true;
}
}
//+------------------------------------------------------------------+ //| Функция проверки и добавления индикатора на график | //+------------------------------------------------------------------+ bool AddIndicator()
{
//--- сбросим код ошибки ResetLastError();
//--- накладываем индикатор на график int subwindow=0;
PrintFormat("Добавляем индикатор на окно %d графика",subwindow);
if(!ChartIndicatorAdd(0,subwindow,MA_handle))
{
PrintFormat("Не удалось добавить индикатор на окно %d графика. Код ошибки %d",
subwindow,GetLastError());
}
return(true);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---
}
//+------------------------------------------------------------------+
Und schreiben Sie die Funktion AddIndicator() so um, dass sie bei einem fehlgeschlagenen Versuch, einen Indikator hinzuzufügen, false zurückgibt.
Ich brauche kein Unterfenster, der Indikator sollte im Preisdiagramm wie ein Standarddiagramm platziert werden.
Ich betrachte es als ein Beispiel und versuche zu verstehen.
Ich möchte, dass der Indikator im Diagramm eine eigene Nummer hat, so dass die erforderliche Anzahl von Kopien im Diagramm über die Schaltfläche "Hinzufügen" erstellt werden kann ..... Ich möchte eine, die mit der Schaltfläche "Kreuz" ausgewählt wurde, löschen ........ (es gibt viele Fantasien und ich möchte sie noch nicht beschreiben))
Ein Indikator kann einen Namen haben, wenn Sie Zahlen mögen, dann lassen Sie es eine Zahl sein. Es handelt sich jedoch nicht um eine Nummer, sondern um einen Text. Möchten Sie ein benutzerdefiniertes Bedienfeld, das es Ihnen ermöglicht, eine beliebige Indikatorennummer aus einer oder mehreren hinzuzufügen?
Können Sie mir sagen, wie ich in einem Monat nach der Tagesnummer und separat nach der Wochennummer filtern kann? Innerhalb des Tages habe ich dies getan:
-Aleks-: Können Sie mir sagen, wie ich in einem Monat nach der Tagesnummer und separat nach der Wochennummer filtern kann? Innerhalb des Tages habe ich dies getan:
int НомерДНЯвМесяце=TimeDay(iTime(_Symbol,0,0));
int НомерДняНедели=TimeDayOfWeek(iTime(_Symbol,0,0));
int НомерНеделиВмесяце=NormalizeDouble(НомерДНЯвМесяце/7,0);
pako: Es gibt vier fünf Wochen im Monat, heute ist die vierte Woche des Monats
Verstehe, er möchte also solche Wochen am 29. des Vormonats (z. B. Montag) und bis zum 31. des laufenden Monats (ebenfalls Montag) abrechnen. Es ist mehr als ein Monat. Es ist unlogisch, solche Wochen zu zählen. Wenn das nicht der Fall ist, dann ist die Woche keine ganze Woche. Nein, kein Punkt....
Hallo Vladimir.
Ich habe meine Frage wohl falsch formuliert.
Ich brauche kein Unterfenster, der Indikator sollte im Preisdiagramm wie ein Standarddiagramm platziert werden.
Ich betrachte es als ein Beispiel und versuche zu verstehen.
Ich möchte, dass der Indikator im Diagramm eine eigene Nummer hat, so dass die erforderliche Anzahl von Kopien im Diagramm über die Schaltfläche "Hinzufügen" erstellt werden kann ..... Ich möchte eine mit der Schaltfläche "Kreuz" ........ (ich möchte sie noch nicht beschreiben) ausgewählte Datei löschen.)
Wann ein Indikator zum Hauptdiagrammfenster hinzugefügt werden soll
Unterfenster
[in] Nummer des Diagrammunterfensters.0 bedeutet Hauptdiagrammfenster. Um einen Indikator zu einem neuen Fenster hinzuzufügen, muss der Parameter um eins größer sein als der Index des letzten vorhandenen Fensters, d.h. gleichCHART_WINDOWS_TOTAL. Wenn der ParameterwertCHART_WINDOWS_TOTAL übersteigt, wird kein neues Fenster erstellt, der Indikator wird nicht hinzugefügt.
Sie können den Indikator nicht zu OnInit() hinzufügen, da der Experte zu diesem Zeitpunkt noch nicht gebildet wurde. Aber die Funktion OnTick() ist ein Zeichen für das vollständige Funktionieren des Expert Advisors.
Und schreiben Sie die Funktion AddIndicator() so um, dass sie bei einem fehlgeschlagenen Versuch, einen Indikator hinzuzufügen, false zurückgibt.Hallo Vladimir.
Ich habe meine Frage wohl falsch formuliert.
Ich brauche kein Unterfenster, der Indikator sollte im Preisdiagramm wie ein Standarddiagramm platziert werden.
Ich betrachte es als ein Beispiel und versuche zu verstehen.
Ich möchte, dass der Indikator im Diagramm eine eigene Nummer hat, so dass die erforderliche Anzahl von Kopien im Diagramm über die Schaltfläche "Hinzufügen" erstellt werden kann ..... Ich möchte eine, die mit der Schaltfläche "Kreuz" ausgewählt wurde, löschen ........ (es gibt viele Fantasien und ich möchte sie noch nicht beschreiben))
bool TimeStart=false;
int hour=12;
//--Фильтр по ремени открытия бара внутри дня
if (TimeStart==true)
{
datetime Open_timePos=iTime(_Symbol,0,0);
MqlDateTime str1;
TimeToStruct(Open_timePos,str1);
str1.hour=hour;
str1.min=0;
str1.sec=0;
datetime start_time=StructToTime(str1);
if (start_time>iTime(_Symbol,0,0))
{
BuyPrIMA=false;
SellPrIMA=false;
}
Können Sie mir sagen, wie ich in einem Monat nach der Tagesnummer und separat nach der Wochennummer filtern kann? Innerhalb des Tages habe ich dies getan:
Er fragt nach der Woche des Monats
Ich habe dort alle drei Optionen gemacht. Können Sie mir sagen, welche er als Basis verwenden möchte?
Das hier?
Ich habe dort alle drei Optionen gewählt. Bitte angeben.
Es gibt fünf bis sechs Wochen im Monat, heute ist die vierte Woche des Monats
str.day Tag des Monats
str.tag_der_Woche Tag
Es gibt vier fünf Wochen im Monat, heute ist die vierte Woche des Monats
Ich habe dort alle drei Optionen gemacht. Welche will er als Basis verwenden, bitte?
Das hier?