[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 264
Una sottofinestra di uscita separata viene creata utilizzando un indicatore personalizzato con impostazioni appropriate. L'unico scopo di questo indicatore è quello di creare una sottofinestra, quindi, nessun calcolo viene eseguito nell'indicatore, non c'è nemmeno lo scopo di creare linee dell'indicatore. Il codice dell'indicatore Inform.mq4 può apparire come segue:
//-------------------------------------------------------------------- // Inform.mq4 // Предназначен для использования в качестве примера в учебнике MQL4. //-------------------------------------------------------------------- #propertyindicator_separate_window// Отдельное окно индикатора //-------------------------------------------------------------------- intstart()// Специальная функция start() { } //--------------------------------------------------------------------
In generale, il programmatore può aggiungere il codice necessario all'indicatore, dotandolo così di proprietà aggiuntive. Per esempio, in una parte della sottofinestra dell'indicatore, potete visualizzare le linee dell'indicatore. Questo esempio mostra un semplice codice di un indicatore, la cui finestra mostrerà gli oggetti grafici.
""""
Ecco il codice del file Inform. Non capisco come ottenere segnali da esso sul grafico. Nel programma funziona, sembra dare comandi sul grafico, ma niente... Devo allegare un indicatore Inform e scriverci qualcosa? O in un altro modo?
Prima, un po' di teoria. Un programma MQL è... programma. Cioè, non può eseguire operazioni che non gli viene detto di eseguire. Nella sezione di aiuto "esecuzione del programma" puoi leggere che quando arriva un nuovo tick nell'Expert Advisor/indicatore, viene eseguita la funzione start(). Se la funzione Inform() non è chiamata dalla funzione start(), non sarà eseguita. Ora continuate a leggere l'articolo dalla sezione che avete menzionato: la funzione Inform() può essere chiamata da qualsiasi punto del programma in cui è necessario visualizzare il prossimo messaggio. Cioè, nella funzione start(), dove dobbiamo stampare il messaggio, scriviamo
Grazie per la spiegazione, certo, ma è chiamato dal programma spesso, non è nel corpo principale, ma in altri iclude è ovunque e viene chiamato inviando messaggi, ma non sono in uscita(
come esempio una linea da Close_All.mqh
if (Tip==1) Price_Cls=Ask; // Per ordini di vendita Inform(12,Ticket); // Messaggio sul tentativo di chiusura.
int start() // Спец. функция start
{
Terminal(); // Функция учёта ордеров
Events(); // Информация о событиях
Trade(Criterion()); // Торговая функция
Inform(0); // Для перекрашивания объектов
return; // Выход из start()
}
È essenzialmente lo stesso del tutorial. Tutte le chiamate provengono da file include .
Ecco un esempio
//--------------------------------------------------------------------// Events.mqh// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --// Функция слежения за событиями.// Глобальные переменные:// Level_new Новое значение минимальной дистанции// Level_old Предыдущее значение минимальной дистанции// Mas_Ord_New[31][9] Массив ордеров последний известный// Mas_Ord_Old[31][9] Массив ордеров предыдущий (старый)//--------------------------------------------------------------- 2 --int Events()// Пользовательская функция{bool Conc_Nom_Ord;// Совпадение ордеров в ..//.. старом и новом массивах//--------------------------------------------------------------- 3 --
Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL);// Последн.известноеif( Level_old!= Level_new)// Новое не равно старому..{// значит изменились условия
Level_old= Level_new;// Новое "старое значение"
Inform(10, Level_new);// Сообщение: новая дистанц.}//--------------------------------------------------------------- 4 --// Поиск пропавших, поменявших тип, частично закрытых и переоткрытыхfor(int old=1; old<= Mas_Ord_Old[0][0]; old++)// По массиву старых{// Исходим из того, что..
Conc_Nom_Ord=false;// ..ордера не совпадают//--------------------------------------------------------- 5 --for(intnew=1;new<= Mas_Ord_New[0][0];new++)//Цикл по массиву ..{//..новых ордеров//------------------------------------------------------ 6 --if( Mas_Ord_Old[ old][4]== Mas_Ord_New[new][4])// Совпал номер {// Тип ордера стал ..if( Mas_Ord_New[new][6]!= Mas_Ord_Old[ old][6])//.. другим
Inform(7, Mas_Ord_New[new][4]);// Сообщение: преобраз.:)
Conc_Nom_Ord=true;// Ордер найден, ..break;// ..значит выходим из ..}// .. внутреннего цикла//------------------------------------------------------ 7 --// Не совпал номер ордераif( Mas_Ord_Old[ old][7]>0&&// MagicNumber есть, совпал
Mas_Ord_Old[ old][7]== Mas_Ord_New[new][7])//.. со старым{//значит он переоткрыт или частично закрыт// Если лоты совпадают,.. if( Mas_Ord_Old[ old][5]== Mas_Ord_New[new][5])
Inform(8, Mas_Ord_Old[ old][4]);// ..то переоткрытиеelse// А иначе это было..
Inform(9, Mas_Ord_Old[ old][4]);// ..частичное закрытие
Conc_Nom_Ord=true;// Ордер найден, ..break;// ..значит выходим из ..}// .. внутреннего цикла}//--------------------------------------------------------- 8 --if( Conc_Nom_Ord==false)// Если мы сюда дошли,..{// ..то ордера нет:(if( Mas_Ord_Old[ old][6]==0)
Inform(1, Mas_Ord_Old[ old][4]);// Ордер Buy закрытif( Mas_Ord_Old[ old][6]==1)
Inform(2, Mas_Ord_Old[ old][4]);// Ордер Sell закрытif( Mas_Ord_Old[ old][6]>1)
Inform(3, Mas_Ord_Old[ old][4]);// Отложен. ордер удалён}}//--------------------------------------------------------------- 9 --// Поиск новых ордеров for(new=1;new<= Mas_Ord_New[0][0];new++)// По массиву новых орд.{if( Mas_Ord_New[new][8]>0)//Это не новый,а переоткрcontinue;//..или частично закрытый
Conc_Nom_Ord=false;// Пока совпадения нетfor( old=1; old<= Mas_Ord_Old[0][0]; old++)// Поищем этот ордерок {// ..в массиве старыхif( Mas_Ord_New[new][4]== Mas_Ord_Old[ old][4])//Совпал номер..{//.. ордера
Conc_Nom_Ord=true;// Ордер найден, ..break;// ..значит выходим из ..}// .. внутреннего цикла}if( Conc_Nom_Ord==false)// Если совпадения нет,..{// ..то ордер новый :)if( Mas_Ord_New[new][6]==0)
Inform(4, Mas_Ord_New[new][4]);// Ордер Buy открытif( Mas_Ord_New[new][6]==1)
Inform(5, Mas_Ord_New[new][4]);// Ордер Sell открытif( Mas_Ord_New[new][6]>1)
Inform(6, Mas_Ord_New[new][4]);// Установлен отлож.ордер}}//-------------------------------------------------------------- 10 --return;}//-------------------------------------------------------------- 11 --
Ho capito che avete anche la funzione Criterion() dell'esempio? Poi aspettate che i criteri di apertura di una posizione scattino secondo la strategia descritta nel tutorial - e allora vedrete come funziona la funzione Inform(). Oppure aprilo manualmente usando il pulsante corrispondente sul terminale - dovrebbe funzionare anche questo...
No, ho messo il mio Criterion) aveva senso eseguire il tutto, ma non ha funzionato nemmeno con quello iniziale (ora è difficile riscrivere tutto, ma Criterion invia ordini di apertura, le operazioni si aprono, gli eventi accadono, ma ci sono 0 messaggi in uscita...
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Sembra che una settimana per noi neofiti sia il termine ultimo dopo il quale si passa a voi pros))))
Concluso dagli ultimi post....
andiamo al fondo di questo:) indicare il contesto.
Contesto? semplice...
Articolo Creare un programma ordinario(https://book.mql4.com/ru/build/index) dal libro di testo.
Lì, un file <Inform.mqh> è incluso nel programma.
""""""
Una sottofinestra di uscita separata viene creata utilizzando un indicatore personalizzato con impostazioni appropriate. L'unico scopo di questo indicatore è quello di creare una sottofinestra, quindi, nessun calcolo viene eseguito nell'indicatore, non c'è nemmeno lo scopo di creare linee dell'indicatore. Il codice dell'indicatore Inform.mq4 può apparire come segue:
In generale, il programmatore può aggiungere il codice necessario all'indicatore, dotandolo così di proprietà aggiuntive. Per esempio, in una parte della sottofinestra dell'indicatore, potete visualizzare le linee dell'indicatore. Questo esempio mostra un semplice codice di un indicatore, la cui finestra mostrerà gli oggetti grafici.
""""
Ecco il codice del file Inform. Non capisco come ottenere segnali da esso sul grafico. Nel programma funziona, sembra dare comandi sul grafico, ma niente... Devo allegare un indicatore Inform e scriverci qualcosa? O in un altro modo?
Per favore ditemi come fare ((...)
Per favore, diteci cosa fare ((.
Prima, un po' di teoria. Un programma MQL è... programma. Cioè, non può eseguire operazioni che non gli viene detto di eseguire. Nella sezione di aiuto "esecuzione del programma" puoi leggere che quando arriva un nuovo tick nell'Expert Advisor/indicatore, viene eseguita la funzione start(). Se la funzione Inform() non è chiamata dalla funzione start(), non sarà eseguita. Ora continuate a leggere l'articolo dalla sezione che avete menzionato: la funzione Inform() può essere chiamata da qualsiasi punto del programma in cui è necessario visualizzare il prossimo messaggio. Cioè, nella funzione start(), dove dobbiamo stampare il messaggio, scriviamo
Grazie per la spiegazione, certo, ma è chiamato dal programma spesso, non è nel corpo principale, ma in altri iclude è ovunque e viene chiamato inviando messaggi, ma non sono in uscita(
come esempio una linea da Close_All.mqh
int start() // Спец. функция start { Terminal(); // Функция учёта ордеров Events(); // Информация о событиях Trade(Criterion()); // Торговая функция Inform(0); // Для перекрашивания объектов return; // Выход из start() }È essenzialmente lo stesso del tutorial. Tutte le chiamate provengono da file include .
Ecco un esempio
È essenzialmente lo stesso del tutorial. Tutte le chiamate provengono da file include .
Ecco un esempio
L'Inform è chiamato un casino di volte, ma è difficile vedere come visualizza.... dove vanno anche i messaggi(