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.
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.
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.