Hey ragazzi,
I miei occhi sanguinano
Qualcuno può vedere cosa non va nel mio codice, ci sto provando da ore.
Errore quando allegato al grafico: array fuori intervallo - in questa riga: double current_high = High[current_bar_index];
Codice inserito int ThisBarTrade = 0;/ ------------------------------------------------ ------------------- /| Funzione di inizializzazione dell'indicatore personalizzato |/ ------------------------------------------------ ------------------- int OnInit() {/--- mappatura dei buffer degli indicatori/Ogni volta che l'indi viene ricaricato (es. passa da un TF all'altro, nuovo applica , ecc ...),/la barra corrente non viene verificata per le condizioni. ThisBarTrade = Tempo#91;0#93;;/--- return(INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| Funzione di deinizializzazione indicatore cliente |/ ------------------------------------------------ ------------------- int deinit() { return(0); }/ ---------------------------------------------- -------------------- /| Funzione di iterazione dell'indicatore personalizzato |/ ------------------------------------------------ ------------------- int OnCalculate(const int rate_total, const int prev_calculated, const datetime time#91;#93;, const double open#91;#93; , const double high#91;#93;, const double low#91;#93;, const double close#91;#93;, const long tick_volume#91;#93;, const long volume#91;#93; , const int spread#91;#93;) {/--- coppie di stringhe#91;#93;; lunghezza int = getAvailableCurrencyPairs(coppie); if (Barre != ThisBarTrade ) { ThisBarTrade = Barre;/assicura una sola opportunità di scambio per barra/Scorri i simboli for(int i=0; i lt; length; i ) {/Alert(Pair #, i 1, : , pairs#91;i#93; );/Ottieni index int current_bar_index = iHighest(coppie#91;i#93;, PERIOD_M5, MODE_HIGH, 1, 0); int previous_bar_index = iHighest(coppie#91;i#93;, PERIOD_M5, MODE_HIGH, 1, 1); int current_bar_index_low = iLowest(coppie#91;i#93;, PERIOD_M5, MODE_LOW, 1, 0); int previous_bar_index_low = iLowest(coppie#91;i#93;, PERIOD_M5, MODE_LOW, 1, 1);/Ottieni prezzi doppi current_high = High#91;current_bar_index#93;; double previous_high = High#91;previous_bar_index#93;; double current_low = Basso#91;current_bar_index_low#93;; double precedente_basso = basso#91;precedente_bar_index_basso#93;;/Logica - Inizia se (( precedente_basso 1.0 * Punto ) gt; corrente_basso || ( precedente_alto - 1.0 * Punto ) lt; corrente_alto ) { Alert(Pair #, i 1, : , pairs#91;i#93; , ha un massimo più alto o un minimo più basso); }/Logica - Fine }/per la lunghezza }/if Bars/--- restituisce il valore di prev_calculated per la chiamata successiva return(rates_total); }/ ---------------------------------------------- ------ // ------------------------------------------------ ------------------- int getAvailableCurrencyPairs(string availableCurrencyPairs#91;#93;) {/--- bool selezionato = false; const int symbolsCount = SymbolsTotal(selezionato); int currencypairsCount; ArrayResize(disponibileCurrencyPairs, symbolsCount); int idxCoppiaValuta = 0; for(int idxSymbol = 0; idxSymbol lt; symbolsCount; idxSymbol ) { string symbol = SymbolName(idxSymbol, selezionato); stringa firstChar = StringSubstr(simbolo, 0, 1); if(firstChar != # StringLen(symbol) == 6) { availableCurrencyPairs#91;idxCurrencyPair #93; = simbolo; } } currencypairsCount = idxCurrencyPair; ArrayResize(disponibileCurrencyPairs, currencypairsCount); restituire le coppie di valuteCount; }/ ---------------------------------------------- -------------------- classe CFix { } ExtFix;/Forza la valutazione delle espressioni durante il debug