[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 350
Nessuno può aiutare che c'è solo un'opzione, leggere dal file di storia? Se questa è l'unica opzione, qualcuno ha un modo pronto per identificare le informazioni necessarie nel file della storia.
Non si preme la barra spaziatrice, ma si tiene premuto il pulsante di accensione per 5-10 secondi finché il segnale non scompare.
In KVN tra i moderatori, sarai il capitano della squadra... Ripeto la domanda, forse qualcuno risponderà: l'allarme non si spegne dopo aver premuto la barra spaziatrice... La versione del terminale è l'ultima 500... Non l'ho mai visto prima.
Ragazzi, per favore, datemi un suggerimento. Ho già fatto questa domanda, ma non sono riuscito a trovare il codice giusto.
Ancora una volta vi dirò il succo dell'idea. Con l'indicatore Awesom, dal basso (sotto 0) all'alto (sopra 0), viene calcolato il volume dell'onda (indicatore Volumi).
L'etichetta di testo con la somma del volume dell'onda, dovrebbe essere stampata sul grafico dell'indicatore e calcolata su tutta la storia.
Ho preso questo:
Qual è l'errore?
#property indicator_separate_window#property indicator_buffers 2#property indicator_color1 Red#property indicator_color2 SteelBlue#property indicator_width1 2//---- basic fan indicator parametersexternbool Show_AOLine_2=true;
externint SlowEMA3=34;
externint EMA=3;
externbool Show_Volume=true;
externdouble coaf=0.5;
//---- indicator buffersdouble AOBuffer3[];
double ExtMapBuffer1[];
double VLUP, AO_up,AO_dn;
double prhgh_e=0, prhgh_s, prlw_e=0, prlw_s;
datetime tmhgh, tmlw;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- drawing settingsstring name_ind = "Awesome_super_volumes";
IndicatorShortName("Awesome_super_volumes");
//---- AO_fan line 2 (basic)if(Show_AOLine_2 ==true){Show_AOLine_2=DRAW_LINE; }
else
{Show_AOLine_2=DRAW_NONE; }
SetIndexBuffer(0,AOBuffer3);
SetIndexStyle(0,Show_AOLine_2);
SetIndexLabel(0,"basic line");
SetIndexBuffer(1,ExtMapBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexLabel(1,"Volume");
//---- initialization donereturn(0);
}
//+------------------------------------------------------------------+//| Awesome Oscillator |//+------------------------------------------------------------------+int start()
{
int limit;
int counted_bars=IndicatorCounted();
double prev,current;
//---- last counted bar will be recountedif(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=0; i<limit; i++)
{
//---- AO_fan + Volumes
AOBuffer3[i]=iMA(NULL,0,EMA,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,SlowEMA3,0,MODE_SMA,PRICE_MEDIAN,i);
if (Show_Volume==true)
{
double nSum = Volume[i]*Point*coaf;
if (AOBuffer3[i]<=0)ExtMapBuffer1[i] = nSum;
if (AOBuffer3[i]>0)ExtMapBuffer1[i] = -nSum;
double Vol_Arr[];
if (AOBuffer3[i]<=0)Vol_Arr[i]=Volume[i]*Point*coaf;
if (AOBuffer3[i]>0)Vol_Arr[i] = -Volume[i]*Point*coaf;
}
}
//-- Поиск High & Time & Min_AO if (AOBuffer3[i]>0)
{
AO_up = AOBuffer3[i]*0.1+AOBuffer3[i];
prhgh_s = High[i];
if (prhgh_s >= prhgh_e) {prhgh_e = prhgh_s; tmhgh = Time[i];}
//SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmhgh, AO_up, Black);
}
//-- Поиск Low & Time & Max_AOif (AOBuffer3[i]<0)
{
AO_dn = AOBuffer3[i]*0.1+AOBuffer3[i];
prlw_s = Low[i];
if (prlw_s > prlw_e) {prlw_e = prlw_s; tmlw = Time[i];}
//SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmlw, AO_dn, Black);
}
// -- Пересчет баров от High до Lowif(NewBar())
{
int colbr = iBarShift(NULL,0,tmhgh)-iBarShift(NULL,0,tmlw);
int shift=iBarShift(NULL,0,tmhgh);
for (i=0; i<=colbr; i++)
{VLUP += MathAbs(iVolume(NULL,0, shift+i));}
}
Comment("Vol_",VLUP,prlw_e,prhgh_e);
for(i=0; i<limit; i++)
{
SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmlw, AO_dn, Black);
}
//---- donereturn(0);
}
//+------------------------------------------------------------------+void SetText(string name, string Vl, datetime t1, double p1, color c)
{
// if (ObjectFind(name)!=-1) ObjectDelete(name);ObjectCreate(name,OBJ_TEXT,WindowFind("Awesome_super_volumes"),0,0,0,0);
ObjectSetText(name, Vl, 10, "Times New Roman", c);
ObjectSet(name, OBJPROP_TIME1 , t1);
ObjectSet(name, OBJPROP_PRICE1, p1);
ObjectSet(name, OBJPROP_COLOR, c);
}
bool NewBar()
{
staticdatetime lastbar = 0;
datetime curbar = Time[0];
if(lastbar!=curbar)
{
lastbar=curbar;
return (true);
}
else
{
return(false);
}}
1. La funzione di conversione converte e i cambiamenti di variabili in questa funzione non cambiano se non c'è un segno di spunta. TimeToStr(TimeLocal(), TIME_MINUTES) - dipende dal tick.
Avete un'idea di come estrarre il tempo da Win32/User32 per non far bloccare l'EA?
1. Nessuna di queste funzioni è dipendente dalle zecche. Dovete solo chiamare la funzione per ottenere il valore di ritorno. L'indicatore e l'Expert Advisor lo chiamano all'arrivo di un tick, ma niente di che. Puoi mettere in loop un Expert Advisor o uno script. La frequenza delle chiamate sarà la stessa dell'indicatore o dello script.
2. Non c'è alcun senso. Dovrete inventare la stessa TimeLocal().
con lo stesso looping?
Proverò
Per favore aiutatemi a risolvere il problema con il limite di spostamento in iHigh(Symbol(),timeframe,shift), che è limitato al numero 1000.
iTime(Symbol(),timeframe,1001) dà 1970.01.01 00:00Nessuno può aiutare che c'è solo un'opzione, leggere dal file di storia? Se questa è l'unica opzione, qualcuno ha un modo pronto per identificare le informazioni necessarie nel file della storia.
Non si preme la barra spaziatrice, ma si tiene premuto il pulsante di accensione per 5-10 secondi finché il segnale non scompare.
In KVN tra i moderatori, sarai il capitano della squadra... Ripeto la domanda, forse qualcuno risponderà: l'allarme non si spegne dopo aver premuto la barra spaziatrice... La versione del terminale è l'ultima 500... Non l'ho mai visto prima.
Ragazzi, per favore, datemi un suggerimento. Ho già fatto questa domanda, ma non sono riuscito a trovare il codice giusto.
Ancora una volta vi dirò il succo dell'idea. Con l'indicatore Awesom, dal basso (sotto 0) all'alto (sopra 0), viene calcolato il volume dell'onda (indicatore Volumi).
L'etichetta di testo con la somma del volume dell'onda, dovrebbe essere stampata sul grafico dell'indicatore e calcolata su tutta la storia.
Ho preso questo:
Qual è l'errore?
1. La funzione di conversione converte e i cambiamenti di variabili in questa funzione non cambiano se non c'è un segno di spunta. TimeToStr(TimeLocal(), TIME_MINUTES) - dipende dal tick.
Avete un'idea di come estrarre il tempo da Win32/User32 per non far bloccare l'EA?
1. Nessuna di queste funzioni è dipendente dalle zecche. Dovete solo chiamare la funzione per ottenere il valore di ritorno. L'indicatore e l'Expert Advisor lo chiamano all'arrivo di un tick, ma niente di che. Puoi mettere in loop un Expert Advisor o uno script. La frequenza delle chiamate sarà la stessa dell'indicatore o dello script.
2. Non c'è alcun senso. Dovrete inventare la stessa TimeLocal().
Non ho trovato nulla nel libro di testo su cosa significa "&" nei parametri formali delle funzioni. Puoi dirmi cosa influisce e cosa significa?
https://docs.mql4.com/ru/basis/variables/formal
La seconda parte della pagina dalle parole "È possibile passare parametri per riferimento..." Guarda attentamente lì Esempio.
Buon pomeriggio.
Potreste consigliarmi il modo migliore per risolvere l'incrocio di, diciamo, stocastico:
sulla prima e terza barra confrontare i valori delle linee di segnale e principale o la prima e la seconda ?