Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
forexsowicz91
Pasjonat
Pasjonat
Posty: 504
Rejestracja: 25 lis 2011, 17:55

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: forexsowicz91 »

(Ask-Bid)/Point = wartość w pipsach
Przykład USD/CAD:
Ask=1.0286
Bid=1.0283

Czyli widzimy że spread = 3 pips.
Jeśli zrobimy Ask-Bid to wyjdzie 0.0003 i to będzie point
A jeśli zrobimy (Ask-Bid)/Point czyli podzielimy ten wynik dodatkowo przez 0.0001 to wyjdzie 3 i będzie 3 pips.
0.0003 / 0.0001 = 3 (sprawdź kalkulatorem)
To się zgadza, ale tak jak pisałem gdy pips=point, zaś gdy mamy np. notowania z 5 miejscami po przecinku to pips=10point.
przykład eur/usd, ask=1.40001, bid=1.40000, point=0.00001
(1.40010-1.40000)/0.00001=10,
a spread na eud/usd nie jest 10 tylko 1.

z6yszko
Gaduła
Gaduła
Posty: 266
Rejestracja: 17 sty 2011, 10:09

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: z6yszko »

forexsowicz91 pisze: To się zgadza, ale tak jak pisałem gdy pips=point, zaś gdy mamy np. notowania z 5 miejscami po przecinku to pips=10point.
przykład eur/usd, ask=1.40001, bid=1.40000, point=0.00001
(1.40010-1.40000)/0.00001=10,
a spread na eud/usd nie jest 10 tylko 1.
Co za różnica, przecież napisałem Ci jak sobie z tym poradzić. Wystarczy jeden if(), w którym mnożysz wszystkie potrzebne zmienne przez 10.

Awatar użytkownika
lolek
Gaduła
Gaduła
Posty: 335
Rejestracja: 26 lut 2008, 00:12

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: lolek »

Tak jak napisał kolega.
Musisz użyć ifa.

forexsowicz91
Pasjonat
Pasjonat
Posty: 504
Rejestracja: 25 lis 2011, 17:55

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: forexsowicz91 »

Kod: Zaznacz cały

tp=10;
sl=10;
if (Digits == 5 || Digits == 3) {tp = tp*10; sl = sl*10;}
Te tp i sl to chyba przy EA są potrzebne? Czy jak to rozumieć?

Ja zrobiłem jak poniżej:

Kod: Zaznacz cały

double spread;
if (Digits == 5 || Digits == 3)

spread=MarketInfo(Symbol(),MODE_SPREAD)/10;
else
spread=MarketInfo(Symbol(),MODE_SPREAD);

ObjectSetText("Spread", Spreadtekst+DoubleToStr(MarketInfo(Symbol(),spread),1));
Przy parach z Digits = 5 pokazuje teraz dobrze, ale przy parach z JPY liczby nie wiadomo skąd (w screnie)

I czy jest rozwiązanie aby liczyło poprawnie spread dla nP. sp500. W tym przypadku pips odpowiada dziesiątej części zaś point setnej. Gdy dam if (Digits == 2) to będzie kolidowało z JPY
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
investsoft.pl
Stały bywalec
Stały bywalec
Posty: 35
Rejestracja: 30 sie 2013, 11:38

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: investsoft.pl »

Drobny błąd się wkradł w ostatniej linii.

Zamiast:

Kod: Zaznacz cały

ObjectSetText("Spread", Spreadtekst+DoubleToStr(MarketInfo(Symbol(),spread),1));
powinno być:

Kod: Zaznacz cały

ObjectSetText("Spread", Spreadtekst+DoubleToStr(spread,1));

daamiian
Stały bywalec
Stały bywalec
Posty: 26
Rejestracja: 31 gru 2009, 00:42

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: daamiian »

Mam problem ze wskaźnikiem w którym jeden z buforów przyjmuje wartości funkcji iMAOnArray.
Po wrzuceniu na wykres wyświetla tylko jedną linie, a nie pojawia się średnia. Za każdym razem muszę wchodzić do metaeditora, kompiluje i wtedy linia ze średnią się pojawia. Dodatkowo w EA jeden z warunków zajęcia pozycji jest uzależniony od tego wskaźnika i niestety EA nie otwiera trejdów.

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

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Pierz Andrzej »

wrzuć kod to zobaczę co jest nie tak ;)
z poważaniem
Andrzej Pierz
FOREX-SERVICE

daamiian
Stały bywalec
Stały bywalec
Posty: 26
Rejestracja: 31 gru 2009, 00:42

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: daamiian »

Kod: Zaznacz cały

#property indicator_separate_window
#property indicator_buffers 2      
#property indicator_width1 1
#property indicator_width2 1
#property indicator_color1 Red
#property indicator_color2 Blue

double Buf_atr[];
double Buf_ma[];

int init()
  {
   SetIndexBuffer(0,Buf_atr);         
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(1,Buf_ma);         
   SetIndexStyle(1,DRAW_LINE);
   return(0);
  }
int deinit()
  {
   return(0);
  }
int start()
  {
   int    Counted_bars=IndicatorCounted();
   int i=Bars-Counted_bars-1;           
   
   while(i>=0)                      
    {
     Buf_atr[i]=iATR(NULL,0,14,i);
     Buf_ma[i]=iMAOnArray(Buf_atr,0,14,0,MODE_LWMA,i);
     i--;
    }
   return(0);
  }

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

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Pierz Andrzej »

zrób dwie pętle

w pierwszej przypisz wartości do Buf_atr a w drugiej dopiero licz z niej średnią i jako drugi parametr podaj Bars

tak jak jest w przykładzie MACD

Kod: Zaznacz cały

   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
   for(int i=0; i<limit; i++)
      MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
   for(i=0; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
z poważaniem
Andrzej Pierz
FOREX-SERVICE

daamiian
Stały bywalec
Stały bywalec
Posty: 26
Rejestracja: 31 gru 2009, 00:42

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: daamiian »

Dzięki wielkie, teraz działa jak powinno :)

ODPOWIEDZ