[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 141

 

Ecco, ha funzionato. Sembra essere perché ho impostato un buffer.

#proprietà indicator_buffers 1

 

Hai fatto tutto correttamente, l'ho controllato - esce come dovrebbe (posso darti uno screenshot).

Ho appena aggiunto sopra

#property  indicator_separate_window
#property  indicator_buffers 2
 

Помогите, плиз!!!

double Lots_simb[3];


if(( Lots_simb[0]*2)< Lots_simb[2]) // почему истина ?
{

Print("Lots_simb[0]*2=", Lots_simb[0]*2,"Lots_simb[2]=", Lots_simb[2]);
Open_Buy_otl( symb[0],( Lots_simb[2]/2- Lots_simb[0]));

return;

}

2009.07.10 06:57:09 newseason GBPJPY, M30: Lots_simb[0]*2=8.4  Lots_simb[2]=8.4
 
Signori della conoscenza, quando il log del tester dice "Funzione non consentita in modalità test" come faccio a sapere quale funzione non è consentita?
 
Dimoncheg писал(а) >>
Signori, quando il giornale nel tester dice "La funzione non è consentita in modalità test" come faccio a sapere quale funzione non è consentita?

Caratteristiche e limiti delle strategie di trading di prova in MetaTrader 4'.

 

Ciao, ho davvero bisogno di aiuto! Voglio fare un EA basato su un indicatore. All'inizio, come in ogni indicatore, ci sono queste linee:

SetIndexBuffer(0,ExtBullBuffer);
SetIndexBuffer(1,ExtBull1Buffer);
SetIndexBuffer(2,ExtBull2Buffer);
SetIndexBuffer(3,ExtBull3Buffer);
SetIndexBuffer(4,ExtBull4Buffer);
SetIndexBuffer(5,ExtBull5Buffer);
SetIndexBuffer(6,ExtBull6Buffer);
SetIndexBuffer(7,ExtBull7Buffer);
Poi arriva il corpo del programma (int start()...) dove vengono calcolate le variabili ExtBullBuffer... Voglio fare un EA, quindi non ho bisogno di SetIndexBuffer, ma se lo rimuovo, durante i test le variabili ExtBullBuffer non vengono calcolate (per tutti i timeframe di test, per tutti i timeframe genera 0, anche se non è vero)... Potete consigliarmi cosa fare? Grazie.

 
Levchik >> :

Ciao, ho davvero bisogno di aiuto! Voglio fare un EA basato su un indicatore. All'inizio, come in ogni indicatore, ci sono queste linee:

SetIndexBuffer(0,ExtBullBuffer);
Poi arriva il corpo del programma (int start()...), che calcola le variabili ExtBullBuffer... Voglio fare un EA, quindi non ho bisogno di SetIndexBuffer, ma se lo rimuovo, durante i test le variabili ExtBullBuffer non vengono calcolate (per tutti i timeframe di test, per tutti i timeframe genera 0, anche se non è vero)... Potete consigliarmi cosa fare? >> Grazie.

Nei buffer indicatori, il buffer viene inizializzato automaticamente non appena si dichiara il buffer come indicatore (non ausiliario),

in altri programmi (non indicatori) i buffer devono essere inizializzati con la funzione ArrayResize(ExtBullBuffer,Bars);

(se il buffer non è esplicitamente nominato double ExtBullBuffer[1000]; )

E l'inizializzazione dovrebbe essere fatta nella funzione in cui si suppone di assegnare valori al buffer. Nel vostro caso, in int start().

 

Ciao a tutti. Potete dirmi come fissare il codice dell'indicatore, in modo che il segnale acustico venga emesso non una volta, ma 10 volte, o come ci sono le induzioni dove il segnale è fino alla prossima candela appare. Cioè, il segnale va tutto il tempo la candela in cui si è verificato. Ho un buon segnale, ma solo una volta... Purtroppo, non riesco a sentirlo di notte(((( Vi ringrazio in anticipo per il vostro feedback.

#proprietà indicator_chart_window
#proprietà indicator_buffers 5
#proprietà indicatore_colore1 Giallo
#proprietà indicator_width1 2
#property indicator_color2 SkyBlue
#proprietà indicator_width2 2
#property indicator_color3 Tomato
#proprietà indicator_width3 2

#property indicator_color4 Blue
#property indicator_color5 Red
#proprietà indicator_width4 1
#proprietà indicator_width5 1

//---- parametri di ingresso
extern int Price = 0; //Applica a Price(0-Close;1-Open;2-High;3-Low;4-Median price;5-Typical price;6-Weighted Close)
extern int Length = 15; //Periodo di NonLagMA
extern inttern Displace = 0; //DispLace o Shift
extern double PctFilter = 0; //Filtro dinamico in decimale
extern string note1 ="accendere il colore: ln=1 ln&dot=2; off=0";
extern int Color = 2; //Commutazione della modalità colore (1-colore)
extern int ColorBarBack = 0; //Ritorno alla barra per la modalità colore
extern double Deviation = 0; //deviazione su/giù
extern string note2 ="turn on = 1; turn off = 0";
extern int AlertMode = 0; //interruttore Alertbox (0-off, 1-on)
extern int WarningMode = 0; //Sound Warning switch(0-off,1-on)
extern int SendEmail = 0;
extern string soundfile = "news.wav";
//---- buffer degli indicatori
doppio MABuffer[];
doppio UpBuffer[];
doppio DnBuffer[];
doppia tendenza[];
doppio Del[];
doppio AvgDel[];
doppio updbuffer[];
doppio dndbuffer[];

doppio alfa[];
int i, Phase, Len, Cycle=4;
doppio Coeff, beta, t, Sum, Weight, g;
doppio pi = 3,1415926535;
bool UpTrendAlert=false, DownTrendAlert=false;
//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'indicatore personalizzata
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(8);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,MABuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,UpBuffer);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,DnBuffer);

SetIndexBuffer(5,trend);
SetIndexBuffer(6,Del);
SetIndexBuffer(7,AvgDel);


SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,159); SetIndexBuffer(3,updbuffer); SetIndexEmptyValue(3,EMPTY_VALUE);
SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,159); SetIndexBuffer(4,dndbuffer); SetIndexEmptyValue(4,EMPTY_VALUE);


stringa short_name;
//---- linea di indicazione

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- nome per DataWindow e l'etichetta della sottofinestra dell'indicatore
short_name="NonLagMA("+Length+")";
IndicatoreNomeCorto(nome_corto);
SetIndexLabel(0, "NonLagMA");
SetIndexLabel(1, "Su");
SetIndexLabel(2, "Dn");
//----
SetIndexShift(0,Displace);
SetIndexShift(1,Displace);
SetIndexShift(2,Displace);
SetIndexShift(3,Displace);
SetIndexShift(4,Displace);

SetIndexEmptyValue(0,EMPTY_VALUE);
SetIndexEmptyValue(1,EMPTY_VALUE);
SetIndexEmptyValue(2,EMPTY_VALUE);

SetIndexDrawBegin(0,Lunghezza*Ciclo+Lunghezza+1);
SetIndexDrawBegin(1,Lunghezza*Ciclo+Lunghezza+1);
SetIndexDrawBegin(2,Lunghezza*Ciclo+Lunghezza+1);
//----

Coeff = 3*pi;
Fase = Lunghezza-1;
Len = Lunghezza*4 + Fase;
ArrayResize(alfa,Len);
Peso=0;

per (i=0;i<Len-1;i++)
{
se (i<=Fase-1) t = 1,0*i/(Fase-1);
else t = 1.0 + (i-Fase+1)*(2.0*Ciclo-1.0)/(Ciclo*Lunghezza-1.0);
beta = MathCos(pi*t);
g = 1,0/(Coeff*t+1);
se (t <= 0,5 ) g = 1;
alfa[i] = g * beta;
Peso += alfa[i];
}

ritorno(0);
}

//+------------------------------------------------------------------+
//| NonLagMA_v7.1 |
//+------------------------------------------------------------------+
int start()
{
int i,shift, counted_bars=IndicatorCounted(),limit;
prezzo doppio;
se ( counted_bars > 0 ) limit=Bars-counted_bars;
se ( counted_bars < 0 ) return(0);
if ( counted_bars ==0 ) limit=Bars-Len-1;
se ( barre contate < 1 )

for(i=1;i<Lunghezza*Ciclo+Lunghezza;i++)
{
MABuffer[Bars-i]=0;
UpBuffer[Bars-i]=0;
DnBuffer[Bars-i]=0;
}

for(shift=limit;shift>=0;shift--)
{
Somma = 0;
per (i=0;i<=Len-1;i++)
{
prezzo = iMA(NULL,0,1,0,3,Price,i+shift);
Somma += alfa[i]*prezzo;

}

se (Peso > 0) MABuffer[shift] = (1.0+Deviazione/100)*Somma/Peso;


se (PctFilter>0)
{
Del[shift] = MathAbs(MABuffer[shift] - MABuffer[shift+1]);

doppio sumdel=0;
for (i=0;i<=Lunghezza-1;i++) sumdel = sumdel+Del[shift+i];
AvgDel[shift] = sumdel/Lunghezza;

doppio sumpow = 0;
for (i=0;i<=Lunghezza-1;i++) sumpow+=MathPow(Del[shift+i]-AvgDel[shift+i],2);
double StdDev = MathSqrt(sumpow/Length);

doppio Filter = PctFilter * StdDev;

if( MathAbs(MABuffer[shift]-MABuffer[shift+1]) < Filter ) MABuffer[shift]=MABuffer[shift+1];
}
else
Filtro=0;

se (Colore>0)
{
trend[shift]=trend[shift+1];
se (MABuffer[shift]-MABuffer[shift+1] > Filter) trend[shift]= 1;
se (MABuffer[shift+1]-MABuffer[shift] > Filter) trend[shift]=-1;

updbuffer[shift] = EMPTY_VALUE; dndbuffer[shift] = EMPTY_VALUE;

se (tendenza[spostamento]>0)
{
UpBuffer[shift] = MABuffer[shift];
se (tendenza[shift+ColorBarBack]<0) UpBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
DnBuffer[shift] = EMPTY_VALUE;
se (tendenza[shift+1]<0&Colore>1) updbuffer[shift]= MABuffer[shift];
}
se (tendenza[shift]<0)
{
DnBuffer[shift] = MABuffer[shift];
se (tendenza[shift+ColorBarBack]>0) DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
UpBuffer[shift] = EMPTY_VALUE;
se (tendenza[shift+1]>0&Colore>1) dndbuffer[shift]= MABuffer[shift];

}
}
}
//----------
stringa Messaggio;

if ( trend[2]<0 && trend[1]>0 && Volume[0]>1 && !UpTrendAlert)
{
Messaggio = ""+Symbol()+" M "+Period()+" NonLagMa Signal for BUY";
se ( AlertMode>0 ) Alert (Message);
se ( WarningMode>0 ) PlaySound(soundfile);
if ( SendEmail>0 ) SendMail("NonLagMa", "UpTrendAlert");
UpTrendAlert=true; DownTrendAlert=false;
}

if ( trend[2]>0 && trend[1]<0 && Volume[0]>1 && !DownTrendAlert)
{
Messaggio = ""+Symbol()+" M "+Period()+" NonLagMa Signal for SELL";
se ( AlertMode>0 ) Alert (Message);
se ( WarningMode>0 ) PlaySound(soundfile);
if ( SendEmail>0 ) SendMail("NonLagMa", "DownTrendAlert");
DownTrendAlert=true; UpTrendAlert=false;
}
//----
ritorno(0);
}

 
E_mc2 >> :

Ciao a tutti. Si prega di consigliare come risolvere il codice indyuka che il segnale acustico non viene visualizzato una volta, e poi 10 volte, o come ci sono indyuki dove il segnale fino alla prossima candela. Cioè, il segnale va tutto il tempo la candela in cui si è verificato. Ho un buon segnale, ma solo una volta... Purtroppo, a volte non riesco a sentirlo di notte(((( ringrazio in anticipo chi mi aiuterà.

A cosa ti serve? Dimmi di più, forse c'è una soluzione e tu non sai come fare le domande giuste perché la gente capisca.

Su quello che hai scritto ho due soluzioni, quale a te, due in una volta troppo lunga da scrivere :)

..

A proposito, è meglio allegare codici così lunghi in un file.

E per il codice, c'è un pulsante speciale SRC.

Motivazione: