Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 876
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
La dimensione dell'array è zero. Non dimenticare ArrayResize(), o semplicemente imposta la giusta dimensione per l'array
Salve,
L'immagine mostra:
Prima finestra Indicatore di volume, mettere Money Flow Index(10) in cima.
Ho fatto unindicatore separato, dove prendo di nuovo il volume, ricalcolo il mouwing con il volume e provo a fare come nella prima finestra - 25%, 50%, 75%.
Ho provato come l'ho fatto io, ma non è venuto bene.
Se qualcuno ha avuto problemi con questo, per favore condividete i vostri suggerimenti.
Grazie
#property indicator_separate_window #property indicator_buffers 2 #property indicator_minimum 0 #property indicator_width1 2 #property indicator_width2 2 #property indicator_color1 DodgerBlue #property indicator_color2 Yellow extern int MAPeriod = 30; double volum[],ma[]; //+------------------------------------------------------------------+ int init(){ int bars_count=WindowBarsPerChart(),volh; int bar=WindowFirstVisibleBar(); volh = Volume[iHighest(Symbol(),0,MODE_VOLUME,bar,0)]; SetIndexBuffer(0,volum); SetIndexBuffer(1,ma); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_LINE); SetLevelValue (0, volh*1.05); SetLevelValue (1, ((volh*1.05)/100)*75.0); SetLevelValue (2, ((volh*1.05)/100)*50.0); SetLevelValue (3, ((volh*1.05)/100)*25.0); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ /*int start(){ int limit; limit = Bars-IndicatorCounted()-1; for(int i=limit;i>=0;i--){ volum[i] = NormalizeDouble(Volume[i],0); ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0); } return(0); }*/ 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=rates_total-prev_calculated-1; if(i<0) i=0; while(i>=0){ if(i<rates_total-1) volum[i] = NormalizeDouble(Volume[i],0); ma[i] = NormalizeDouble(iMAOnArray(volum,0,MAPeriod,0,MODE_SMA,i),0); i--; } return(rates_total); }
Stava parlando della seconda barra meno. E il valore medio dei limiti. Vuole prendermi in giro, credo. Gli direi di andare a farsi fottere, sai cosa intendo :)
E aevillive e artmedia70 un enorme grazie. Per la vostra pazienza e il vostro tempo. Sono sicuro che non è solo la mia opinione su di te. Tutti quelli che vengono in questo thread chiedono aiuto e lo ottengono soprattutto da voi. Grazie.
Ciao, cari professionisti, è passato molto tempo da quando vi ho contattato
Il punto è che c'è un Expert Advisor con 2 muwks che si incrociano e nessuno si è preoccupato di aprire un ordine
vuoto Commercio()
{ double ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_,0), ma_slow=ma(Period__,Shift__,Method_MA__,Apply_to__,0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt))
{
if(sumSO>0 && !ClosePos(OP_SELL)) return;
se(MO(OP_BUY,GetLot(),GetComment())==-1) ritorno;
if(!ModifyByTicket(T)) return;
NumbUp=0; NumbDn=0;
}
else
e così via...
cioè se c'è un attraversamento della distanza, aprire un ordine
Ho bisogno di un codice per trovare il tempo dell'ultimo passaggio ...
poi dal momento attuale al tempo nella storia, cerca un ordine entro un certo periodo... e apre un ordine se non ne ha trovato uno
Ho esplorato il codice degli indicatori traccianti per questo scopo, tutto sembra essere chiaro lì
ma non so come cronometrare la prima barra dopo l'incrocio delle curve in modo che sia la più a destra
Sento che un operatore forte è necessario, ma non posso formularlo
Questo non è il modo di farlo. Chiamate iCustom per tutti e 3 i buffer, scrivete ogni valore nella propria variabile e poi fate quello che volete con questi valori.
Per le strisce di Bollinger, per la seconda barra, secondo l'esempio nella guida, non è necessario deselezionarle:
Grazie.
Ma a causa del mio analfabetismo devo sempre cercare nel mio manuale e ho scovato quanto segue: un indicatore personalizzato è un programma scritto secondo l'algoritmo dell'autore. E il tutorial dice che iCustomrestituisce il valore dell'indicatore personalizzato specificato.
Ma non uso nessun indicatore personalizzato (cioè, come ho capito, sviluppato da me).
Ho bisogno di recuperare i valori degli indicatori standard, se posso chiamarli così: media mobile, bande di Bollinger e oscillatore stocastico con i parametri che ho specificato. Naturalmente, lo faccio "ad istinto" - la prima cosa che ho trovato sarà applicata. Ma anche la variante da te suggerita non mi sembra adatta.
Non c'è una soluzione senza usare tutti quei buffer, array e loop? Sono come un masso nel mare - ci affondo subito.
Ciao, cari professionisti, è passato molto tempo da quando vi ho contattato
Il punto è che c'è un Expert Advisor con 2 muwks che si incrociano e nessuno si è preoccupato di aprire un ordine
vuoto Commercio()
{ double ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_,0), ma_slow=ma(Period__,Shift__,Method_MA__,Apply_to__,0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt))
{
if(sumSO>0 && !ClosePos(OP_SELL)) return;
se(MO(OP_BUY,GetLot(),GetComment())==-1) ritorno;
if(!ModifyByTicket(T)) return;
NumbUp=0; NumbDn=0;
}
else
e così via...
cioè, se c'è un attraversamento della distanza, aprire un ordine
Ho bisogno di un codice per trovare il tempo dell'ultimo passaggio ...
poi dal momento attuale al tempo nella storia, cerca un ordine entro un certo periodo... e apre un ordine se non ne ha trovato uno
Ho esplorato il codice degli indicatori traccianti per questo scopo, tutto sembra essere chiaro lì
ma non so come cronometrare la prima barra dopo l'incrocio delle curve in modo che sia la più a destra
Sento che un operatore forte è necessario, ma non posso formularlo
Questo Expert Advisor non funziona per intersezione. Il criterio è il seguente: se il МА veloce è superiore a quello lento di X pip e non c'è una posizione aperta, aprirla a mercato.
Per trovare l'incrocio, si dovrebbero sempre prendere due valori - la MA veloce/lenta prima dell'incrocio e la MA veloce/lenta dopo l'incrocio per scoprire quando si scambiano di posto, per così dire. In altre parole
if(FastMA_2<SlowMA_2 && FastMA_1>SlowMA_1) - МА veloce ha attraversato quello lento dal basso verso l'alto tra la 1° e la 2° battuta.
In un ciclo infinito, guarda dalla barra zero al rilevamento dell'incrocio, sarà X+1 barra, e hai bisogno del tempo della barra X, cioè la barra più recente dopo l'incrocio.
Grazie.
Ma, a causa del mio analfabetismo, devo sempre scavare nel libro di testo e questo è quello che ho scoperto: un indicatore personalizzato è un programma..., scritto secondo l'algoritmo dell'autore. E il tutorial dice che iCustomrestituisce il valore dell'indicatore personalizzato specificato.
Ma non uso nessun indicatore personalizzato (cioè, come ho capito, sviluppato da me).
Ho bisogno di recuperare i valori degli indicatori standard, se posso chiamarli così: media mobile, bande di Bollinger e oscillatore stocastico con i parametri che ho specificato. Naturalmente, lo faccio "ad istinto" - la prima cosa che ho trovato sarà applicata. Ma anche la variante da te suggerita non mi sembra adatta.
Non c'è una soluzione senza usare tutti quei buffer, array e loop? Sono come un masso nel mare - ci affondo subito.
Ciao, cari professionisti, è passato molto tempo da quando vi ho contattato
Il punto è che c'è un Expert Advisor con 2 muwks che si incrociano e nessuno si è preoccupato di aprire un ordine
vuoto Commercio()
{ double ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_,0), ma_slow=ma(Period__,Shift__,Method_MA__,Apply_to__,0);
if(sumBO==0 && ma_fast>ma_slow && (!Use_Distance || (Use_Distance && ND(ma_fast-ma_slow)>Distance*Pnt))
{
if(sumSO>0 && !ClosePos(OP_SELL)) return;
se(MO(OP_BUY,GetLot(),GetComment())==-1) ritorno;
if(!ModifyByTicket(T)) return;
NumbUp=0; NumbDn=0;
}
else
e così via...
cioè, se c'è un attraversamento della distanza, aprire un ordine
Ho bisogno di un codice per trovare il tempo dell'ultimo passaggio ...
poi dal momento attuale al tempo nella storia, cerca un ordine entro un certo periodo... e apre un ordine se non ne ha trovato uno
Ho esplorato il codice degli indicatori traccianti per questo scopo, tutto sembra essere chiaro lì
ma non so come cronometrare la prima barra dopo l'incrocio delle curve in modo che sia la più a destra
Sento che un operatore forte è necessario, ma non posso formularlo