Cari esperti, per favore aiutatemi. Non riesco a superare il problema del salvataggio automatico del modello. Non inserisce il nome del file nella finestra di salvataggio. Ecco il codice.
// Функция выгрузки файл шаблона с текущего графикаstring slash=StringSubstr("\a",0,1);
string path="experts\files";
if(IsTesting()) path="tester\files";
SaveTemplate(StringConcatenate(TerminalPath(),slash,path,slash,Symbol(),"-",TimeCurrent(),".tpl")); //загрузка шаблона с именем void SaveTemplate(string lpTemplateName)
{
int hParent, hDlg, hEdit,hButtonSave ;
hParent = GetAncestor(WindowHandle(Symbol(),Period()),2);
PostMessageA(hParent,WM_COMMAND,33220,0); //вызываем окно сохранения шаблонаSleep(100);
hDlg = GetLastActivePopup(hParent);//основное окно
hEdit = GetDlgItem(hDlg,0x3E9);//поле имени файла
SetWindowTextA(hEdit,lpTemplateName); //вводим имя шаблона// 0x45A
hButtonSave = GetDlgItem(hDlg,1); //определяем дескриптор кнопки "Сохранить"Print(lpTemplateName," ",hEdit," ",hDlg," ",hParent," ", hButtonSave);
PostMessageA(hDlg,WM_COMMAND,1,hButtonSave); //нажимаем на кнопку
}
vasili: Cari esperti, per favore aiutatemi. Non riesco a far fronte a un problema di salvataggio automatico del modello. Non inserisce un nome di file nella finestra di salvataggio. Ecco il codice.
Libreria con funzioni di controllo MT4 out-of-the-box.
//=========================================================================================== // 4.4. Funzioni per impostare il modello del grafico. //=========================================================================================== // 4.4.1 La funzione imposta il modello specificato sul grafico specificato dal suo nome nella lista dei modelli. voidServiceSetTemplateByName(int hwndChart, // descrittore di sistema della finestra del grafico, dove viene caricato il modello. string sNameTemplate); // Nome del template nella lista dei template. //=========================================================================================== // 4.4.2 La funzione imposta il modello specificato sul grafico specificato in base al suo numero nella lista dei modelli. Se ha successo, la funzione restituisce TRUE, altrimenti restituisce FALSE. bool ServiceSetTemplateByNumber(int hwndChart, // descrittore di sistema della finestra del grafico, dove viene caricato il modello. int nTemplate); // Numero del template nella lista dei template. I modelli sono ordinati nella lista per nome. Il numero di modelli è limitato a 64.
E come farlo programmaticamente, usando il codice. L'Expert Advisor esegue la sua funzione e poi si spegne?
Stessa libreria con funzioni di controllo pronte per MT4.
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // 7. FUNZIONI DI GESTIONE DEL PROGRAMMA MQL4. //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // 7.1. La funzione elimina un Expert Advisor dal grafico specificato. Se ha successo, la funzione restituisce TRUE, altrimenti FALSE. boolServiceDeleteExpert(int hwndChart); // descrittore di sistema della finestra del grafico, che viene cancellata da Expert Advisor. //====================================================================================== // 7.2. FUNCTION rimuove gli indicatori per nome dalla lista degli indicatori caricati. voidServiceDeleteIndicatorsByName(int hwndChart, // descrittore di sistema della finestra, dove l'indicatore è collegato. int nWindow, // Numero di sottofinestra per cancellare gli indicatori. Se -1, gli indicatori di tutte le sottofinestre vengono rimossi. string &asIndicatorName[], // array unidimensionale con i nomi degli indicatori da cancellare. int nNumeroNome); // Numero di nomi di indicatori nell'array. //====================================================================================== // 7.3. La funzione rimuove lo script dal grafico specificato. Se ha successo, la funzione restituisce TRUE, altrimenti restituisce FALSE. bool ServiceDeleteScript(int hwndChart); // descrittore di sistema della finestra del grafico, lo script da cancellare. //====================================================================================== // 7.4. La funzione controlla la finestra di dialogo di spegnimento dello script e restituisce il descrittore di sistema della finestra di dialogo di spegnimento dello script, se la finestra esiste, // altrimenti - NULL. Lo script funziona solo con le localizzazioni russa e inglese. intServiceDialogScript(int bInstruction); // Comando per la finestra di dialogo di spegnimento dello script: TRUE - per spegnere lo script, FALSE - per non spegnere lo script. //====================================================================================== // 7.5. La funzione ottiene i nomi degli indicatori dalla lista degli indicatori caricati. // Se ha successo, la funzione restituisce il numero di indicatori nelle sottofinestre specificate usando il parametro "nWindow", altrimenti restituisce zero. intServiceGetNamesIndicators(int hwndChart, // descrittore di sistema della finestra a cui è collegato l'indicatore. int nWindow, // Numero del sottografo. Se -1, leggiamo i nomi degli indicatori da tutte le sottofinestre. string &asIndicatorName[], // array di stringhe unidimensionale per i nomi degli indicatori. // L'array deve essere inizializzato con valori diversi in ogni cella! Questa è // una peculiarità dell'inizializzazione degli array di stringhe in MQL4. int nNumeroNome); // Array di dimensioni "asIndicatorName[]" per ricevere i nomi degli indicatori. //====================================================================================== // 7.6. La funzione chiama la finestra dell'elenco degli indicatori. bool ServiceListIndicators(int hwndChart); // descrittore di sistema della finestra del grafico, su cui viene chiamata la finestra della lista degli indicatori. //====================================================================================== // 7.7. La funzione carica un indicatore personalizzato sul grafico specificato dal suo nome. voidServiceLoadCustomIndicator(int hwndChart, // descrittore di sistema della finestra del grafico, dove viene caricato l'indicatore. string szNameIndicator, // Nome dell'indicatore caricato. int bOK); // Conferma dell'avvio dell'indicatore, se è presente la finestra di dialogo delle proprietà dell'indicatore. // TRUE - clic automatico sul pulsante "OK" permesso, FALSE - clic automatico sul pulsante "OK" disabilitato. //====================================================================================== // 7.8. La funzione carica l'Expert Advisor sul grafico specificato dal suo nome. voidServiceLoadExpert(int hwndChart, // descrittore di sistema della finestra del grafico, dove viene caricato l'esperto. string szNameExpert, // Nome dell'Expert Advisor da caricare. int bOK); // Conferma l'avvio di Expert Advisor, se la finestra di dialogo delle proprietà di Expert Advisor è disponibile. // TRUE - il pulsante "OK" è abilitato, FALSE - il pulsante "OK" è disabilitato. //====================================================================================== // 7.9. La funzione carica sul grafico specificato lo script con il suo nome. voidServiceLoadScript(int hwndChart, // descrittore di sistema della finestra del grafico, dove viene caricato lo script. string szNameScript, // Nome dello script caricato. int bOK); // Conferma del lancio dello script, se è presente il dialogo delle proprietà dello script. Lo script potrebbe non avere un dialogo delle proprietà! // Quando si usa la funzione per caricare lo script dallo script sul grafico corrente, il parametro non funziona a causa di // è impossibile che due script vengano eseguiti simultaneamente su un grafico. // TRUE - il clic automatico del pulsante "OK" è abilitato, FALSE - il clic automatico del pulsante "OK" è disabilitato. //====================================================================================== // 7.10. La funzione carica un indicatore standard sul grafico specificato dal suo nome. voidServiceLoadStdIndicator(int hwndChart, // descrittore di sistema della finestra del grafico, dove viene caricato l'indicatore. string szNameIndicator, // Nome dell'indicatore caricato. int bOK); // Conferma dell'avvio dell'indicatore, se è presente la finestra di dialogo delle proprietà dell'indicatore. // TRUE - clic automatico sul pulsante "OK" permesso, FALSE - clic automatico sul pulsante "OK" vietato. //====================================================================================== // 7.11. La funzione chiama il menu delle proprietà Expert. Se ha successo, la funzione restituisce TRUE, altrimenti - FALSE. boolServicePropertiesExpert(int hwndChart); // descrittore di sistema della finestra del grafico, su cui viene chiamato il menu delle proprietà dell'esperto. //======================================================================================= // 7.12. Funzione di abilitazione/disabilitazione degli Expert Advisors manipolando il pulsante Expert Advisors. voidServiceSetExperts();
Non sono d'accordo. Non c'è bisogno di andare oltre mql, non c'è bisogno di rimuovere l'EA dal grafico. È sufficiente bloccare programmaticamente il trade prevedendolo nel codice dell'EA.
Non sono d'accordo. Non c'è bisogno di andare oltre mql, non c'è bisogno di rimuovere l'EA dal grafico. È sufficiente bloccare programmaticamente il trading prevedendolo nel codice dell'EA.
Permettetemi di dissentire con voi (guardate fino alla fine):
Non sono d'accordo. Non c'è bisogno di andare oltre mql, non c'è bisogno di rimuovere l'EA dal grafico. È sufficiente bloccare programmaticamente il trading prevedendolo nel codice dell'EA.
Sì, proprio così! L'unica eccezione è per la gestione remota.
Sapete, per favore consigliatemi, c'è una sezione di codice nell'advisor, è necessario sapere come si è chiusa la candela precedente su due coppie all'apertura di una nuova candela, tutto funziona bene, ma se in quel momento ci sono tick su due coppie, l'advisor è sulla coppia principale e non ci sono problemi, ma se la seconda coppia con l'inizio di una nuova candela non ha tick, i valori da essa non vengono aggiornati e riceve dati da essa, non dalla candela precedente, ma dal giorno prima.
Non riesco a superare il problema del salvataggio automatico del modello.
Non inserisce il nome del file nella finestra di salvataggio.
Ecco il codice.
Cari esperti, per favore aiutatemi.
Non riesco a far fronte a un problema di salvataggio automatico del modello.
Non inserisce un nome di file nella finestra di salvataggio.
Ecco il codice.
Libreria con funzioni di controllo MT4 out-of-the-box.
//===========================================================================================
// 4.4. Funzioni per impostare il modello del grafico.
//===========================================================================================
// 4.4.1 La funzione imposta il modello specificato sul grafico specificato dal suo nome nella lista dei modelli.
void ServiceSetTemplateByName(int hwndChart, // descrittore di sistema della finestra del grafico, dove viene caricato il modello.
string sNameTemplate); // Nome del template nella lista dei template.
//===========================================================================================
// 4.4.2 La funzione imposta il modello specificato sul grafico specificato in base al suo numero nella lista dei modelli. Se ha successo, la funzione restituisce TRUE, altrimenti restituisce FALSE.
bool ServiceSetTemplateByNumber(int hwndChart, // descrittore di sistema della finestra del grafico, dove viene caricato il modello.
int nTemplate); // Numero del template nella lista dei template. I modelli sono ordinati nella lista per nome. Il numero di modelli è limitato a 64.
L'ho provato di recente. Funziona.
Fare clic destro sulla faccia sorridente (nell'angolo in alto a destra della finestra del terminale client) -> Consulenti -> Rimuovi
E come farlo programmaticamente, con l'aiuto del codice. L'Expert Advisor ha svolto la sua funzione ed è sceso?
Come si fa a farlo programmaticamente, con l'aiuto del codice? L'Expert Advisor ha svolto la sua funzione e poi è sceso?
E come farlo programmaticamente, usando il codice. L'Expert Advisor esegue la sua funzione e poi si spegne?
Stessa libreria con funzioni di controllo pronte per MT4.
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// 7. FUNZIONI DI GESTIONE DEL PROGRAMMA MQL4.
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// 7.1. La funzione elimina un Expert Advisor dal grafico specificato. Se ha successo, la funzione restituisce TRUE, altrimenti FALSE.
bool ServiceDeleteExpert(int hwndChart); // descrittore di sistema della finestra del grafico, che viene cancellata da Expert Advisor.
//======================================================================================
// 7.2. FUNCTION rimuove gli indicatori per nome dalla lista degli indicatori caricati.
void ServiceDeleteIndicatorsByName(int hwndChart, // descrittore di sistema della finestra, dove l'indicatore è collegato.
int nWindow, // Numero di sottofinestra per cancellare gli indicatori. Se -1, gli indicatori di tutte le sottofinestre vengono rimossi.
string &asIndicatorName[], // array unidimensionale con i nomi degli indicatori da cancellare.
int nNumeroNome); // Numero di nomi di indicatori nell'array.
//======================================================================================
// 7.3. La funzione rimuove lo script dal grafico specificato. Se ha successo, la funzione restituisce TRUE, altrimenti restituisce FALSE.
bool ServiceDeleteScript(int hwndChart); // descrittore di sistema della finestra del grafico, lo script da cancellare.
//======================================================================================
// 7.4. La funzione controlla la finestra di dialogo di spegnimento dello script e restituisce il descrittore di sistema della finestra di dialogo di spegnimento dello script, se la finestra esiste,
// altrimenti - NULL. Lo script funziona solo con le localizzazioni russa e inglese.
int ServiceDialogScript(int bInstruction); // Comando per la finestra di dialogo di spegnimento dello script: TRUE - per spegnere lo script, FALSE - per non spegnere lo script.
//======================================================================================
// 7.5. La funzione ottiene i nomi degli indicatori dalla lista degli indicatori caricati.
// Se ha successo, la funzione restituisce il numero di indicatori nelle sottofinestre specificate usando il parametro "nWindow", altrimenti restituisce zero.
int ServiceGetNamesIndicators(int hwndChart, // descrittore di sistema della finestra a cui è collegato l'indicatore.
int nWindow, // Numero del sottografo. Se -1, leggiamo i nomi degli indicatori da tutte le sottofinestre.
string &asIndicatorName[], // array di stringhe unidimensionale per i nomi degli indicatori.
// L'array deve essere inizializzato con valori diversi in ogni cella!
Questa è // una peculiarità dell'inizializzazione degli array di stringhe in MQL4.
int nNumeroNome); // Array di dimensioni "asIndicatorName[]" per ricevere i nomi degli indicatori.
//======================================================================================
// 7.6. La funzione chiama la finestra dell'elenco degli indicatori.
bool ServiceListIndicators(int hwndChart); // descrittore di sistema della finestra del grafico, su cui viene chiamata la finestra della lista degli indicatori.
//======================================================================================
// 7.7. La funzione carica un indicatore personalizzato sul grafico specificato dal suo nome.
void ServiceLoadCustomIndicator(int hwndChart, // descrittore di sistema della finestra del grafico, dove viene caricato l'indicatore.
string szNameIndicator, // Nome dell'indicatore caricato.
int bOK); // Conferma dell'avvio dell'indicatore, se è presente la finestra di dialogo delle proprietà dell'indicatore.
// TRUE - clic automatico sul pulsante "OK" permesso, FALSE - clic automatico sul pulsante "OK" disabilitato.
//======================================================================================
// 7.8. La funzione carica l'Expert Advisor sul grafico specificato dal suo nome.
void ServiceLoadExpert(int hwndChart, // descrittore di sistema della finestra del grafico, dove viene caricato l'esperto.
string szNameExpert, // Nome dell'Expert Advisor da caricare.
int bOK); // Conferma l'avvio di Expert Advisor, se la finestra di dialogo delle proprietà di Expert Advisor è disponibile.
// TRUE - il pulsante "OK" è abilitato, FALSE - il pulsante "OK" è disabilitato.
//======================================================================================
// 7.9. La funzione carica sul grafico specificato lo script con il suo nome.
void ServiceLoadScript(int hwndChart, // descrittore di sistema della finestra del grafico, dove viene caricato lo script.
string szNameScript, // Nome dello script caricato.
int bOK); // Conferma del lancio dello script, se è presente il dialogo delle proprietà dello script. Lo script potrebbe non avere un dialogo delle proprietà!
// Quando si usa la funzione per caricare lo script dallo script sul grafico corrente, il parametro non funziona a causa di
// è impossibile che due script vengano eseguiti simultaneamente su un grafico.
// TRUE - il clic automatico del pulsante "OK" è abilitato, FALSE - il clic automatico del pulsante "OK" è disabilitato.
//======================================================================================
// 7.10. La funzione carica un indicatore standard sul grafico specificato dal suo nome.
void ServiceLoadStdIndicator(int hwndChart, // descrittore di sistema della finestra del grafico, dove viene caricato l'indicatore.
string szNameIndicator, // Nome dell'indicatore caricato.
int bOK); // Conferma dell'avvio dell'indicatore, se è presente la finestra di dialogo delle proprietà dell'indicatore.
// TRUE - clic automatico sul pulsante "OK" permesso, FALSE - clic automatico sul pulsante "OK" vietato.
//======================================================================================
// 7.11. La funzione chiama il menu delle proprietà Expert. Se ha successo, la funzione restituisce TRUE, altrimenti - FALSE.
bool ServicePropertiesExpert(int hwndChart); // descrittore di sistema della finestra del grafico, su cui viene chiamato il menu delle proprietà dell'esperto.
//=======================================================================================
// 7.12. Funzione di abilitazione/disabilitazione degli Expert Advisors manipolando il pulsante Expert Advisors.
void ServiceSetExperts();
Come si fa a farlo programmaticamente, con l'aiuto del codice? L'Expert Advisor ha eseguito la sua funzione e poi si è bloccato?
h ttps://www.mql5.com/ru/forum/110207
Non sono d'accordo. Non c'è bisogno di andare oltre mql, non c'è bisogno di rimuovere l'EA dal grafico. È sufficiente bloccare programmaticamente il trade prevedendolo nel codice dell'EA.
Non sono d'accordo. Non c'è bisogno di andare oltre mql, non c'è bisogno di rimuovere l'EA dal grafico. È sufficiente bloccare programmaticamente il trading prevedendolo nel codice dell'EA.
Permettetemi di dissentire con voi (guardate fino alla fine):
Non sono d'accordo. Non c'è bisogno di andare oltre mql, non c'è bisogno di rimuovere l'EA dal grafico. È sufficiente bloccare programmaticamente il trading prevedendolo nel codice dell'EA.
Sapete, per favore consigliatemi, c'è una sezione di codice nell'advisor, è necessario sapere come si è chiusa la candela precedente su due coppie all'apertura di una nuova candela, tutto funziona bene, ma se in quel momento ci sono tick su due coppie, l'advisor è sulla coppia principale e non ci sono problemi, ma se la seconda coppia con l'inizio di una nuova candela non ha tick, i valori da essa non vengono aggiornati e riceve dati da essa, non dalla candela precedente, ma dal giorno prima.
{//1 if (iClose(SignalSimbol,PERIOD_H1,1) > iOpen(SignalSimbol,PERIOD_H1,1)) svcolor1 = 1; // бычья свеча if (iClose(SignalSimbol,PERIOD_H1,1) < iOpen(SignalSimbol,PERIOD_H1,1)) svcolor1 = 2; // медвежья свеча if (iClose(SignalSimbol,PERIOD_H1,1) == iOpen(SignalSimbol,PERIOD_H1,1)) svcolor1 = 3; // додж if (iClose(TradeSimbol,PERIOD_H1,1) > iOpen(TradeSimbol,PERIOD_H1,1)) svcolor2 = 1; // бычья свеча if (iClose(TradeSimbol,PERIOD_H1,1) < iOpen(TradeSimbol,PERIOD_H1,1)) svcolor2 = 2; // медвежья свеча if (iClose(TradeSimbol,PERIOD_H1,1) == iOpen(TradeSimbol,PERIOD_H1,1)) svcolor2 = 3; // додж spread = MarketInfo(TradeSimbol,MODE_SPREAD); TimeBar_t = (TimeCurrent()-Time[0])/60; // время в минутах с открытия свечи RefreshRates (); }//1Libreria con funzioni di controllo MT4 out-of-the-box.
L'ho provato di recente. Funziona.