[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 351
tara: E nella scheda "Eventi" del menu "Strumenti - Impostazioni", le cose vanno abbastanza male, però. Prova ad usarlo :(
Sono d'accordo, è brutto ... L'allarme non viene spento dalla barra spaziatrice, solo manualmente ... cambiare il parametro di allarme in "service-settings-events" non fa nulla ...
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);
}}
La mia funzione trova il numero di ordini di mercato aperti, le offerte pendenti e le liquidazioni. Ho aggiunto un'altra funzione incorporata che trova i valori dei prezzi massimi e minimi degli ordini pendenti per controllare un'altra cosa più velocemente.
Posso vedere attraverso l'impronta che in qualche momento, trova dei valori che non sono quelli che voglio.
L'idea è che se gli ordini pendenti sono già chiusi, devono essere saltati ma questa funzione non li salta per qualche motivo. Ecco la funzione:
Quindi per gli ordini attivi il prezzo di chiusura è logicamente zero (dato che non è chiuso), ma per gli ordini che hanno già chiuso il prezzo di chiusura non è zero (il prezzo di chiusura sarà quello al momento in cui è stato cancellato). Logicamente, questa è l'ora di chiusura?
Capisco che gli ordini in sospeso non vengono chiusi ma cancellati, ma come dovremmo implementarlo?
FAQ: Puoi scrivere cosa ti serve dalla funzione - trovare gli ordini pendenti più esterni?
Per trovare i prezzi degli ordini pendenti più esterni. Sono quelli attivi, non quelli cancellati. Cioè, voglio saltare gli ordini pendenti cancellati nella nostra ricerca... Spero di essere stato chiaro?
Però sei veloce. Cancellato il post come l'ho trovato io stesso. Grazie mille!
Mi fa piacere sentirti, pensavo di rispondere a un vecchio post che non riesco a trovare :)
E nella scheda "Eventi" del menu "Strumenti - Impostazioni", le cose vanno abbastanza male, però. Prova ad usarlo :(
Sono d'accordo, è brutto ... L'allarme non viene spento dalla barra spaziatrice, solo manualmente ... cambiare il parametro di allarme in "service-settings-events" non fa nulla ...
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?
L'EA lancia una pila di ordini sul grafico.
La mia funzione trova il numero di ordini di mercato aperti, le offerte pendenti e le liquidazioni. Ho aggiunto un'altra funzione incorporata che trova i valori dei prezzi massimi e minimi degli ordini pendenti per controllare un'altra cosa più velocemente.
Posso vedere attraverso l'impronta che in qualche momento, trova dei valori che non sono quelli che voglio.
L'idea è che se gli ordini pendenti sono già chiusi, devono essere saltati ma questa funzione non li salta per qualche motivo. Ecco la funzione:
Ho una condizione chiara:
Significa che se il tempo di chiusura di un ordine non è zero, è chiuso e dovremmo saltarlo.
Sull'uscita, vedo che non li salta. Ecco il grafico:
Perché il prezzo della pausa è sbagliato? Perché il codice è corretto, per come lo vedo io.
La condizione che ho è chiaramente indicata:
Cosa c'è per gli attaccanti?
Cos'è per gli ordini in sospeso?
Quindi per gli ordini attivi il prezzo di chiusura è logicamente zero (dato che non è chiuso), ma per gli ordini che hanno già chiuso il prezzo di chiusura non è zero (il prezzo di chiusura sarà quello al momento in cui è stato cancellato). Logicamente, questa è l'ora di chiusura?
Capisco che gli ordini in sospeso non vengono chiusi ma cancellati, ma come dovremmo implementarlo?
Puoi scrivere cosa ti serve dalla funzione - trovare gli ordini pendenti più esterni?
Per trovare i prezzi degli ordini pendenti più esterni. Sono quelli attivi, non quelli cancellati. Cioè, voglio saltare gli ordini pendenti cancellati nella nostra ricerca... Spero di essere stato chiaro?