Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 9
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
Sto cercando di dare un senso a tutto questo. Quindi secondo te l'opzione corretta è SVA_03, giusto?
Sì, credo di sì. Ma _02 è sicuramente sbagliato.
Hmmm... trovato un errore in me stesso, ora non c'è quasi nessuna discrepanza, ecco l'originale
//| SVA_04.mq4 |
//| Copyright © 2006, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property strict
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
//---- input parameters
extern int RSIPeriod=14;
extern int Levl=50;
extern int TF=0;
//---- buffers
double MABuffer[];
double PosBuffer[];
double NegBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
IndicatorBuffers(1);
SetIndexBuffer(0,MABuffer);
SetIndexBuffer(1,PosBuffer);
SetIndexBuffer(2,NegBuffer);
//---- indicator line
SetIndexStyle(0,DRAW_LINE);
//----
//---- name for DataWindow and indicator subwindow label
// short_name="RSI("+IntegerToString(RSIPeriod)+")";
short_name="RSI("+RSIPeriod+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
SetIndexLabel(1,"U");
SetIndexLabel(2,"D");
return(0);
}
//+------------------------------------------------------------------+
//| Relative Strength Index |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
double rel,negative,positive,sma,x,y,Pos,Neg;
//----
if(Bars<=RSIPeriod) return(0);
if(TF!=0)
{
string name=WindowExpertName();
for(i=0; i<Bars-counted_bars+1; i++)
{
int barIndex=iBarShift(NULL,TF,Time[i],false);
MABuffer[i]=iCustom(Symbol(),TF,name,RSIPeriod,Levl,0,0,barIndex);
}
return(0);
}
i=Bars-RSIPeriod-1;
if(counted_bars>=RSIPeriod) i=Bars-counted_bars-1;
while(i>=0)
{
double sumn=0.0,sump=0.0;
if(i==Bars-RSIPeriod-1)
{
int k=Bars-2;
//---- initial accumulation
while(k>=i)
{
rel=Close[k]-Close[k+1];
if(rel>0) sump+=rel;
else sumn-=rel;
k--;
}
positive=sump/RSIPeriod;
negative=sumn/RSIPeriod;
}
else
{
//---- smoothed moving average
rel=Close[i]-Close[i+1];
if(rel>0) sump=rel;
else sumn=-rel;
positive=(PosBuffer[i+1]*(RSIPeriod-1)+sump)/RSIPeriod;
negative=(NegBuffer[i+1]*(RSIPeriod-1)+sumn)/RSIPeriod;
}
PosBuffer[i]=positive;
NegBuffer[i]=negative;
i--;
}
i=Bars-RSIPeriod-1;
if(counted_bars>=RSIPeriod) i=Bars-counted_bars-1;
while(i>=0)
{
x=PosBuffer[i+1];
y=NegBuffer[i+1];
if(x>0)sma=Close[i+1]+x;
else sma=Close[i+1]-y;
MABuffer[i]=sma;
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
Ecco la versione di SVA_03 con la correzione
//| SVA_03.mq4 |
//| Copyright © 2006, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow
//---- input parameters
extern int RSIPeriod=14;
extern int Levl=50;
extern int TF=0;
//---- buffers
double MABuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
IndicatorBuffers(1);
SetIndexBuffer(0,MABuffer);
//---- indicator line
SetIndexStyle(0,DRAW_LINE);
//----
//---- name for DataWindow and indicator subwindow label
// short_name="RSI("+IntegerToString(RSIPeriod)+")";
short_name="RSI("+RSIPeriod+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
return(0);
}
//+------------------------------------------------------------------+
//| Relative Strength Index |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
double rel,negative,positive,sma,x,y,Pos,Neg;
//----
if(Bars<=RSIPeriod) return(0);
if(TF!=0)
{
string name=WindowExpertName();
for(i=0; i<Bars-counted_bars+1; i++)
{
int barIndex=iBarShift(NULL,TF,Time[i],false);
MABuffer[i]=iCustom(Symbol(),TF,name,RSIPeriod,Levl,0,0,barIndex);
}
return(0);
}
i=Bars-RSIPeriod-1;
if(counted_bars>=RSIPeriod) i=Bars-counted_bars-1;
while(i>=0)
{
double sumn=0.0,sump=0.0;
if(i==Bars-RSIPeriod-1)
{
int k=Bars-2;
//---- initial accumulation
while(k>=i)
{
rel=Close[k]-Close[k+1];
if(rel>0) sump+=rel;
else sumn-=rel;
k--;
}
positive=sump/RSIPeriod;
negative=sumn/RSIPeriod;
}
else
{
//---- smoothed moving average
rel=Close[i]-Close[i+1];
if(rel>0) sump=rel;
else sumn=-rel;
positive=(Pos*(RSIPeriod-1)+sump)/RSIPeriod;
negative=(Neg*(RSIPeriod-1)+sumn)/RSIPeriod;
}
x=Pos;
y=Neg;
Pos=positive;
Neg=negative;
if(x>0)sma=Close[i+1]+x;
else sma=Close[i+1]-y;
MABuffer[i]=sma;
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
lì sostituito
y=negative;
a .
y=Neg;
Buon pomeriggio!
Aiuto! Ho bisogno di un codice che apra un ordine in sospeso. E in 20 minuti dopo l'apertura dell'ordine, se non è chiuso, cambierà lo SL a 50 pips. Grazie!
Buon pomeriggio
Per favore, aiutatemi con una domanda molto semplice (probabilmente). C'è una funzione standard:
Cosa significa "const void &" e come usarlo? ? Anche un semplice tentativo di scrivere una funzione simile porta ad un errore di compilazione:
return ArraySize(array);
}
Errore di compilazione: 'const' - uso illegale del tipo 'void
Come posso usare correttamente "const void &" quando scrivo il mio codice? Si può fare?
Buon pomeriggio
Per favore, aiutatemi con una domanda molto semplice (probabilmente). C'è una funzione standard:
Cosa significa "const void &" e come usarlo? ? Anche un semplice tentativo di scrivere una funzione simile porta ad un errore di compilazione:
return ArraySize(array);
}
Errore di compilazione: 'const' - uso illegale del tipo 'void
Come posso usare correttamente "const void &" quando scrivo il mio codice? O si può usare del tutto?
Sostituire void con il tipo di dati che dovrebbe memorizzare l'array. La funzione standard è progettata come un modello.
Infatti, questa funzione di sistema è una funzione sovraccaricata, e l'intera implementazione di tale sovraccarico è nascosta allo sviluppatore MQL4:
intArraySize(
void&array[]// array da controllare
);
Il compilatore MQL4 sostituisce effettivamente un'implementazione necessaria per ogni chiamata di questa funzione, per esempio, per gli array di tipo intero come questo
intArraySize(
int&array[]// array con elementi di tipo int
);
E per un array di tipo MqlRates per lavorare con le quotazioni in formato dati storici la funzione ArraySize() può essere rappresentata come segue
intArraySize(
MqlRates&array[]// array riempito con valori di MqlRates tipo
);
Buon pomeriggio!
Aiuto! Ho bisogno di un codice che apra un ordine pendente. E in 20 minuti dopo l'apertura dell'ordine, se non è chiuso, cambierà lo SL a 50 pips. Grazie!
Sostituire void con il tipo di dati che dovrebbe memorizzare l'array. La funzione standard è progettata come un modello.
Infatti, questa funzione di sistema è una funzione sovraccaricata, e l'intera implementazione di tale sovraccarico è nascosta allo sviluppatore di programmi in MQL4.
Ho capito bene che in MQL4/MQL5 il costrutto "const void &" - è infatti una notazione simbolica per il riferimento e in pratica non può essere scritto nelle vostre funzioni?
Grazie in anticipo
Ho capito bene che in MQL4/MQL5 la struttura "const void &" - è infatti una notazione simbolica per il libro di riferimento e in pratica non può essere usata nelle vostre funzioni?
Grazie in anticipo