Ho un EA che fa certi calcoli. Utilizza diverse operazioni matematiche, array, loop. Salva il risultato in un file. Deve ricominciare tutto dall'inizio dopo aver eseguito tutte le azioni. Ha fatto tutti i calcoli una volta e poi si blocca per la seconda volta senza fare alcuna azione. Potete consigliarmi se è necessario azzerare le variabili, cancellare gli array o qualcos'altro prima di iniziare un nuovo calcolo?
Buon pomeriggio! Ho bisogno di aiuto per un umanitario (io) che sta cercando di fare un indicatore con la più pallida conoscenza di come farlo))) ma avere una comprensione di ciò che dovrebbe apparire)) Allora: Come programmare una stampella/indicatore/script (come un indicatore con schede "about, general, input parameters, colours, display") per MT4 in modo che prenda dati da file .csv, come il formato delfile sorgente:
EUR;TF;1.192;1.1733
EUR;TN;1.2037;1.1663
EUR;AB1;1.1906499615;1.1797479615
CHF;TF;1.0362;1.0183
CHF;TN;1.0479;1.0121
CHF;AB1;1.03484132734247;1.02549513556164
Cioèl'indicatore ha preso i dati registrati da un file e li ha messicome un segmento di linea (TF, TA) o una banda colorata(EA) con i parametri dell'estensione uguale a "un giorno". (dal bordo al bordo dei separatori verticali dei giorni su МТ4), per le linee selezione del colore della linea, tipo di linea, selezione del colore del testo e dimensione del commento e sostituzione della linea di commento come "TF - 1,192" la seconda linea "TF - 1,1733" che sono prese dalle linee corrispondenti del file. L'intervallo è puramente orizzontale e dalla linea EUR;TF;1.192;1,1733 prende la prima cifra per uno slot e la seconda cifra per il secondo come inizio dello slot 1.192 e fine dello slot 1.192. Ci sono anche intervalli, per esempio EA, il principio è lo stesso dall'inizio alla fine della giornata ma il prezzo è diverso e la linea inizia e finisce con CHF;AB1;1.03484132734247;1.02549513556164 inizio è1.03484132734247 fine dell'intervallo1.02549513556164. Funziona quando si accende MT4 (come un normale indicatore sul gafik), ogni giorno sul grafico e aggiunge tutti i dati esattamente per il giorno corrente una volta, tutte le linee applicate in precedenza non viene rimosso dal grafico e non si duplica. Con tutto ciò seleziona e visualizza tutti i segmenti e gli intervalli del giorno, solo dove si trova ora la finestra attiva e su altre finestre attive (cioè, dove è in esecuzione) (cioè, ha aperto una coppia e l'indicatore ha disegnato tutti i segmenti e gli intervalli del giorno corrente e si è fermato, e così via per le coppie).
Per esempio, come dovrebbe essere la scheda dell'indicatoreParametri di ingresso:
Переменная________Значение
Funtik________//--Общие настройки--//
Disegna TF________true
Disegna TN _______true
Disegnare AB1______vero
Disegnare AB2______false
Colore della didascalia del testo _______Black
Шрифт подписей__________________Arial
Dimensione del carattere per le didascalie del testo ________9
Colore della linea TF ______________
Tipo di linea TF _______________
TN Linea colore ______________
Tipo di linea TN _______________
Colore della banda AB1__________
Colore della banda AB2__________
Frequenza dei file in secondi ______2
Nome del file ___________5.csv
provato a scarabocchiare me stesso, ma non ottenere una cosa maledetta anche se sembrava facile (ma io sono un umanitario, cosa si può fare....) Aiuto per favore annegamento !!!!!!!!
extern Period_MA = 365; //Periodo MA 1 extern double Delta = 0.0010; //La distanza alla quale l'ordine può essere aperto
string Symb; //nome dello strumento commerciale //int Total; //numero di ordini
//+------------------------------------------------------------------+ //| funzione di inizializzazione dell'esperto| //+------------------------------------------------------------------+ int init() { //----
//---- ritorno(0); } //+------------------------------------------------------------------+ //| funzione di deinizializzazione esperta| //+------------------------------------------------------------------+ int deinit() { //---- ObjectDelete("Obj_Label"); ObjectDelete("Obj_Label2"); //---- ritorno(0); } //+------------------------------------------------------------------+ //| funzione di inizio esperto| //+------------------------------------------------------------------+ int start() {
doppio prise = Bid;// prezzo corrente double CurrMAValue = iMA(Symb, Period(),Period_MA, 0,Mode_EMA, PRICE_CLOSE, 0); //il valore della media mobile doppio Price2MA = prezzo - CurrMAValue;//distanza tra MA e prezzo datetime NextClose = Time(0) + Period()*60*2;//ora di chiudere int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1; //tempo di chiusura in minuti
if ((MathAbs(Price2MA) < Delta) && // se la distanza da МА è inferiore a delta (Prezzo > CurrMAValue) && // e il prezzo è superiore alla MA (Open(0) > CurrMAValue+Delta) // e la candela attuale ha aperto più in alto di MA+Delta ( Allarme ("Il prezzo si avvicina alla MA dall'alto;) )
se ((MathAbs(Price2MA) < Delta) && // se la distanza dalla MA è inferiore al delta (prezzo < CurrMAValue) && // e il prezzo è sotto la MA (Open(0) < CurrMAValue-Delta)) // e la candela attuale ha aperto sotto il delta della MA (
Allarme ("Il prezzo si è avvicinato sotto la MA;) )
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Куда исчезли "Сообщения"? У меня в профиле исчез раздел...
Si prega di consigliare come risolvere l'errore di quantità di lotti non validi per la funzione FreeMarginCheck in EA, quando accidentalmente si imposta un valore di volume (lotto) negativo. Per avere un messaggio sul lotto sbagliato, senza messaggio di errore, nel tester
prev_calculated - create un analogo per conto vostro, dichiaratelo globalmente (o staticamente) e scriveteci il numero di barre effettivamente calcolato nell'iterazione corrente. Significa che, dopo aver calcolato con successo i valori dell'indicatore, dobbiamo registrare il numero di barre attuali in esso. Se i calcoli non hanno successo, è meglio annullarlo per ricalcolare i valori dell'indicatore per ogni barra della storia alla prossima iterazione.
Tra parentesi, l'argomento della funzione sin(30) Tra parentesi quadre, l'indice della matrice x[25]. void start() { In parentesi graffe blocco operatore }
STARIJ: Tra parentesi l'argomento della funzione sin(30) tra parentesi quadre l'indice della matrice x[25] void start() { In parentesi graffe blocco operatore }
Grazie, ancora non compila! Anche se si mette una parentesi graffa alla fine, cosa che ho notato!!!!
Buon pomeriggio!
Ho un EA che fa certi calcoli. Utilizza diverse operazioni matematiche, array, loop. Salva il risultato in un file. Deve ricominciare tutto dall'inizio dopo aver eseguito tutte le azioni. Ha fatto tutti i calcoli una volta e poi si blocca per la seconda volta senza fare alcuna azione. Potete consigliarmi se è necessario azzerare le variabili, cancellare gli array o qualcos'altro prima di iniziare un nuovo calcolo?
Hai provato a chiudere il file?
Come programmare una stampella/indicatore/script (come un indicatore con schede "about, general, input parameters, colours, display") per MT4 in modo che prenda dati da file .csv, come il formato delfile sorgente:
Cioèl'indicatore ha preso i dati registrati da un file e li ha messicome un segmento di linea (TF, TA) o una banda colorata(EA) con i parametri dell'estensione uguale a "un giorno". (dal bordo al bordo dei separatori verticali dei giorni su МТ4), per le linee selezione del colore della linea, tipo di linea, selezione del colore del testo e dimensione del commento e sostituzione della linea di commento come "TF - 1,192" la seconda linea "TF - 1,1733" che sono prese dalle linee corrispondenti del file. L'intervallo è puramente orizzontale e dalla linea EUR;TF;1.192;1,1733 prende la prima cifra per uno slot e la seconda cifra per il secondo come inizio dello slot 1.192 e fine dello slot 1.192.
Ci sono anche intervalli, per esempio EA, il principio è lo stesso dall'inizio alla fine della giornata ma il prezzo è diverso e la linea inizia e finisce con CHF;AB1;1.03484132734247;1.02549513556164 inizio è1.03484132734247 fine dell'intervallo1.02549513556164. Funziona quando si accende MT4 (come un normale indicatore sul gafik), ogni giorno sul grafico e aggiunge tutti i dati esattamente per il giorno corrente una volta, tutte le linee applicate in precedenza non viene rimosso dal grafico e non si duplica. Con tutto ciò seleziona e visualizza tutti i segmenti e gli intervalli del giorno, solo dove si trova ora la finestra attiva e su altre finestre attive (cioè, dove è in esecuzione) (cioè, ha aperto una coppia e l'indicatore ha disegnato tutti i segmenti e gli intervalli del giorno corrente e si è fermato, e così via per le coppie).
Per esempio, come dovrebbe essere la scheda dell'indicatoreParametri di ingresso:
provato a scarabocchiare me stesso, ma non ottenere una cosa maledetta anche se sembrava facile (ma io sono un umanitario, cosa si può fare....) Aiuto per favore annegamento !!!!!!!!
Ciao!
Per favore aiutatemi a trovare un bug nel seguente programma!!!
//+------------------------------------------------------------------+
//|test.mq4 |
//| Copyright 2018, MetaQuotes Software Corp.
//|https://www.mql5.com ||
//+------------------------------------------------------------------+
#proprietà copyright "365_MA"
#proprietà link "https://www.mql5.com"
#proprietà versione "1.00"
#proprietà rigorosa
extern Period_MA = 365; //Periodo MA 1
extern double Delta = 0.0010; //La distanza alla quale l'ordine può essere aperto
string Symb; //nome dello strumento commerciale
//int Total; //numero di ordini
//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'esperto|
//+------------------------------------------------------------------+
int init()
{
//----
//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperta|
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("Obj_Label");
ObjectDelete("Obj_Label2");
//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di inizio esperto|
//+------------------------------------------------------------------+
int start()
{
doppio prise = Bid;// prezzo corrente
double CurrMAValue = iMA(Symb, Period(),Period_MA, 0,Mode_EMA, PRICE_CLOSE, 0); //il valore della media mobile
doppio Price2MA = prezzo - CurrMAValue;//distanza tra MA e prezzo
datetime NextClose = Time(0) + Period()*60*2;//ora di chiudere
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1; //tempo di chiusura in minuti
//int err;
//aggiorna le informazioni di testo sul grafico
ObjectSetText ("Obj_Label", "TF" + Period() + ", " + DoubleToStr(price, 4) + ", tick " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0], TIME_MINUTES) + ", NC@" + TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " min)", 10,
ObjectSetText ("Obj_Label2", "Delta " + DoubleToStr(Delta,4) + ", MA value " + DoubleToStr(CurrMAValue, 4) + ", distance to MA " + DoubleToStr(Price2MA, 4), 10, "Arial", DarkGreen );
//considerare il prezzo e generare avvisi
if ((MathAbs(Price2MA) < Delta) && // se la distanza da МА è inferiore a delta
(Prezzo > CurrMAValue) && // e il prezzo è superiore alla MA
(Open(0) > CurrMAValue+Delta) // e la candela attuale ha aperto più in alto di MA+Delta
(
Allarme ("Il prezzo si avvicina alla MA dall'alto;)
)
se ((MathAbs(Price2MA) < Delta) && // se la distanza dalla MA è inferiore al delta
(prezzo < CurrMAValue) && // e il prezzo è sotto la MA
(Open(0) < CurrMAValue-Delta)) // e la candela attuale ha aperto sotto il delta della MA
(
Allarme ("Il prezzo si è avvicinato sotto la MA;)
)
ritorno(0);
//+------------------------------------------------------------------+
Dopo aver compilato il seguente errore
Ciao!
Per favore aiutatemi a trovare un bug nel seguente programma!!!
Dopo aver compilato il seguente errore.
Una parentesi graffa è stata lasciata fuori.
Devo integrare lo zigzag nel mio indicatore (ora conta per maniglia)
Il fatto è che il mio indicatore non usa OnCalculate().
Allora, come faccio a far funzionare lo zigzag e come ottengo tassi_totali e prev_calcolati?
Il rate_total è il numero di barre del grafico. Viene determinato utilizzando la funzione Bars.
prev_calculated - create un analogo per conto vostro, dichiaratelo globalmente (o staticamente) e scriveteci il numero di barre effettivamente calcolato nell'iterazione corrente. Significa che, dopo aver calcolato con successo i valori dell'indicatore, dobbiamo registrare il numero di barre attuali in esso. Se i calcoli non hanno successo, è meglio annullarlo per ricalcolare i valori dell'indicatore per ogni barra della storia alla prossima iterazione.
Re: Alekseu Fedotov
Cos'è un tutore, scusa
Re: Alekseu Fedotov
Cos'è un tutore, scusa
Tra parentesi quadre, l'indice della matrice x[25].
void start()
{
In parentesi graffe blocco operatore
}
Tra parentesi l'argomento della funzione sin(30)
tra parentesi quadre l'indice della matrice x[25]
void start()
{
In parentesi graffe blocco operatore
}