Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1941
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Beh, c'è un modo per controllare la memoria? Come si consuma o qualcosa del genere?
diciamo che potete influenzare la memoria e calcolerà 200 indicatori, ma dopo una settimana vi chiederete perché 1000 indicatori non sono caricati... ecc. circolo vizioso... Impostare compiti corretti...
il codice appeso non può essere applicato da nessuna parte... Devi fissare i compiti che possono essere fatti... Ed è più facile sbagliare il codice... Gli indicatori devono lavorare velocemente e non c'è tempo per calcoli super lunghi.
Vorrei conoscere i limiti entro i quali si può creare qualcosa. Tanto più che non sono affatto un programmatore, non saprei come gestirlo. Beh, cercherò qualcosa da leggere
Vorrei conoscere il quadro in cui potrei creare qualcosa. È difficile da capire per un principiante, soprattutto perché non sono affatto un programmatore. OK, vedrò cosa posso leggere.
Di solito hai bisogno solo di una CCI, massimo 3 :) E hai 200... Sono d'accordo che è difficile non oltrepassare i limiti, ci vuole esperienza, per impostare il compito corretto e fattibile che sarà completato con successo in un tempo ragionevole - è difficile. Quindi se hai bisogno di consigli su dove scavare, dovresti concentrarti sull'ottimizzazione e la minimizzazione delle idee... Per esempio CCI con periodo 20 e CCI con periodo 21... quasi la stessa cosa e non ha senso calcolarli entrambi. Più alto è il periodo meno effetto, devi trovare un numero ragionevole. Una bella soluzione funziona sempre velocemente.
Beh, un CCI di solito è sufficiente, 3 al massimo :) e hai 200... Sono d'accordo con te sulla difficoltà di rimanere nei limiti... ci vuole esperienza, è difficile impostare il compito giusto, realizzabile, che sarà completato con successo in un tempo ragionevole. Quindi se hai bisogno di consigli su dove scavare, dovresti concentrarti sull'ottimizzazione e la minimizzazione delle idee... Per esempio CCI con periodo 20 e CCI con periodo 21... quasi la stessa cosa e non ha senso calcolarli entrambi. Più alto è il periodo meno effetto, devi trovare un numero ragionevole. Una bella soluzione funziona sempre velocemente.
Ho capito che il profiler aiuterà a misurare il consumo di memoria. Quindi lo ottimizzeremo). In ogni caso, se qualcuno sa dove leggerlo, per favore mi mandi il link...
ciao a tutti!
Per favore consigliate cosa si dovrebbe aggiungere al codice per spostare il MA non solo in avanti (valore positivo) ma anche all'indietro (valore negativo)
Ecco il codice dell'Expert Advisor:
ciao a tutti!
Per favore consigliate cosa si dovrebbe aggiungere al codice per spostare il MA non solo in avanti (valore positivo) ma anche all'indietro (valore negativo)
Ecco il codice dell'Expert Advisor:
Aggiungete allo spostamento il valore negativo desiderato, ma il valore + lo spostamento non deve essere inferiore a zero.
Aggiungete il valore negativo desiderato allo spostamento, ma assicuratevi che il valore + lo spostamento sia almeno zero.
Grazie, farò una prova.
Buon pomeriggio.
Aiuto con il codice, forse ci sono degli esempi.
Compito:
Ci sono diversi ordini aperti, con diversi lotti, in diverse direzioni. Uno di loro è sepolto con profitto, supponiamo 20. Tuttavia, c'è un ordine aperto con un profitto negativo, supponiamo -55 con 0,05 lotti. Voglio chiudere una parte di un ordine negativo dell'importo del profitto di un ordine chiuso positivamente per diminuire il drawdown.
Ho provato a scrivere questo usando l'operatore while, ma non è andata bene.
Grazie in anticipo.
Ciao, questo codice è tratto dal libro di Fedoseev. Perché l'indicatore non viene disegnato nella finestra, il log dice che è in esecuzione, durante la compilazione nessun errore, si apre una finestra aggiuntiva (vuota), questo codice è dal libro, con il mio esattamente lo stesso risultato. Cosa c'è che non va?
//+------------------------------------------------------------------+
//| 015 Symbol.mq5 |
//+------------------------------------------------------------------+
#proprietà copyright "Dmitry Fedoseev"
#proprietà link "mailto:for-good-letter@yandex.ru"
#proprietà versione "1.00"
#proprietà indicator_separate_window
#proprietà indicator_buffers 4
#proprietà indicator_plots 1
//--- plot bar
#property indicator_label1 "bar"
#proprietà indicator_type1 DRAW_CANDLES
#property indicator_color1 clrGray,clrBlue,clrRed
#proprietà indicator_style1 STYLE_SOLID
#proprietà indicator_width1 1
//--- parametri di ingresso
stringa di input symbol="";
input bool drawBars=false;
stringa sym;
//--- buffer di indicatori
doppio barBuffer1[];
doppio barBuffer2[];
doppio barBuffer3[];
doppio barBuffer4[];
//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'indicatore personalizzato
//+------------------------------------------------------------------+
int OnInit()
{
sym=simbolo;
StringTrimLeft(sym);
StringTrimRight(sym);
se(sym==""){
sym=Symbol();
}
if(!SymbolSelect(sym,true)){
Alert("Simbolo sconosciuto ",sym);
return(INIT_FAILED);
}
se(drawBars){
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_BARS);
}
else{
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_CANDLES);
}
//--- mappatura dei buffer degli indicatori
SetIndexBuffer(0,barBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,barBuffer2,INDICATOR_DATA);
SetIndexBuffer(2,barBuffer3,INDICATOR_DATA);
SetIndexBuffer(3,barBuffer4,INDICATOR_DATA);
//---
return(INIT_SUCCEED);
}
void OnDeinit(const int r){
Commento(");
EventKillTimer();
}
//+------------------------------------------------------------------+
//| funzione di iterazione dell'indicatore personalizzata
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int bars=Bars(sym,Period());
se(barre==0){
Comment("Forming timeframe ",sym,"...");
EventSetTimer(1);
ritorno(0);
}
int start;
se(prev_calcolato==0){
Commento(");
EventKillTimer();
datetime tm[1];
se(CopyTime(sym,Period(),bars-1,1,tm)==-1){
ritorno(0);
}
inizio=0;
for(;start<rates_total;start++){
if(time[start]>=tm[0]){
pausa;
}
}
}
else{
start=prev_calculato-1;
}
MqlRates r[1];
for(int i=start;i<rates_total;i++){
se(CopyRates(sym,Period(),time[i],1,r)==-1){
ritorno(0);
}
barBuffer1[i]=r[0].open;
barBuffer2[i]=r[0].high;
barBuffer3[i]=r[0].low;
barBuffer4[i]=r[0].close;
}
return(rates_total);
}
void OnTimer()
{
ChartSetSymbolPeriod(0,Symbol(),Period());
}
//+------------------------------------------------------------------+
Ciao, questo codice è tratto dal libro di Fedoseev. Perché l'indicatore non viene disegnato nella finestra, il log dice che è in esecuzione, durante la compilazione nessun errore, si apre una finestra aggiuntiva (vuota), questo codice è dal libro, con il mio esattamente lo stesso risultato. Cosa c'è che non va?
Alt s incolla il codice.
E quando si fonde l'induttore si inserisce lo strumento?