mam następujący problem. Przepisuję wskaźnik RSI z MT4 na inny język programowania i chciałem sprawdzić to co przepisałem, odtwarzając po kolei wartości jakie są w trakcie przeliczania RSI.
Plik RSI z MT4 załączam do postu.
Fragment, którego działanie nie jestem w stanie zrozumieć i wytłumaczyć, to:
Kod: Zaznacz cały
//+------------------------------------------------------------------+
//| Relative Strength Index |
//+------------------------------------------------------------------+
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,pos;
double diff;
//---
if(Bars<=InpRSIPeriod || InpRSIPeriod<2)
return(0);
for (int l = 0; l < rates_total; l++) // MY OWN LOOP
{
Print("passed variable to func: time[" + l + "] = " + time[l] + ", close[" + l + "] = " + close[l]);
Print("Global variable: Time[" + l + "] = " + Time[l] + ", Close[" + l + "] = " + Close[l]);
// w powyższych printach wszystko jest OK, wartości cen zamknięcia dla zmiennej predefiniowanej Close[] i przekazanej do funkcji close[] jest taka sama
}
//--- counting from 0 to rates_total
ArraySetAsSeries(ExtRSIBuffer,false);
ArraySetAsSeries(ExtPosBuffer,false);
ArraySetAsSeries(ExtNegBuffer,false);
ArraySetAsSeries(close,false);
for (int l = 0; l < rates_total; l++) // MY OWN LOOP
{
// poniżej tablica close[] przekazana do funkcji. Jej wartości RÓŻNIĄ SIĘ od wartości z wcześniejszego wypisania, czyli od wartości tablicy predefiniowanej Close[]
Print("passed variable to func: time[" + l + "] = " + time[l] + ", close[" + l + "] = " + close[l]);
// poniżej tablica Close[] predefiniowana
Print("Global variable: Time[" + l + "] = " + Time[l] + ", Close[" + l + "] = " + Close[l]);
}
//--- preliminary calculations
Jednakże, czy ona zmienia wartości tablicy? Według mnie - nie powinna. Jeśli jestem w błędzie, to proszę, poprawcie mnie. Jeśli mam rację to proszę, wytłumaczcie skąd ta zmiana wartości.
Jest to dla mnie bardzo ważne, bo przepisałem sobie wskaźnik na inny język i chciałem go przetestować tymi samymi wartościami, ale niestety wartości RSI w MT4 zmieniają się w magiczny sposób..
Pozdrowienia,
monte