Non ho bisogno di una sottofinestra, l'indicatore dovrebbe essere posizionato sul grafico dei prezzi come un grafico standard
Lo considero un esempio e cerco di capire.
Voglio che l'indicatore montato sul grafico abbia il suo numero, in modo che il numero necessario di copie possa essere creato sul grafico usando il pulsante "Add" ..... Voglio cancellarne uno selezionato dal pulsante "croce" ........ (non voglio ancora descriverli))
Quando un indicatore dovrebbe essere aggiunto alla finestra principale del grafico
sottofinestra
[0 significa la finestra principale del grafico. Per aggiungere un indicatore a una nuova finestra, il parametro deve essere uno in più dell'indice dell'ultima finestra esistente, cioè uguale aCHART_WINDOWS_TOTAL. Se il valore del parametro superaCHART_WINDOWS_TOTAL, una nuova finestra non sarà creata, l'indicatore non sarà aggiunto.
Non potete aggiungere l'indicatore a OnInit() - poiché l'esperto non è ancora stato formato in questa fase. Ma la funzione - OnTick() è un segno di funzionamento completo dell'Expert Advisor.
//+------------------------------------------------------------------+//| 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)
{
//---
}
//+------------------------------------------------------------------+
E riscrivete la funzione AddIndicator() in modo che restituisca false al tentativo fallito di aggiungere un indicatore.
Non ho bisogno di una sottofinestra, l'indicatore dovrebbe essere posizionato sul grafico dei prezzi come un grafico standard
Lo considero un esempio e cerco di capire.
Voglio che l'indicatore montato sul grafico abbia il suo numero, in modo che il numero necessario di copie possa essere creato sul grafico utilizzando il pulsante "Add" ..... Voglio cancellarne uno selezionato con il pulsante "croce" ........ (non voglio ancora descriverli))
L'indicatore può avere un nome, se ti piacciono i numeri, che sia un numero. Tuttavia, il numero non sarà un numero ma un testo. Volete un pannello di controllo personalizzato che vi permetta di aggiungere qualsiasi numero di indicatore da uno o più?
pako: Ci sono quattro cinque settimane in un mese, oggi è la quarta settimana del mese
Capisco. Quindi vuole contabilizzare le settimane di questo tipo il 29 del mese precedente (lunedì, per esempio) e fino al 31 del mese corrente (anche lunedì, per esempio). È più di un mese. Non è logico contare tali settimane. Se non lo è, allora la settimana non sarà una settimana intera. No, nessun punto....
Ciao Vladimir.
Devo aver formulato male la mia domanda.
Non ho bisogno di una sottofinestra, l'indicatore dovrebbe essere posizionato sul grafico dei prezzi come un grafico standard
Lo considero un esempio e cerco di capire.
Voglio che l'indicatore montato sul grafico abbia il suo numero, in modo che il numero necessario di copie possa essere creato sul grafico usando il pulsante "Add" ..... Voglio cancellarne uno selezionato dal pulsante "croce" ........ (non voglio ancora descriverli))
Quando un indicatore dovrebbe essere aggiunto alla finestra principale del grafico
sottofinestra
[0 significa la finestra principale del grafico. Per aggiungere un indicatore a una nuova finestra, il parametro deve essere uno in più dell'indice dell'ultima finestra esistente, cioè uguale aCHART_WINDOWS_TOTAL. Se il valore del parametro superaCHART_WINDOWS_TOTAL, una nuova finestra non sarà creata, l'indicatore non sarà aggiunto.
Non potete aggiungere l'indicatore a OnInit() - poiché l'esperto non è ancora stato formato in questa fase. Ma la funzione - OnTick() è un segno di funzionamento completo dell'Expert Advisor.
E riscrivete la funzione AddIndicator() in modo che restituisca false al tentativo fallito di aggiungere un indicatore.Ciao Vladimir.
Devo aver formulato male la mia domanda.
Non ho bisogno di una sottofinestra, l'indicatore dovrebbe essere posizionato sul grafico dei prezzi come un grafico standard
Lo considero un esempio e cerco di capire.
Voglio che l'indicatore montato sul grafico abbia il suo numero, in modo che il numero necessario di copie possa essere creato sul grafico utilizzando il pulsante "Add" ..... Voglio cancellarne uno selezionato con il pulsante "croce" ........ (non voglio ancora descriverli))
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;
}
Potete dirmi come filtrare per numero di giorno e separatamente per numero di settimana in un mese? All'interno del giorno ho fatto questo:
Sta chiedendo della settimana del mese
Ho fatto tutte e tre le opzioni lì. Può dirmi quale vuole usare come base?
Questo?
Ho fatto tutte e tre le opzioni lì. Si prega di specificare.
Ci sono cinque o sei settimane nel mese, oggi è la quarta settimana del mese
str.day giorno del mese
str.day_of_week day
Ci sono quattro cinque settimane in un mese, oggi è la quarta settimana del mese
Ho fatto tutte e tre le opzioni lì. Quale vuole usare come base, per favore?
Questo?