Rozjechane TF

O jezykach programowania w platformach i nie tylko.
dulf
Pasjonat
Pasjonat
Posty: 399
Rejestracja: 24 kwie 2010, 15:13

Rozjechane TF

Nieprzeczytany post autor: dulf »

Mam wskaźnik wyświetlający wygładzone RSI M5 , w tym wskaźniku dodany bufor
który nakłada RSI M1 na wykres M5 .Efekt jest taki że np. dobę wstecz dane M1 są przesunięte ok. 30 minut w stosunku do M5 w prawo.Wygląda tak jakby była różnica w ilości świeczek M5 i M1 z tego samego okresu (za mało M1).Przyjąłem że 5 świeczek przypada na jedną M5 , no ale się toto rozjeżdza .Wiem że AM robi przerwę i mam w ciągu doby niewielką lukę , ale 30 min nie może wynikać z krótkiej przerwy 5 min .Da się to jakoś poprawić , chodzi wykres historyczny bo bieżące wskazania są prawidłowe.

Kod: Zaznacz cały

     //M5
      for(i=limit;i>=0;i--)
      { 
         MABuffer1[i]  = iMA(Symbol(),TimeFrame,PERIOD_MA_BASE,0,MODE_RSI,MODE_PRICE,i);
      }
      for(i=limit;i>=0;i--)
      {
         RSIBuffer1[i] = iRSIOnArray(MABuffer1,0,PERIOD_RSI,i);
      }
      for(i=limit;i>=0;i--)
      {
         // wyświetlany buff RSI M5
         marsioma1[i]  = iMAOnArray(RSIBuffer1,0,PERIOD_MA,0,MODE_MA,i);
      }
      
      //-----
      //M1
      for(i=limit;i>=0;i--)
      {
         MABuffer2[i]  = iMA(Symbol(),PERIOD_M1,PERIOD_MA_BASE_2,0,MODE_RSI_2,MODE_PRICE_2,i);
      }
      for(i=limit;i>=0;i--)
      {
         RSIBuffer2[i] = iRSIOnArray(MABuffer2,0,PERIOD_RSI_2,i);
      }
      for(i=limit;i>=0;i--)
      {
         // Temp z danymi RSI M1
         marsiomaTemp[i]  = iMAOnArray(RSIBuffer2,0,PERIOD_MA_2,0,MODE_MA_2,i);
      }
      
      //-------------
      double a = 0 ;
      int tf = 0 ; 
      //------------
       for(i=limit;i>=0;i--)
      {
        a = 0 ;
        
          for(tf = 0 ; tf < 5 ; tf++)
          {
                a += marsiomaTemp[(i*5)+tf];

          }
       // Wyświetlany M1 usrednony na M5
        marsioma2[i] = a/5.0 ; 
       //lub co piąta świeca bez uśrednidnia 
       //marsioma2[i] =  marsiomaTemp[(i*5)]; 
Nie spiesz się , zawsze zdążysz stracić .

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

jezeli

Kod: Zaznacz cały

limit
jest tym czym mysle ze jest to przy nowej swieczce limt bedzie wynosil 1 na wykresie M5 a miedzy czasie bylo juz ~5 swieczek na M1 ...

pozatym zalozenie za na sieczke M5 przypada 5 swieczek na M1 jest mylne ....

pzdr Andrzej

dulf
Pasjonat
Pasjonat
Posty: 399
Rejestracja: 24 kwie 2010, 15:13

Nieprzeczytany post autor: dulf »

Ok.Więc zostawiłem na drugiej krzywej ten sam TF (M5), dałem period/5 , czyli szybszą średnią i wygląda że jest dobrze .(+ indeksy Buff 1:1)

Kod: Zaznacz cały

marsioma2[i] =  marsiomaTemp[i];
Pierz Andrzej pisze: pozatym zalozenie za na sieczke M5 przypada 5 swieczek na M1 jest mylne ....
Dlaczego :?: .
Nie spiesz się , zawsze zdążysz stracić .

Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

Nieprzeczytany post autor: xpep »

dulf pisze:Dlaczego .
masz noc mniejsza zmiennosc i przez 5 minut cena zmienia sie raz :wink:

Q600
Gaduła
Gaduła
Posty: 137
Rejestracja: 28 sie 2010, 03:57

Nieprzeczytany post autor: Q600 »

Musisz dodac jedna zmienna. Chociaz stosowanie M1 na M5 moze okazac sie trudne. No bo po prawdze to raz na 5 minut musisz pokazac wynik wskaznika M1... Ale z poczatku pieciominutowki czy z konca czy ze srodka???

Ale ponizej masz kod ktory kiedys sklecilem, na czymstam w necie sie wzorowalem ale nie pamietam na czym :) To chyba najprostszy sposob na robienie MTF. Mozne znajdziesz sposob jak zrobic MTF maly na duzym :)

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//|                                          MULTI TIMEFRAME STS.mq4 |
//|                                                             Q600 |
//|                                          www.soundcloud.com/q600 |
//+------------------------------------------------------------------+
#property copyright "Q600"
#property link      "www.soundcloud.com/q600"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Aqua
#property indicator_color2 Blue
#property indicator_color3 Red
#property indicator_color4 Orange

double ExtBuffer0[], ExtBuffer1[], ExtBuffer2[], ExtBuffer3[];
//#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
if(!SetIndexBuffer(0,ExtBuffer0) && !SetIndexBuffer(1,ExtBuffer1) && !SetIndexBuffer(2,ExtBuffer2) && !SetIndexBuffer(3,ExtBuffer3)) return(-1);
//----
   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   datetime TimeArrayH4[], TimeArrayH1[];
   int      iH4, limitH4, yH4=0, cbarsH4 = IndicatorCounted(), iH1, limitH1, yH1=0, cbarsH1 = IndicatorCounted();
   ArrayCopySeries(TimeArrayH4,MODE_TIME,NULL,PERIOD_H4);
   ArrayCopySeries(TimeArrayH1,MODE_TIME,NULL,PERIOD_H1);
   if (Period()<=PERIOD_H4)
   {
   if(cbarsH4<0) return(-1);
   if(cbarsH4>0) cbarsH4--;
   limitH4=Bars-cbarsH4+240/Period();
   for(iH4=0,yH4=0;iH4<limitH4;iH4++)
   {
    if (Time[iH4]<TimeArrayH4[yH4]) yH4++; 
      {
         ExtBuffer0[iH4]=iStochastic(NULL,PERIOD_H4,14,3,5,MODE_LWMA,1,MODE_MAIN,yH4);
         ExtBuffer1[iH4]=iStochastic(NULL,PERIOD_H4,7,3,3,MODE_LWMA,1,MODE_MAIN,yH4);
         
      }
   }
   }
   
   if (Period()<=PERIOD_H1)
   {
   if(cbarsH1<0) return(-1);
   if(cbarsH1>0) cbarsH1--;
   limitH1=Bars-cbarsH1+60/Period();
   for(iH1=0,yH1=0;iH1<limitH1;iH1++)
   {
    if (Time[iH1]<TimeArrayH1[yH1]) yH1++; 
      {
         ExtBuffer2[iH1]=iStochastic(NULL,PERIOD_H1,14,3,5,MODE_LWMA,1,MODE_MAIN,yH1);
         ExtBuffer3[iH1]=iStochastic(NULL,PERIOD_H1,7,3,3,MODE_LWMA,1,MODE_MAIN,yH1);
      }
   }
   }
     
//----
   return(0);
  }
//+------------------------------------------------------------------+

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

dulf pisze:Pierz Andrzej napisał:

pozatym zalozenie za na sieczke M5 przypada 5 swieczek na M1 jest mylne ....


Dlaczego .
a no jak przez minute nie naplynie nowy tick ( brak zmiennosci) to nie powstanie nowa swieca ;)

prosty kod pokazujacy ilosc swieczek M1 na danym TF

Kod: Zaznacz cały

for (int i=0;i<=Bars;i++)
   {
      int sum = 0;
      for (int j=0;j<Period();j++)
      {
         if (iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),Period(),i)+(60 * j),true) != -1) sum++;
      }
      ExtMapBuffer1[i] = sum;
   }
pzdr Andrzej
z poważaniem
Andrzej Pierz
FOREX-SERVICE

dulf
Pasjonat
Pasjonat
Posty: 399
Rejestracja: 24 kwie 2010, 15:13

Nieprzeczytany post autor: dulf »

A , takie jaja .Dzięki.
@Q600
Nie ma problemu z nałożeniem M1 na M5 .Średnia Rsi M1 o okresie np. 20 odpowiada na wykresie M5 średniej Rsi M5 20/5 .Więc szkoda sie bawić w liczenie świeczek ,komplikować kod i nakładać "bezpośrednio" jeden TF na drugi bo efekt jest ten sam .
Nie spiesz się , zawsze zdążysz stracić .

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

dulf pisze:Średnia Rsi M1 o okresie np. 20 odpowiada na wykresie M5 średniej Rsi M5 20/5 .
nie ma nic bardziej mylnego ;)

wrzuc na wykresy i zobacz ze tak nie jest ;)

pzdr Andrzej
z poważaniem
Andrzej Pierz
FOREX-SERVICE

dulf
Pasjonat
Pasjonat
Posty: 399
Rejestracja: 24 kwie 2010, 15:13

Nieprzeczytany post autor: dulf »

Jest , sprawdzałem ,zgadza się zarówno pod względem kształtu jak i osi czasu .
Nie spiesz się , zawsze zdążysz stracić .

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

dulf pisze:Jest , sprawdzałem ,zgadza się zarówno pod względem kształtu jak i osi czasu .
hmmm jezeli dobrze zrozumialem to RSI 20 (M1) == RSI 4(M5) ??

pzdr Andrzej

ODPOWIEDZ