//---- 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); }
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!
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 );
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!
Come posso aiutarla? Scrivere per te? Freelance per favore.
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?
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?
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.
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