Salve, potreste consigliarmi per favore, nel codice qui sotto senza il blocco di loop (che viene dopo il CopyByffer), l'indicatore funziona normalmente, ma se si include un ciclo confrontando il prezzo di una candela con il prezzo di una delle barre, le barre stesse dopo l'inizio non vengono visualizzate, quale potrebbe essere il problema?
#property indicator_chart_window#property indicator_buffers3#property indicator_plots3#property indicator_type1DRAW_LINE#property indicator_color1 Olive
#property indicator_type2DRAW_LINE#property indicator_color2 Green
#property indicator_type3DRAW_LINE#property indicator_color3 Olive
inputint peroid = 20; // период полос 1inputint bands_shift= 0; // смещение полос 1 inputdouble deviation = 2.3; // отклонение полос 1inputENUM_APPLIED_PRICE applied_price=PRICE_CLOSE; // тип цены double Base[]; // массив для BASE_LINE индикатора iBandsdouble Upper[]; // массив для UPPER_BAND индикатора iBandsdouble Lower[]; // массив для LOWER_BAND индикатора iBandsint iBands1_handle; //Указатель на первый индикатор int iBands2_handle; //Указатель на первый индикатор int g_i_Window;
intOnInit()
{
g_i_Window=ChartWindowFind();
SetIndexBuffer(0,Base,INDICATOR_DATA);
SetIndexBuffer(1,Upper,INDICATOR_DATA);
SetIndexBuffer(2,Lower,INDICATOR_DATA);
iBands1_handle=iBands(NULL,PERIOD_CURRENT,peroid,bands_shift,deviation,applied_price);
if(iBands1_handle==INVALID_HANDLE){
Alert("Неудалось загрузить индикатор, повторите попытку");
return(-1);
}
return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate (constint rates_total, // размер входных таймсерий constint prev_calculated, // обработано баров на предыдущем вызовеconstdatetime& time[], // Time constdouble& open[], // Open constdouble& high[], // High constdouble& low[], // Low constdouble& close[], // Close constlong& tick_volume[], // Tick Volume constlong& volume[], // Real Volume constint& spread[]) // Spread
{
int i;
int shift = 0;
int shift1;
int shift2;
int shift3;
string alert;
double O, O1, O2, C, C1, C2, L, L1, L2, H, H1, H2;
shift1 = shift;
shift2 = shift + 1;
shift3 = shift + 2;
O = open[shift1];
O1 = open[shift2];
O2 = open[shift3];
H = high[shift1];
H1 = high[shift2];
H2 = high[shift3];
L = low[shift1];
L1 = low[shift2];
L2 = low[shift3];;
C = close[shift1];
C1 = close[shift2];
C2 = close[shift3];
i = (prev_calculated==0)?1: prev_calculated;
i = (prev_calculated==rates_total)?rates_total-1: i;
CopyBuffer(iBands1_handle,0,0,rates_total-1,Base);
CopyBuffer(iBands1_handle,1,0,rates_total-1,Upper);
CopyBuffer(iBands1_handle,2,0,rates_total-1,Lower);
for (i = i; i < rates_total; i++)
{
if(H > L && O > Lower[i])
{
int time_waiting = (int)TimeLocal() + 1;
while(TimeLocal() < time_waiting){}
Comment("True");
return(0);
}
elseComment("False");
}
if (prev_calculated==0) ChartRedraw();
return(rates_total);
}
In una situazione avevo bisogno di fare barre colorate o candele colorate. Usano 4 buffer di valore e 1 buffer di colore. L'altro, avevo bisogno di visualizzare una linea colorata, dove 1 buffer di valore e 1 buffer di colore.
Chiamare e modificare le proprietà dell'indicatore provoca l'inizializzazione dell'indicatore. Di conseguenza, se le impostazioni contengono barre o candele, allora un'opzione di inizializzazione. Se la linea, l'altra opzione di inizializzazione.
È impossibile cambiare il numero di buffer nel mezzo dell'indicatore, che è quello che ha detto Alexey Vyazmikin senza essere a conoscenza delle altre opzioni.
In una situazione avevo bisogno di fare barre colorate o candele colorate. Usano 4 buffer di valore e 1 buffer di colore. L'altro, avevo bisogno di visualizzare una linea colorata, dove 1 buffer di valore e 1 buffer di colore.
Chiamare e modificare le proprietà dell'indicatore provoca l'inizializzazione dell'indicatore. Di conseguenza, se le impostazioni contengono barre o candele, allora un'opzione di inizializzazione. Se una linea, allora un'altra opzione di inizializzazione.
È impossibile cambiare il numero di buffer nel mezzo dell'indicatore, che è quello che ha detto Alexey Vyazmikin, senza essere a conoscenza di altre opzioni.
Se si decide di scrivere il mio cognome in russo, suona come Vyazmikin.
Per quanto riguarda i miei sospetti - penso che la risposta sia corretta alla domanda posta. Senza una spiegazione dei bisogni non ha senso dire il contrario. La reinizializzazione è un riavvio del programma, è chiaro che si può cambiare qualcosa nelle impostazioni.
Se si sceglie di scrivere il mio cognome in russo, suona come Vyazmikin.
Per quanto riguarda i miei sospetti - credo che la risposta alla domanda posta sia corretta. Senza una spiegazione dei bisogni, non ha senso dire il contrario. La reinizializzazione è un riavvio del programma, è chiaro che si può cambiare qualcosa nelle impostazioni.
La mancanza di un segno morbido offende così tanto?
Ho parlato di scorrettezza, secondo me ho sottolineato esattamente la correttezza della risposta.
La mancanza di un segno morbido offende così tanto?
Sono guidato dall'illuminazione, non dall'offesa. Perché dovrei essere offeso, sai come si scrive e vuoi offendermi? Non ho nemmeno preso in considerazione questa opzione, è stato per niente?
Sono motivato dall'illuminazione, non dal risentimento. Perché dovrei essere offeso, sapevi scrivere correttamente e volevi offendermi? Non ho nemmeno preso in considerazione questa opzione, è stato per niente?
Salve, potreste consigliarmi per favore, nel codice qui sotto senza il blocco di loop (che viene dopo il CopyByffer), l'indicatore funziona normalmente, ma se si include un ciclo confrontando il prezzo di una candela con il prezzo di una delle barre, le barre stesse dopo l'inizio non vengono visualizzate, quale potrebbe essere il problema?
Risultato:
Non si può.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Bug, bug, domande
Alexey Viktorov, 2018.05.30 15:53
Beh, non proprio in modo dinamico, ma una volta attraverso la reinizializzazione è possibile. L'ho fatto.
Se puoi approfondire, per favore descrivi
se puoi essere più specifico
Quanto più dettagliato?
In una situazione avevo bisogno di fare barre colorate o candele colorate. Usano 4 buffer di valore e 1 buffer di colore. L'altro, avevo bisogno di visualizzare una linea colorata, dove 1 buffer di valore e 1 buffer di colore.
Chiamare e modificare le proprietà dell'indicatore provoca l'inizializzazione dell'indicatore. Di conseguenza, se le impostazioni contengono barre o candele, allora un'opzione di inizializzazione. Se la linea, l'altra opzione di inizializzazione.
È impossibile cambiare il numero di buffer nel mezzo dell'indicatore, che è quello che ha detto Alexey Vyazmikin senza essere a conoscenza delle altre opzioni.
Quanti altri dettagli?
In una situazione avevo bisogno di fare barre colorate o candele colorate. Usano 4 buffer di valore e 1 buffer di colore. L'altro, avevo bisogno di visualizzare una linea colorata, dove 1 buffer di valore e 1 buffer di colore.
Chiamare e modificare le proprietà dell'indicatore provoca l'inizializzazione dell'indicatore. Di conseguenza, se le impostazioni contengono barre o candele, allora un'opzione di inizializzazione. Se una linea, allora un'altra opzione di inizializzazione.
È impossibile cambiare il numero di buffer nel mezzo dell'indicatore, che è quello che ha detto Alexey Vyazmikin, senza essere a conoscenza di altre opzioni.
Se si decide di scrivere il mio cognome in russo, suona come Vyazmikin.
Per quanto riguarda i miei sospetti - penso che la risposta sia corretta alla domanda posta. Senza una spiegazione dei bisogni non ha senso dire il contrario. La reinizializzazione è un riavvio del programma, è chiaro che si può cambiare qualcosa nelle impostazioni.
Se si sceglie di scrivere il mio cognome in russo, suona come Vyazmikin.
Per quanto riguarda i miei sospetti - credo che la risposta alla domanda posta sia corretta. Senza una spiegazione dei bisogni, non ha senso dire il contrario. La reinizializzazione è un riavvio del programma, è chiaro che si può cambiare qualcosa nelle impostazioni.
La mancanza di un segno morbido offende così tanto?
Ho parlato di scorrettezza, secondo me ho sottolineato esattamente la correttezza della risposta.
Potete dirmi se si tratta di una figura realistica di tester? Ed è un buon o cattivo risultato per un anno con un deposito di 3000$?
La mancanza di un segno morbido offende così tanto?
Sono guidato dall'illuminazione, non dall'offesa. Perché dovrei essere offeso, sai come si scrive e vuoi offendermi? Non ho nemmeno preso in considerazione questa opzione, è stato per niente?
Sono motivato dall'illuminazione, non dal risentimento. Perché dovrei essere offeso, sapevi scrivere correttamente e volevi offendermi? Non ho nemmeno preso in considerazione questa opzione, è stato per niente?
Pace, amicizia, gomme da masticare.
Pace, amicizia, gomma.
E i mezzi litri?