[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 297
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
Non c'è un ideale! Guardo solo le persone che scrivono, per così dire, per avere una visione generale. A volte trovo dei trucchi che potrei adottare. A volte vedo che il codice non è affatto leggibile. Come quella di tarasBY, per esempio. Per quanto mi sforzi, non può essere letto. Posso leggere in segmenti chiari e poi bam! Non riesco a capire più nulla. E così in molti luoghi.
Sono un amico che mi ha chiesto di decompilare, ed è più facile capire lì che i codici di tarasBY. Forse è abbastanza normale, ma dubito che molti scaricatori li capiscano. Chi è troppo intelligente per capirli, non li scaricherà... Allora la domanda sorge spontanea: perché postarli lì :)
Misuro il mio tempo secondo il tempo medio di Greenwich.
Ora sto dormendo. Buona notte.
Cosa si dice in Catalogna?
Per niente
Sì, è il rapporto di due logaritmi naturali. Ora guardate la formula di "Sostituzione della base del logaritmo". Quindi il risultato è che questa espressione
è equivalente al logaritmo decimale per bd_LOTSTEP. In MQL non c'è una funzione separata per il logaritmo decimale, quindi si usa questa conversione.
Questo è quello che stavo dicendo. Il codice della mia lingua... Penso che o il programmatore non ha paura della matematica o è una sorta di protezione dalla lettura del codice (scherzo). Non so, la mia opinione personale è che la matematica semplifica l'algoritmo proprio come switch...case invece di if.
Mostra SetVLine();
dati sbagliati, si prega di indicare dove l'errore è.
Inserisco tutto il codice, tranne il "copyright"
extern int PeriodP=12;
extern int TimeFrame=0;
double P_up0,P_up1,FrApPrise;
//+------------------------------------------------------------------+
//| funzione di inizializzazione esperto |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit() xml-ph-0016@deepl.in
}
//+------------------------------------------------------------------+
//|funzione di avvio esperto |
//+------------------------------------------------------------------+
int start()
{
//----
P_up0=iCustom(Symbol(),Period(), "Price channel",PeriodP,0,0)
P_up1=iCustom(Symbol(),Period(), "rezerv-xrust",FrApPrise,0,0);
{Comment("show price channel=",P_up0,"\n", "show xrust=",P_up1);}
//----
return(0);
}
usato due indicatori
1)https://www.mql5.com/it/code/8908
Price channel.mq4
2)https://www.mql5.com/ru/code/8318
Fractal_Level_Xrust_V2.mq4
per favore aiuta, perché 1 mostra e l'altro non vuole?
Questo è quello che stavo dicendo. Condizionale la mia lingua... Penso che o il programmatore non ha paura della matematica o è una sorta di protezione dalla lettura del codice (scherzo). Non so, la mia opinione personale è che la matematica semplifica l'algoritmo proprio come switch...case invece di if.
C'è un difetto in questo codice. Qui, tolto dal contesto:
Il punto è che l'espressione
Quindi il valore del lotto è arrotondato a una cifra decimale.
Continuate a leggere, però, forse vi aiuterà.
Una piccola aggiunta alla descrizione della mia domanda: ho rifatto l'indicatore crunch, ecco il codice
#proprietà copyright "#Copyright © 2008, XrustSolution.#"
#proprietà link "#xrust.ucoz.net#"
#proprietà indicator_chart_window
extern int TimeFrame=0;//se=0, allora quello corrente
extern string FrApNam="Ap";//nome della linea corrispondente al frattale verso l'alto.
extern string FrDnNam="Dn";//nome della linea corrispondente al frattale verso il basso
//-----------------------------------------------------------------------------+
doppio FrPrise;
doppio FrApPrise=0,FrDnPrise=0;
//+----------------------------------------------------------------------------+
void init(){
if(TimeFrame==0){TimeFrame=Period();}
IndicatorShortName("Factal_Level_Xrust "+TimeFrame);
FrApNam=StringaConcatenata(FrApNam,TimeFrame);
FrDnNam=StringaConcatenata(FrDnNam,TimeFrame);
return;}
void deinit(){
ObjectDelete(FrDnNam);
ObjectDelete(FrApNam);
Commento(" ");
return;}
//+----------------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
limite int;
doppio tmp;
int i, j, k;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//-----------------------------------------------------------------------------+
LineAp();
LineDn();
stringa FAP=DoubleToStr((FrApPrise),Digits);
string FDP=DoubleToStr((FrDnPrise),Digits);
int diap=MathRound((FrApPrise-FrDnPrise)/Point);
{Commento("TimeFrame="+TimeFrame+
"\nApPrise111 ="+FAP+
"\nDnPrise ="+FDP+
"Canale frattale ="
+diap+"Punto");}
ritorno(0);
}
//-----------------------------------------------------------------------------+
// cerca la linea orizzontale per nome, ridisegna se il prezzo è cambiato |
//-----------------------------------------------------------------------------+
void LineDn(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
//Commento(FrPrise);
se(ObjectFind(FrDnNam)==0){
if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrDnPrise=FrPrise;
ObjectDelete(FrDnNam);
WindowRedraw();
return;}
//-----------------------------------------------------------------------------+
// cerca una linea orizzontale per nome, ridisegna se il prezzo è cambiato |
//-----------------------------------------------------------------------------+
void LineAp(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_UPPER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
se(ObjectFind(FrApNam)==0){
if(ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrApPrise=FrPrise;
ObjectDelete(FrApNam);
WindowRedraw();
return;}
//-----------------------------------------------------------------------------+
//Kim Rispetto e rispetto !!! |
//+----------------------------------------------------------------------------+
//| Autore: Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versione : 07.10.2006 |
//| Descrizione: Cerca il frattale più vicino. Restituisce il livello dei prezzi. |
//+----------------------------------------------------------------------------+
//| Parametri: |
//| sy - nome dello strumento ("" o NULL - simbolo corrente) |
//| tf - timeframe ( 0 - TF corrente) |
//| modo - tipo di frattale (MODE_LOWER|MODE_UPPER) |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
if (sy=="" || sy=="0") sy=Symbol();
doppio f=0;
int d=MarketInfo(sy, MODE_DIGITS), s;
if (d==0) if (StringFind(sy, "JPY"<0) d=4; altrimenti d=2;
per (s=2; s<100; s++) {
f=iFractals(sy, tf, mode, s);
se (f!=0) return(NormalizeDouble(f, d))
}
Print("FindNearFractal(): frattale non trovato");
ritorno(0);
}
Non ho bisogno di linee sul grafico, ho solo bisogno di due numeri (uno da ciascuno di questi indicatori di spirito).
Una piccola aggiunta alla descrizione della mia domanda.Rielaborato l'indicatore crunch.Ecco il codice
Se vuoi una risposta, abbi un po' di rispetto per le persone che leggono i tuoi scarabocchi.
Il codice dovrebbe essere inserito usando il pulsante SRC - è sopra la casella di modifica del tuo post tra gli altri strumenti di formattazione.