Ciao a tutti, ho uno script che usa chiamate da una DLL esterna, che nello specifico conta le citazioni e crea un file con le quote necessarie, c'è un modo per far eseguire lo script su una pianificazione? Ho bisogno che funzioni ogni giorno a una certa ora?
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);
}
tara: 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 :)
La seconda elementare, la settima elementare, che ancora non sa che non esiste un paese del genere - la Bielorussia, è venuta agli alunni della prima elementare e alla kochetsya. E in risposta a qualsiasi domanda, semplicemente li manda o li ammonisce: devono imparare. Dovresti leggere attentamente sopra la porta in quale ramo ti trovi. Sto ancora imparando l'alfabeto, quindi non eccitatevi troppo, non capirei comunque.
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.
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.
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.
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.
Giusto, quando si usano le Bande di Bollinger, non è necessario chiamare iCustom, ma iBands dovrebbe essere chiamato separatamente per ogni linea dell'indicatore. Il modo alternativo senza chiamare l'indicatore ("senza usare buffer, array, loop") è quello di implementare nell'Expert Advisor l'algoritmo di calcolo di questo indicatore e leggere il valore desiderato quando necessario (è possibile leggere solo il valore desiderato, per esempio, solo la linea di fondo). Ma completamente senza loop e array tutti uguali non funzionerà.
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