Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

Chyba coś namieszałem :

Kod: Zaznacz cały

double MA1 = iMA(Symbol(),Period(),14,0,0,0,0);
double MA2 = iMA(Symbol(),Period(),14,0,0,0,0); 
double MA1a = iMA(Symbol(),Period(),14,0,0,0,1);
double MA2a = iMA(Symbol(),Period(),14,0,0,0,1); 
double przeciecie = (MA1>MA2&&MA1a<=MA2a);
datetime przeciecie = Time[1];
int swieca = iBarShift(Symbol(),Period(),Time[1]);
Comment
   (
   "\n"+
   "Hi "+High[swieca]
   +"\n"+
   "Lo "+Low[swieca]
Nie działa. Nie wiem jak mam okreslic w tym wypadku samo przecięcie.
Nie wiem co mam wstawić w ostatnia pozycję nawiasu iBarShift. Tam powinna znajdować się pozycja świecy której szukamy ?
Solą życia jest kasa.

Awatar użytkownika
thisredone
Stały bywalec
Stały bywalec
Posty: 72
Rejestracja: 05 sie 2010, 17:07

Nieprzeczytany post autor: thisredone »

trudno żeby działało.

Kod: Zaznacz cały

datetime przec=0; //globalna zmienna przetrzyma nam wartość ostatniego przecięcia pomiędzy tickami
                //datetime to jest tak na prawdę int, który trzyma ilość sekund, która upłynęła od 1970 bodajże
int start()
{
double MA1 = iMA(Symbol(),Period(),14,0,0,0,0);  //wypadało by tutaj żeby
double MA2 = iMA(Symbol(),Period(),14,0,0,0,0);  //te MA były jednak różne
double MA1a = iMA(Symbol(),Period(),14,0,0,0,1); //bo inaczej to nie ma 
double MA2a = iMA(Symbol(),Period(),14,0,0,0,1); //żadnego sensu ;)

if((MA1>MA2&&MA1a<=MA2a))    //jeżeli warunek spełniony czyli nastąpiło przecięcie
   przec = Time[1];          //to ustawiamy ostatnie przecięcie (przec) na czas otwarcia ostatniej, 
                             //zamkniętej już świeczki (może być Time[0])

int swieca = iBarShift(Symbol(),Period(),przec); //zamieniamy ilość sekund (przec) na numer świeczki
}

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

Teraz wszystko rozumiem. Dziekuje.
Oczywiście MA1 i MA2 miało mieć różny okres ;) teraz to zauważyłem ;)
Solą życia jest kasa.

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

Jak rozróżnić pozycje zamkniętą przez SL, a przez TP ?
Chcę, aby : jeśli pozycja zostanie zamknieta przez SL robila "coś tam", a pozycja zamnkieta przez TP nie robiła tego.
Solą życia jest kasa.

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

Nieprzeczytany post autor: Pierz Andrzej »

przeszukujac historie zlecen sprawdz czy zamkniecie bylo po cenie stoploss czy take profit
dla Longa

Kod: Zaznacz cały

OrderClosePrice() >= OrderTakeProfit()
OrderClosePrice() <= OrderStopLoss()
ewentualnie jak nie stosujesz TS i BE mozesz sprawdzic
tylko

Kod: Zaznacz cały

OrderProfit()
gdzie ujemny jest pozycja zamknieta na StopLoss a dodania na TakeProfit

pzdr Andrzej
Ostatnio zmieniony 29 cze 2011, 23:23 przez Pierz Andrzej, łącznie zmieniany 1 raz.

Awatar użytkownika
batman
Gaduła
Gaduła
Posty: 159
Rejestracja: 19 kwie 2011, 07:55

Nieprzeczytany post autor: batman »

mozesz miec dodatkowa zmienna w ktorej trzymasz wartosc ustawionego SL i sprawdzac po zamknieciu, czy CzySL=(MathAbs(CenaZamkniecia-SL)<=slippage). Nie wiem czy SL moze byc z poslizgiem - jak nie, to wystarczy porownac CzysSL=(CenaZamkniecia==SL). Czy tak jakos ;)

Dodano po 10 minutach:

O - kolega wyzej napisal ladniej ;)

Awatar użytkownika
sonixh
Stały bywalec
Stały bywalec
Posty: 57
Rejestracja: 13 sty 2011, 19:26

Nieprzeczytany post autor: sonixh »

Witam,
może ktoś podpowie jak rozwiązać taki problem:
mam wskaźnik, który tworzy różne figury na wykresie, w kodzie na początku jest:

Kod: Zaznacz cały

int deinit()
  {
//----
   int i;
   
    for(i=0;i<=ExtDepth;i++)
    {
    ObjectDelete("FiboFan1"+"_"+i+"_"+ExtComplect+"_");
itd ale obiekty tworzone mają taki kod:

Kod: Zaznacz cały

ObjectCreate("FiboFan1"+"_"+ExtDepth+"_"+ExtComplect+"_"+save,OBJ_FIBOFAN,0,t2,p2,t1,p1);
Problem polega na tym, że nijak nie mogę pusunięciu wskaźnika pozbyć się kresek a na dodatek podczas zmiany TF dorysowują się kolejne wersje w nowych miejscach. To co powstaje to nawet Davinci nie przewidziałby. :)

Ktoś mi pomoże?
Obrazek

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

Nieprzeczytany post autor: Pierz Andrzej »

moze ta funkcja Ci pomoże :

Kod: Zaznacz cały

int ObjectsDeleteAll( int window=EMPTY, int type=EMPTY) 
Removes all objects of the specified type and in the specified sub-window of the chart. The function returns the count of removed objects. To get the detailed error information, one has to call the GetLastError() function.
Notes: The chart sub-windows (if there are sub-windows with indicators in the chart) are numbered starting from 1. The chart main window always exists and has the 0 index. If the window index is missing or it has the value of -1, the objects will be removed from the entire chart.
If the type value equals to -1 or this parameter is missing, all objects will be removed from the specified sub-window. 
Parameters:
window   -   Optional parameter. Index of the window in which the objects will be deleted. Must exceed or equal to -1 (EMPTY, the default value) and be less than WindowsTotal(). 
type   -   Optional parameter. An object type to be deleted. It can be any of the Object type enumeration values or EMPTY constant to delete all objects with any types. 

Sample:
  ObjectsDeleteAll(2, OBJ_HLINE); // all horizontal lines are removed from the 2nd sub-window.
  ObjectsDeleteAll(2);            // all objects are removed from the 2nd sub-window.
  ObjectsDeleteAll();             // all objects are removed from the chart.

pzdr Andrzej
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
sonixh
Stały bywalec
Stały bywalec
Posty: 57
Rejestracja: 13 sty 2011, 19:26

Nieprzeczytany post autor: sonixh »

Niestety nie działa. :(
Obrazek

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

Nieprzeczytany post autor: Pierz Andrzej »

jezeli sa to na wykresie glownym objecty typu Arrow

to do deinit i init dla pewnosci wrzucasz :

Kod: Zaznacz cały

ObjectsDeleteAll(0,OBJ_ARROW);
pzdr Andrzej
z poważaniem
Andrzej Pierz
FOREX-SERVICE

ODPOWIEDZ