Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 300
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
Ma nulla è cambiato.
Sia l'errore che l'avvertimento rimangono.
Datemi TUTTO il codice, non solo un pezzo di esso. Si aspetta che tutti indovinino? Allora chiedi qui - qui tutti sanno tutto di tutto contemporaneamente.
Vi do l'INTERO codice.
Vi do l'INTERO codice.
È semplicemente enorme...
Tutto il codice
"
#proprietà copyright "Copyright 2017, MetaQuotes Software Corp."
#versione proprietà "Cross20170703 1.00"
//================================================================================ = ===========================
extern int Period_FastMA=4;
extern int Period_SlowMA=8;
extern int MaxTickNum=30;
extern int MaxAttempt=10;
extern int k_slippage=1;
doppio esterno k_SL=10.0;//*Punto()
doppio esterno k_TP=30.0;//*Punto()
doppia esterna TrailDist=30.0;//*Punto()
doppio esterno k_lotti=0,3;
extern bool ExFin=falso;
int//**************************************************** ***** ************************************
res,
contare,
io,
Segno di spunta successivo=0,
tempo,
fin-time,
BegMlSecTime,
EndMlSecTime,
tempo delta,
Tentativo,
slittamento=5,
SpuntaNum=0,
posizione,
biglietto,
Intervallo massimo1000,
CroceNum=0,
come=4,
att,
tentativo,
erra;
Doppio //*********************************************** ***** *******************************
totale,
molte,
propagazione,
veloce,
lentoMA,
delta,
ultimo delta,
Delta precedente,
Comis=0,00004,
prezzo aperto,
prezzo vicino,
SL,
TP,
profitto,
PROFITTO;
bool//******************************************************* *** **********************************************
FirstCross=falso,
NextCross=falso,
CurType,
successo = vero
abilita=vero,
BegUp,
BegDn,
AcquistaAperto=falso,
SellOpened=falso;
corda//*********************************************** ************************************************** *
rec,
str,
disco,
BegTimeCorrente,
EndTimeCurrent,
CurTime,
Str Cur,
stringbeg,
StringEnd;
//************************************************** **************************************************** ******* ******
//================================================================================ = ==================================================================================================== == ===============================
//================================================================================ = ==================================================================================================== == ================================
//================================================================================ = ==================================================================================================== == ================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>>>>>>>>>>>>
//------------------------------------------------ -------------------------------------------------- ---------------------------
//================================================================================ = ==================================================================================================== == =============================
int OnDeinit(const int res)
{
Alert("beg OnDeinit()");
err=StringToInteger((stringa)err);
ritorno/ri;
Alert("end OnDeinit()");
}
//SuDeinit();-----------
//------------------------------------------------ -------------------------------------------------- -----------------------
//================================================================================ = ==================================================================================================== == ==============================
void ExpertStop()
{
Avviso("EspertoStop");
if((ExFin==true)&&(TickNum==MaxTickNum))
{
ExpertRemove();
OnDeinit(res);
}
} //fine ExpertStop
//------------------------------------------------ -------------------------------------------------- ------------------------
//================================================================================ = ==================================================================================================== == ==========================
int ErrorDescription()
{
Avviso("beg ErrorDescription");
cambiare (errare)
{caso 0: err="Nessun errore"; rompere;
case 1: err="Nessun errore, ma risultato sconosciuto"; rompere;
caso 2: err="Errore generale"; rompere;
caso 3: err="Parametri non validi"; rompere;
caso 4: err="Il server commerciale è occupato"; rompere;
case 5: err="Versione precedente del terminale client"; rompere;
caso 6: err="Nessuna connessione al server commerciale"; rompere;
caso 7: err="Diritti insufficienti"; rompere;
caso 8: err="Richieste troppo frequenti"; rompere;
caso 9: err="Operazione illegale che interrompe il server"; rompere;
caso 64: err="Account bloccato"; rompere;
caso 65: err="Numero di conto errato"; rompere;
caso 128: err="Timeout affare scaduto"; rompere;
caso 129: err="Prezzo errato"; rompere;
caso 130: err="Fermate sbagliate"; rompere;
caso 131: err="Volume errato"; rompere;
caso 132: err="mercato chiuso"; rompere;
caso 133: err="Commercio vietato"; rompere;
case 134: err="Denaro insufficiente per completare l'operazione"; rompere;
caso 135: err="Prezzo modificato"; rompere;
caso 136: err="Nessun prezzo"; rompere;
caso 137: err="Broker occupato"; rompere;
caso 138: err="Nuovi prezzi"; rompere;
case 139: err="L'ordine è bloccato ed è già in elaborazione"; rompere;
caso 140: err="Acquisto consentito solo"; rompere;
case 141: err="Troppe richieste"; rompere;
case 145: err="La modifica non è consentita perché l'ordine è troppo vicino al mercato"; rompere;
caso 146: err="Sottosistema commerciale occupato"; rompere;
case 147: err="L'uso della data di scadenza dell'ordine è vietato dal broker"; rompere;
case 148: err="Il numero di ordini aperti e pendenti ha raggiunto il limite fissato dal broker.";break;
//
caso 4000: err="Nessun errore"; rompere;
case 4001: err="Puntatore a funzione non valido"; rompere;
case 4002: err="L'indice dell'array è fuori intervallo"; rompere;
case 4003: err="Nessuna memoria per lo stack di funzioni"; rompere;
case 4004: err="Stack overflow dopo chiamata ricorsiva"; rompere;
case 4005: err="Non c'è memoria nello stack per passare i parametri"; rompere;
case 4006: err="Memoria insufficiente per parametro stringa"; rompere;
case 4007: err="Memoria insufficiente per stringa temporanea"; rompere;
case 4008: err="Stringa non inizializzata"; rompere;
case 4009: err="Stringa non inizializzata nell'array"; rompere;
case 4010: err="Memoria insufficiente per array di stringhe"; rompere;
case 4011: err="Stringa troppo lunga"; rompere;
caso 4012: err="Zero resto"; rompere;
caso 4013: err="Divisione per zero"; rompere;
caso 4014: err="Comando sconosciuto"; rompere;
caso 4015: err="Transizione errata"; rompere;
caso 4016: err="Matrice non inizializzata"; rompere;
case 4017: err="Chiamate DLL non consentite"; rompere;
case 4018: err="Impossibile caricare la libreria"; rompere;
case 4019: err="Impossibile chiamare la funzione"; rompere;
case 4020: err="Le chiamate a funzioni di libreria esterne non sono consentite"; rompere;
case 4021: err="Memoria insufficiente per la stringa restituita dalla funzione"; rompere;
caso 4022: err="Sistema occupato"; rompere;
case 4050: err="Numero di parametri di funzione non valido"; rompere;
case 4051: err="Valore parametro funzione non valido"; rompere;
case 4052: err="Errore interno della funzione stringa"; rompere;
caso 4053: err="Errore di matrice"; rompere;
case 4054: err="Uso non corretto dell'array di serie temporali"; rompere;
case 4055: err="Errore indicatore personalizzato "; rompere;
case 4056: err="Gli array sono incompatibili"; rompere;
case 4057: err="Errore nell'elaborazione delle variabili globali"; rompere;
case 4058: err="Variabile globale non trovata"; rompere;
case 4059: err="Funzione non consentita in modalità test"; rompere;
case 4060: err="Funzione non consentita"; rompere;
case 4061: err="Errore nell'invio della posta"; rompere;
case 4062: err="Parametro stringa previsto"; rompere;
case 4063: err="È previsto un parametro intero"; rompere;
caso 4064: err="doppio previsto"; rompere;
case 4065: err="È previsto un array come parametro"; rompere;
case 4066: err="Dati storici richiesti in stato di aggiornamento"; rompere;
case 4067: err="Errore durante l'esecuzione di un'operazione commerciale"; rompere;
caso 4099: err="Fine file"; rompere;
case 4100: err="Errore durante l'utilizzo del file"; rompere;
caso 4101: err="Nome file non valido"; rompere;
case 4102: err="Troppi file aperti"; rompere;
caso 4103: err="Impossibile aprire il file"; rompere;
case 4104: err="Modalità di accesso al file incompatibile"; rompere;
case 4105: err="Nessun ordine selezionato"; rompere;
caso 4106: err="Carattere sconosciuto"; rompere;
case 4107: err="Parametro prezzo errato per la funzione commerciale"; rompere;
case 4108: err="Numero biglietto non valido"; rompere;
case 4109: err="Il trading non è consentito. Devi abilitare l'opzione Consenti a EA di scambiare nelle proprietà di EA."; rompere;
case 4110: err="Le posizioni lunghe non sono consentite. Devi controllare le proprietà di EA."; rompere;
case 4111: err="Non sono consentite posizioni corte. Devi controllare le proprietà di EA."; rompere;
case 4200: err="L'oggetto esiste già"; rompere;
case 4201: err="È stata richiesta una proprietà oggetto sconosciuta"; rompere;
caso 4202: err="L'oggetto non esiste"; rompere;
case 4203: err="Tipo di oggetto sconosciuto"; rompere;
case 4204: err="Nessun nome oggetto"; rompere;
case 4205: err="Errore coordinate oggetto"; rompere;
case 4206: err="La sottofinestra specificata non è stata trovata"; rompere;
default: err="Errore durante il lavoro con l'oggetto";
}
Avviso("end ErrorDescription");
ritorno(err);
}//Fine descrizione errore()
//------------------------------------------------ -------------------------------------------------- ------------------------
//================================================================================ = ==================================================================================================== == ==========================
int GetNext(NextTick)
//>>>>>>>>>>>>>>>>>>>>>>>>
{
Avviso("beg GetNext(NextTick)");
Avviso (Successivo);
while(RefreshRates()==false)Count++;
Avviso("Count=",Count,"NextTick=",NextTick);
Mettere in guardia(" ");
Avviso (RefreshRates(), Conte, NextTick);
ritorno(Successivo);
Avviso (Successivo);
//--------------------
Avviso("end GetNext(NextTick)");
}
//fine GetNext(NextTick)
//================================================================================ = ==================================================================================================== == ==========================
//------------------------------------------------ -------------------------------------------------- ------------------------
void OnTick()
{
//***********************************
Avviso("Beg OnTick");
//***********************************
FastMA=NormalizeDouble(iMA(NULL,0,Period_FastMA,0,MODE_SMA,PRICE_CLOSE,1),Digits());//Period_FastMA=4
SlowMA=NormalizeDouble(iMA(NULL,0,Period_SlowMA,0,MODE_SMA,PRICE_CLOSE,1),Digits());//Period_SlowMA=8
GetNext(Successivo);
Avviso("NextTick=",NextTick);
Delta=NormalizeDouble(FastMA-SlowMA,Digits()); Avviso("Beg OnTick");
Avviso(Delta,Cifre());
Alert("FastMA=",DoubleToStr(FastMA ,Digits()),"SlowMA=",DoubleToStr(SlowMA,Digits()), "Delta=",DoubleToStr(Delta,Digits()));
Avviso("fine OnTick");
//------------------------------------------------ -------------------------------------------------- ---------------------------
}// fine (fine OnTick)
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< < <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< < <<<<<<<<<<<<
//------------------------------------------------ -------------------------------------------------- -----------------------------
//================================================================================ = ==================================================================================================== == =============================
vuoto Init()
{
Mettere in guardia(" ");
Alert("beg Init()");
Mettere in guardia(" ");
StringBeg=StringConcatenate("TimeToStr(TIME_DATE,TIME_SECONDS)=",TimeToStr(TIME_DATE,TIME_SECONDS));
avviso(stringbeg);
record=StringConcatenate("MaxTickNum=",MaxTickNum);
avviso(record);
record=StringConcatenate("k_SL=",DoubleToStr(k_SL,Digits()));
avviso(record);
record=StringConcatenate("k_TP=",DoubleToStr(k_TP,Digits()));
avviso(record);
record=StringConcatenate("k_lots=",DoubleToStr(k_lots,Digits()));
avviso(record);
Avviso("end Init()");
}//fine Init()
//------------------------------------------------ -------------------------------------------------- ------------------------
//================================================================================ = ==================================================================================================== == ======================
int GetTick(NextTick)
{
Avviso("Beg GetTick");
while (RefreshRates()==false)
NextTick++;
Avviso("NextTick=",NextTick);
OrderSelect(NextTick,SELECT_BY_TICKET);
Profitto=Profitto Ordine();
Avviso(DoubleToStr(Profitto, Cifre));
GetNext(Successivo);
Avviso("fine GetTick");
}
//------------------------------------------------ -------------------------------------------------- -------------------------------------------------- ----
//================================================================================ = ==================================================================================================== == ============================
int NextType()
//>>>>>>>>>>>>>>>>>>>>>>>
{
Avviso("beg NextType");
if(OrderSelect(NextTick,SELECT_BY_TICKET )==true)
{
Prezzo Aperto=OrdinePrezzoAperto();
PrezzoChiudi=PrezzoChiudiOrdine();
}
if(ChiudiPrezzo>ApriPrezzo)CurType=OP_BUY;
altrimenti CurType=OP_VENDITA;
ritorno(curType);
Avviso("end CurType()");
//>>>>>>>>>>>>>>>>>>>>>>>>>>>
}//"end CurType()";
//------------------------------------------------ -------------------------------------------------- -----------------------------
//================================================================================ = ==================================================================================================== == ==============================
bool FastMACrossUp()
{
if(!(Delta==LastDelta))Alert("Delta=",DoubleToStr(Delta,5),"LastDelta=",DoubleToStr(LastDelta,5));
Avviso("UltimoDelta=",DoubleToStr(UltimoDelta,5));
Avviso("!(Delta==UltimoDelta)=",!(Delta==UltimoDelta));
if(((Delta!=UltimoDelta) && (Delta>=0) && (UltimoDelta<=0)))Alert("( Delta!=UltimoDelta)&&(Delta>=0)&&(UltimoDelta<=0)= " ,
(Delta!=UltimoDelta) && (Delta>=0) && (UltimoDelta<=0));
Avviso("(Delta>=0)=",(Delta>=0),"(UltimoDelta<=0)=",(UltimoDelta<=0));
if(Delta!=LastDelta)Alert("Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5));
Avviso("(Delta>=0)=",(Delta>=0)," ( LastDelta<=0)=",(LastDelta<=0)," TickNum=",TickNum);
Avviso("(Delta>=0)=",(Delta>=0));
Avviso("UltimoDelta<=",(UltimoDelta<=0));
Avviso("!(Delta==UltimoDelta)&&((Delta>=0)&&(UltimoDelta<=0))=",!(Delta==UltimoDelta)&&((Delta>=0)&&(UltimoDelta<=0 )));
Avviso(((Delta!=UltimoDelta)&&((Delta>=0)&&(UltimoDelta<=0))));
Avviso(" (Delta!=UltimoDelta)= ",(Delta!=UltimoDelta)," (Delta>=0)= ",(Delta>=0)," (UltimoDelta<=0)= ",(UltimoDelta<= 0));
return((Delta!=UltimoDelta)&&(Delta>=0)&&(UltimoDelta<=0));
} //fine FastMACrossUp()
//------------------------------------------------ -------------------------------------------------- --------------------
//================================================================================ = ==================================================================================================== == =====================
bool FastMACrossDn()
{
if(!(Delta==LastDelta)&&(Delta<=0)&&(LastDelta>=0))Alert("Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5)) ;
Avviso("UltimoDelta=",DoubleToStr(UltimoDelta,5));
Avviso("!(Delta==UltimoDelta)=",!(Delta==UltimoDelta));
Avviso("(Delta<=0)=",(Delta<=0));
Avviso("UltimoDelta>=0",(UltimoDelta>=0));
if((Delta!=UltimoDelta) && (Delta<=0) && (UltimoDelta>=0))
Avviso("(Delta<=0)=",(Delta<=0),"(UltimoDelta>=0)=",(UltimoDelta>=0));
Avviso(" (Delta!=UltimoDelta)&&((Delta<=0)&&(UltimoDelta>=0))= ",(Delta!=UltimoDelta) && (Delta<=0) && (UltimoDelta>=0));
if(Delta!=LastDelta)Alert(" Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5));
Avviso("(Delta<=0)=",(Delta<=0)," (UltimoDelta>=0)=",(UltimoDelta>=0)," TickNum=",TickNum);
Avviso(" (Delta!=UltimoDelta)&&(( Delta<=0)&&(UltimoDelta>=0))= ",(Delta!=UltimoDelta)&&((Delta<=0)&&(UltimoDelta>=0)) );
return((Delta!=UltimoDelta)&&(Delta<=0)&&(UltimoDelta>=0));
}//fine FastMACrossDn()
//------------------------------------------------ -------------------------------------------------- --------------------------------------
//================================================================================ = ==================================================================================================== == =========================================================================================
bool FastMAIsAbove()
{
Avviso("beg FastMAIsAbove()");
Avviso(" (Delta>=0)=",(Delta>=0)," (UltimoDelta>=0)=",(UltimoDelta>=0));
if(((Delta>=0)&&(Delta ultimo>=0)))
Avviso(" FastMA= ",DoubleToStr(FastMA,5)," SlowMA= ",DoubleToStr(SlowMA,5));
Avviso(" Delta= ",DoubleToStr(Delta,5)," LastDelta= ",DoubleToStr(LastDelta,5));
Avviso("end FastMAIsAbove()");
Avviso("(Delta==UltimoDelta)&&(Delta>=0)&&(UltimoDelta>=0)=",(Delta==UltimoDelta)&&(Delta>=0)&&(UltimoDelta>=0));
Avviso("end FastMAIsAbove()");
return((Delta==UltimoDelta)&&(Delta>=0)&&(UltimoDelta>=0));
}//fine FastMAIsAbove()
//================================================================================ = ==================================================================================================== == =================
//------------------------------------------------ -------------------------------------------------- ------------------
bool FastMAIsBelow()
{
return((Delta==UltimoDelta)&&(Delta<=0)&&(UltimoDelta<=0));
}//fine FastMAIsBelow()*/
"
//------------------------------------------------ -------------------------------------------------- ------------------
//************************************************** ******************************************
"
Init non può essere avviato in alcun modo, viene avviato automaticamente una volta all'avvio dell'indicatore/esperto, come DeInit.
In alternativa, potete creare una variabile booleana statica e usarla insieme aIsConnected(). E quando la connessione viene ripristinata all'arrivo di un nuovo tick, deve essere lanciata prima qualche funzione di inizializzazione propria. MaIsConnected() non dovrebbe essere usata in OnCalculate(), ma in OnTimer() e la mia funzione di inizializzazione dovrebbe essere usata all'inizio di OnCalculate().
Grazie, ci penserò, ho solo pensato che ci sono già soluzioni tipiche......
Tutto il codice
Grazie, ci penserò, pensavo solo che ci fossero soluzioni tipiche già disponibili......
Ho già scritto una confutazione alle parole di questa persona. OnItit() è una funzione ordinaria. Eseguitelo quando ne avete bisogno.
Tutto il codice
Te l'ho già detto - allega il codice usando il pulsante SRC. Scusa, sei completamente disimparato?
Ditemi, chi vorrebbe guardare questa robaccia?
Ho già scritto la confutazione delle parole di quest'uomo. OnItit() è una funzione usuale. Si può eseguire quando se ne ha bisogno.
Beh, sì, mi chiedevo perché non chiamarlo quando ci si connette. Si è scoperto che si può :-)
Tutto il codice
Attenzione ai tipi variabili.
Buttare via tutti gli avvisi inutili