"formatowanie" double oraz wartość Open i Close

O jezykach programowania w platformach i nie tylko.
pin54
Stały bywalec
Stały bywalec
Posty: 22
Rejestracja: 28 sie 2010, 17:30

"formatowanie" double oraz wartość Open i Close

Nieprzeczytany post autor: pin54 »

Cześć

To mój pierwszy post zdaje się więc witam wszystkich przy okazji :)

Spraw pierwsza, bo nie wiem czy dobrze rozumiem: Open Close to są wartości otwarcia i zamknięcia dla danego okresu?(5 min, 30min, 1h, 4h itd ?)

Sprawa druga: mam alarm, który ma zadzwonić jeżeli wartość wskaźnika będzie pomiędzy Open i Close (czyli wykres wskaźnika przecina wykres ceny - hmmmm... właśnie sobie pomyślałem że jak akurat trafię na okno to nic z tego nie będzie, ale to na końcu ).
Na alarmie chcę wyświetlić wartość Open, Close i warość wskaźnika, no i z tym nie ma problemu, jedyny problem jest taki, że jeżeli te wartości wyświetlam w oknie wykresu to są automatycznie "formatowane" i pokazuje 4 znaki po przecinku, natomiast na alarmie pokazuje ich 8 i "nic nie widzę" (double zostało zaokrąglone za pomocą NormalizeDouble do 4 znaków).



Wracając do Open i Close, czy aby zabezpieczyć się przed oknem na przecięciu wykresów mogę odwołać się do ceny poprzedniego okresu np. Open[i-1], zadziała to ?

Z góry dzieki za odpowiedzi.

Awatar użytkownika
Asia
Gaduła
Gaduła
Posty: 319
Rejestracja: 09 gru 2009, 02:00

Nieprzeczytany post autor: Asia »

Spraw pierwsza, bo nie wiem czy dobrze rozumiem: Open Close


Open[0] - to aktualna swieca
Open[1] - to poprzednia
itd
jeżeli interwał nie jest zdefiniowany to bierze jaki masz w oknie
i tak samo z parą

spokojnie możesz pracowac na świecy juz zamknietej czyli [1]
tym bardziej że dla biezacej close nie będzie znane

natomiast termin "okno" nie wiem co przez to rozumiesz
niech ci wyswietla powiedzmy
wszystkie dane w lewym rogu i reszta cie nie interesuje
ustawiasz automatyczne przesuwanie wykresu (chyba 4 czy 5 ikona na pasku u góry)
i zawsze jesteś na biezacej swiecy

alarmy wydaja sie fajne na poczatku
potem jak Cie zapikają masz dosyć hałasu
Czytaj p o w o l i
Dzień dobry, nazywam się ... jestem anonimowym hazardzistą/ką, gram na Forexie
Obrazek

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

Nieprzeczytany post autor: xpep »

pin54 pisze:Spraw pierwsza, bo nie wiem czy dobrze rozumiem: Open Close to są wartości otwarcia i zamknięcia dla danego okresu?(5 min, 30min, 1h, 4h itd ?)


iClose("EURUSD",30,1)

"EURUSD" - para walutowa
30 - z jakiego wykresu bierzesz wartosc w tym przykladzie jest to wykres 30 minutowy
1 - ktora swieca czyli 2 od prawej na wykresie a pierwsza jest 0

close[1] - to skrocona wersja bierze cene z wykresu na ktorym odpalony jest ea

pin54 pisze:natomiast na alarmie pokazuje ich 8 i "nic nie widzę" (double zostało zaokrąglone za pomocą NormalizeDouble do 4 znaków).


daj moze kod to bedzie jasne co jest nie tak
pin54 pisze:Wracając do Open i Close, czy aby zabezpieczyć się przed oknem na przecięciu wykresów mogę odwołać się do ceny poprzedniego okresu np. Open[i-1], zadziała to ?


tak porownojesz

Kod: Zaznacz cały

 if( close[1]-open[0] > 5*Point) Print("Mamy luke wiekszą niż 5 pips");


Dodano po 48 sekundach:
Asia pisze:natomiast termin "okno" nie wiem co przez to rozumiesz
a nie odsylalas czasem kogos zeby doczytal o cieniu i ciele swiecy :D wiec odsylam Cie do tej samej literatury

Awatar użytkownika
Asia
Gaduła
Gaduła
Posty: 319
Rejestracja: 09 gru 2009, 02:00

Nieprzeczytany post autor: Asia »

myslisz o luce między ciałami ?
Czytaj p o w o l i
Dzień dobry, nazywam się ... jestem anonimowym hazardzistą/ką, gram na Forexie
Obrazek

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

jeśli chcesz wyłapać przecięcia wskaźnika to zawsze z ceną obecną i poprzednią zarówno ceny jak i wskaźnika aha i nie zapomnij że równanie musi mieć znak równości w sobie np <=
Co do samego zaokroąglenia to wystarczy że zamiast przecinka rozdzielającego zmienne dasz "+" (i o ile potrzeba to konwersję na string)
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

pin54
Stały bywalec
Stały bywalec
Posty: 22
Rejestracja: 28 sie 2010, 17:30

Nieprzeczytany post autor: pin54 »

@Asia - pisząc okno miałem na myśli formację. Pisząc okno wykresu miałem na myśli tą część interfejsu w której jest wykres :). Co do alarmów, to może i masz rację, ale chcę sobie trochę zautomatyzować wszystko i na czymś się trzeba uczyć.

@xpep - kod na końcu. Skoro w porównaniu używasz "Point" to pewnie jest w tym jakiś cel ?

@Tig3r - hmmm... zrobiłem to trochę inaczej, dlatego jak byś zerknął byłbym wdzięczny. Użyłem tylko jednej ceny wskaźnika i dwóch cen waluty (z dwóch okresów) - być może pominąłem jakąś możliwość ?. Jeżeli chodzi o formatowanie to rozwiązałeś mój problem :) Zamiany na string próbowałem już wcześniej, bez rezultatu, ale zamiana "+" na "," załatwiła sprawę.


Poniżej kod (wycinek). Jest to Vegas 1h, ja chciałem tylko trochę zmodyfikować alarmy bo nie dzwoniły tak jak bym sobie życzył.
Niestety okazało się, że najwyraźniej nic z tego nie rozumiem, dlatego opiszę swoimi słowami, a Wy jeżeli mogę prosić wyprowadźcie mnie z błędu.

Zakładam, że funkcja działa okresowo (co zmiana ceny zapewne), w tym momencie następuje zliczenie ilości świec, które nie uległy zmianie od ostatniego wywołania funkcji (czyli jeżeli okno jest non stop włączone to zmianie ulega tylko jeden słupek, a więc będzie tylko jedna pętla dla for, bo reszta wykresu jest w pamięci). Czyli, jak włączam program po kilku dniach to robi kilkadziesiąt pętli, a reszta wykresu jest ładowana z pamięci (?). Jeżeli mamy więcej słupków to wszystkie odwołania do tablicy z indeksem 0 np. ExtMapBuffer1[0] oznaczają odwołanie się do najświeższych danych ?

W takim razie
j (czyli świca wcześniejsza) powinno się równać i +1, bo "cofamy się do przodu" :) (chyba czas spać :) )

Kolejna sprawa to to, że zdaje się nie można zrobić porównania np.
if ( 3 > i >1) tylko trzeba if ( 3 > i && i > 1) - straciłem na tym chyba z godzinę :)

Ogólnie jeszcze nie wiem czy alarm działa tak jak należy. Na pewno do poprawy jest sam fakt że jak już znajdzie się na przecięciu to mam w ciągu minuty kilkanaście takich samych alarmów.

Kod: Zaznacz cały

int start()
  {
   int limit;
   int j;
   int    counted_bars=IndicatorCounted();
  //---- check for possible errors
   if(counted_bars<0) return(-1);
  //---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
  //---- main loop
     for(int i=0; i<limit; i++)
       {
       j = i+1;
        //---- ma_shift set to 0 because SetIndexShift called abowe
         ExtMapBuffer1[i]=iMA(NULL,0,144,0,MODE_EMA,PRICE_CLOSE,i);
         ExtMapBuffer2[i]=iMA(NULL,0,169,0,MODE_EMA,PRICE_CLOSE,i);
         
         //Model #1 34,55,89
         if(RiskModel==1)
         {
            ExtMapBuffer3[i]=ExtMapBuffer2[i]+34*Point;
            ExtMapBuffer4[i]=ExtMapBuffer2[i]+55*Point;
            ExtMapBuffer5[i]=ExtMapBuffer2[i]+89*Point;
            
            ExtMapBuffer6[i]=ExtMapBuffer2[i]-34*Point;
            ExtMapBuffer7[i]=ExtMapBuffer2[i]-55*Point;
            ExtMapBuffer8[i]=ExtMapBuffer2[i]-89*Point;    
         }
         Comment("\nRISK MODEL #",RiskModel," (1-4)\n\nEMA144 - ",ExtMapBuffer1[limit],"\nEMA169 - ",ExtMapBuffer2[limit],
         "\n\nF+1 - ",ExtMapBuffer3[limit],"\nF+2 - ",ExtMapBuffer4[limit],
         "\nF+3 - ",ExtMapBuffer5[limit],"\n\nF-1 - ",ExtMapBuffer6[limit],
         "\nF-2 - ",ExtMapBuffer7[limit],"\nF-3 - ",ExtMapBuffer8[limit]);
       }
       
       //+--------------------------------------------------------------------------+
       //-                          ALERTS    PlaySound("alert.wav");               -
       //+--------------------------------------------------------------------------+
      if(Alerts && Open[i] > 0)
      {
//alram dla przecięcia z liniami tunelu (dla "fibonaciego" analogicznie będzie
         
         if( (MathMax(Close[i],Open[i])>=ExtMapBuffer1[i] && ExtMapBuffer1[i] >= MathMin(Close[i],Open[i]) ) ||
            (MathMax(Open[j],Open[i]) >= ExtMapBuffer1[i] && ExtMapBuffer1[i] >= MathMin(Close[j],Close[i]) ) )
         {
            PlaySound("alleluja.wav");
            Alert(Symbol()+ " tunel EMA 144 = " +ExtMapBuffer1[i]+ " [" +Open[j]+ ";" +Close[j]+ "] " + " [" +Open[i]+ ";" +Close[i]+ "] " + TimeHour(Time[j])+ ":" + TimeMinute(Time[j]) + " " + TimeHour(Time[i])+ ":" + TimeMinute(Time[i]) );
           
         }
         
         if( (MathMax(Close[i],Open[i])>=ExtMapBuffer2[i] && ExtMapBuffer2[i] >= MathMin(Close[i],Open[i]) ) ||
            (MathMax(Open[j],Open[i]) >= ExtMapBuffer2[i] && ExtMapBuffer2[i] >= MathMin(Close[j],Close[i]) ) )
         {
            PlaySound("alleluja.wav");            
            Alert(Symbol() + " tunel EMA 169 = " +ExtMapBuffer2[i]+ " [" +Open[j]+ ";" +Close[j]+ "] " + " [" +Open[i]+ ";" +Close[i]+ "] " + TimeHour(Time[j])+ ":" + TimeMinute(Time[j]) + " " + TimeHour(Time[i])+ ":" + TimeMinute(Time[i]) );
         }
      }

  //---- done

//----
   
//----
   return(0);
  }

Awatar użytkownika
Asia
Gaduła
Gaduła
Posty: 319
Rejestracja: 09 gru 2009, 02:00

Nieprzeczytany post autor: Asia »

na buforach nigdy nie pracowałam
nic Ci tu nie pomogę
Na pewno do poprawy jest sam fakt że jak już znajdzie się na przecięciu to mam w ciągu minuty kilkanaście takich samych alarmów.
uzyj == dla wywołania alarmu wtedy nie bedzie tak ciągle grało
jest tylko ryzyko, że ja pójdziesz się np. odsikać, a wtym czasie raz zapika
i pójdzie dalej to przeoczysz

jako zwolennicza automatów i leniwiec
proponuję wszystko zautomatyzować
po co ma trabic alarm
po co masz podchodzić i cos robic ręcznie
niech wszystko odbywa sie automatycznie
trzeba tylko miec ze dwa niezalezne sklonowane stanowiska
wtedy jak np. na jednym nawali elekrtownia
drugie nadal chodzi
ja np. mam w 2 róznych miastach
Czytaj p o w o l i
Dzień dobry, nazywam się ... jestem anonimowym hazardzistą/ką, gram na Forexie
Obrazek

Awatar użytkownika
Cyb
Przyjaciel Forum
Przyjaciel Forum
Posty: 1907
Rejestracja: 25 mar 2009, 20:41

Nieprzeczytany post autor: Cyb »

No jak widać Twoja koncepcja jest słuszna. -755%...

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

Nieprzeczytany post autor: xpep »

Cyb pisze:No jak widać Twoja koncepcja jest słuszna. -755%...
tu nie chodzi o koncepcje, automatyzacja jest cudowna ale prawda jest taka ze trzeba miec co automatyzowac
pin54 pisze:@xpep - kod na końcu. Skoro w porównaniu używasz "Point" to pewnie jest w tym jakiś cel ?
tak jak 5*Point daje 5 pipsow tak jak napisalem w komentarzu :D

Generalnie masz duzo roznych pytan co jak dziala, tez tak mialem na poczatku, wtedy dostalem od pewnego kolezki rozwiazanie na wszystko, Print i Comment, pierwsza w dzienniku wypisuje a druga na wykresie

pin54
Stały bywalec
Stały bywalec
Posty: 22
Rejestracja: 28 sie 2010, 17:30

Nieprzeczytany post autor: pin54 »

Prawdopodobnie się wszystkiego zautomatyzować nie da, a nawet jeżeli to nie jestem pewien czy mam tyle czasu i umiejętności, żeby napisać program, który będzie rozpoznawał formacje itp. (to nie będzie 50 czy 100 linii kodu tylko "pełnowymiarowa aplikacja" - zakładając, że ma być w pełni automatyczne, ofkorz wymóg, że ma być skuteczna, to chyba potrzebna jest sztuczna inteligencja :| ), a nawet jeżeli się da to na razie nie mam takiej wiedzy teoretycznej i doświadczenia na giełdzie żeby do tego podchodzić.

W moim wypadku idealnym rozwiązaniem są alarmy, które oszczedzają mi czas ciągłego siedzenia przed komputerem, który mogę poświęcić na naukę (i pisanie pracy inż.). Pierwszy punkt to skuteczny, działający alarm na przecięciach, który będzie generowany zawsze i który będzie jednokrotny dla każdej świecy. Kolejny punkt to automatyczna wiadomość email (a może sms z jakiejś bramki by dało rade podpiąć :) )

Tyle na początek. Później wezmę się ewentualnie za automatyczne zwiększanie poziomów SL przy zamykaniu poziomów o mniejszym TP.

Alarmu nie przeoczę bo wyskakuje mi okienko z alarmem przecież. Ale (na chłopski rozum, czyli zgodnie z moim aktualnym stanem wiedzy) ustawienie wskaźnik==cena.zamknięcia zadziała tylko wtedy kiedy cena będzie równa co do jednego punktu wskaźnikowi, a ponieważ cena nie rośnie/maleje co pipsa tylko o ilości tych pipsów bliżej nie przewidywalne to prawdopodobieństwo zadziałania tego alarmu nie jest = 1, a to dla mnie stanowczo za mało. To po pierwsze. Po drugie w przypadku odpalenia programu po kilku godzinach cena zamknięcia dla danej świeczki jest już ustalona i prawdopodobieństwo że jest identyczna jak cena wskaźnika jest raczej bliżej 0 niż 1, a to oznacza, że w ogóle nie zobaczę alarmów za ten czas kiedy komputer był wyłączony.

Tyle.

Ps. a może ktoś już ma takie skrypty, albo chociaż coś podobnego i chciałby się podzielić ?

EDIT:
Generalnie masz duzo roznych pytan co jak dziala, tez tak mialem na poczatku, wtedy dostalem od pewnego kolezki rozwiazanie na wszystko, Print i Comment, pierwsza w dzienniku wypisuje a druga na wykresie
Tego mi brakowało :)

ODPOWIEDZ