Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 592
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
Per favore consigliate perché l'aggiunta della stringa #property strict impedisce il disegno delle frecce, ecco tutto il codice
//+------------------------------------------------------------------+
//| revisione oscillante.mq4 |
//| Copyright 2018, MetaQuotes Software Corp.
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#proprietà link "https://www.mql5.com"
#proprietà versione "1.00"
#proprietà indicator_separate_window
#proprietà indicator_buffers 5
#proprietà indicator_plots 4
//--- plot Signaler
#property indicator_label1 "Signaler"
#proprietà indicator_type1 DRAW_LINE
#proprietà indicator_color1 clrRed
#proprietà indicator_style1 STYLE_SOLID
#proprietà indicator_width1 1
//--- tracciare Z
#property indicator_label2 "Z"
#proprietà indicator_type2 DRAW_LINE
#property indicator_color2 clrBeige
#proprietà indicator_style2 STYLE_DOT
#proprietà indicator_width2 1
//--- trama Bay
#property indicator_label3 "Bay"
#proprietà indicator_type3 DRAW_ARROW
#property indicator_color3 clrLightSkyBlue
#proprietà indicator_style3 STYLE_SOLID
#proprietà indicator_width3 1
//--- trama Vendere
#property indicator_label4 "Vendere"
#proprietà indicator_type4 DRAW_ARROW
#property indicator_color4 clrDeepPink
#proprietà indicator_style4 STYLE_SOLID
#proprietà indicator_width4 1
//--- parametri di ingresso
input int PCCI=14; // periodo indicatore PCCI
input double KCCI=1.1; //fattore di regolazione
input int PMOM=14; //periodo dell'indicatore Momentum
input int KMOM=1111; // fattore di lisciatura
input int PATR=14; // periodo indicatore ATR
input int KATR=111111; // fattore di lisciatura
input int PFOR=14; // periodo dell'indicatore Forse
input int KFOR=1111; // fattore di lisciatura
input int PTVR=12; // periodo p dell'indicatore TVI
input int PTVS=12; // periodo c dell'indicatore TVI
input int PTVU=5; //periodo all'indicatore TPI
input int KTVl=111; // coefficiente di livellamento
input int POSF=12; // periodo dell'indicatore AOS veloce
input int POSS=26; // periodo dello slot dell'indicatore AOS
input int POSZ=9; //piccolo periodo dell'indicatore AOS
input int KAOS=111111; // fattore di lisciatura
input int KAD=111; //fattore di spostamento dell'indicatore AOS
input double KK=2.0; // filtro per le frecce
input int Amendment=20; //disegna le frecce nella finestra dell'indicatore in un formato digeribile
//--- buffer di indicatori
doppio SignalerBuffer[];
doppio Z_Buffer[];
doppio BayBuffer[]; doppio BayBuffer[];
doppio SellBuffer[]; doppio SellBuffer[];
doppio PatchBuffer[];
//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'indicatore personalizzato
//+------------------------------------------------------------------+
int OnInit()
{
IndicatorSetInteger(INDICATOR_DIGITS,0);
SetIndexBuffer(0,SignalerBuffer);
SetIndexBuffer(1,Z_Buffer);
SetIndexBuffer(2,BayBuffer);
SetIndexBuffer(3,SellBuffer);
SetIndexBuffer(4,PatchBuffer);
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_ARROW);
SetIndexStyle(3,DRAW_ARROW);
SetIndexArrow(2,241);
SetIndexArrow(3,242);
SetIndexEmptyValue(2,0.0);
SetIndexEmptyValue(3,0.0);
IndicatoreNomeCorto("Segnalatore seminterrato(" +(stringa) PATR + ")");
//---
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| 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 i , limit=rates_total-prev_calculated ;
doppio cci, atr, mom, forc, ao, ac, ad, tvi, osma ;
//---- impostare i parametri di conteggio
if(prev_calculated==0)limit--;
else limit++;
//---- contare
for(i=limit-1; i>=0; i--)
{
cci=iCCI(NULL,0,PCCI,PRICE_TYPICAL,i)/KCCI;
mom=(iMomentum(NULL,0,PMOM,PRICE_TYPICAL,i)-100)*KMOM ;
forc=iForce(NULL,0,PFOR,MODE_SMA,PRICE_TYPICAL,i)*KFOR;
tvi=iCustom(NULL,0, "TVI_v2",PTVR,PTVS,PTVU,4,i)*KTVl ;
osma=iOsMA(NULL,0,POSF,POSS,POSZ,PRICE_TYPICAL,i)*KAOS;
atr=iATR(NULL,0,PATR,i)*KATR;
ao=iAO(NULL,0,i)*KAOS ;
ac=iAC(NULL,0,i)*KAOS ;
ad=iAD(NULL,0,i)/KAD ;
SignalerBuffer[i]=(cci+mom+forc+tvi+osma+atr+ao+ac+ad)/9 ;
}
for(i=limit-1; i>=0; i--)
{
Z_Buffer[i] = (SignalerBuffer[i]+SignalerBuffer[i-1])/2 ;
PatchBuffer[i] = MathAbs(SignalerBuffer[i]-Z_Buffer[i]) ;
}
for(i=0; i<limit && !IsStopped(); i++)
{
se(Z_Buffer[i]>SignalerBuffer[i]&&Z_Buffer[i+1]<SignalerBuffer[i+1]&&PatchBuffer[i]>KK)
BayBuffer[i]=SignalerBuffer[i]-Amendment;
se(Z_Buffer[i]<SignalerBuffer[i]&&Z_Buffer[i+1]>SignalerBuffer[i+1]&&PatchBuffer[i]>KK)
SellBuffer[i]=SignalerBuffer[i]+Amendment;
}
//--- restituire il valore di prev_calculato per la prossima chiamata
return(rates_total);
}
//+------------------------------------------------------------------+
Al venditore di questo indicatore.
Qualcuno può dirmi cosa fare se durante un test EA si rifiuta di copiare i buffer?
Identificare la causa.
Identificare la causa.
E cosa potrebbe essere? È la dimensione del codice? Ho volutamente disabilitato tutta la logica, ho lasciato solo la copia del buffer e niente
E cosa potrebbe essere? È la dimensione del codice? Ho volutamente disabilitato tutta la logica, ho lasciato solo la copia del buffer e niente
Un errore di memoria esaurita appare quando si esegue un test (non parte). Come risolvere il problema?
Dopo aver riavviato il terminale, il test parte e poi dopo alcune prove è di nuovo senza memoria.
Un errore di memoria esaurita appare quando si esegue un test (non parte). Come risolvere il problema?
Dopo aver riavviato il terminale, il test inizia, e poi dopo diversi test di nuovo fuori dalla memoria.
Il programma che state testando consuma tutta la vostra memoria. Cerca gli errori in esso. Controlla i log di "Journal" e "Expert Advisors" sulla demo (non nel tester) - cosa dice lì? Forse, dice qualcosa sulla perdita di memoria durante il cambiamento del timeframe.
Non indovinerò oltre senza il codice.
Il programma che state testando consuma tutta la vostra memoria. Cerca gli errori in esso. Guarda i log "Log" e "Expert Advisors" sulla demo (non nel tester) - cosa dice lì? Forse, dice qualcosa sulla perdita di memoria durante il cambiamento del timeframe.
Non indovinerei oltre senza il codice.
Ci sono molti oggetti non cancellati nei registri dopo la fine dei test. Diverse migliaia... È un problema?
C'è un mucchio di oggetti non riusciti nei log dopo la fine dei test. Diverse migliaia... È questo il problema?
Qui è dove saranno in grado di rispondere con certezza.