Ruchoma linia

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

Ruchoma linia

Nieprzeczytany post autor: personov »

Co robię źle ?
Już tracę głowę i nerwy.
Chcę, aby po zajęciu pozycji rozpoczynała się budować linia. Jej punkt początkowy ma być stały ( początek pozycji ), natomiast drugi koniec ma być równy aktualnej cenie na aktualnej świecy.
Robię to w skrócie tak :

Kod: Zaznacz cały

string obj;
  if(total(OP_BUY)==0&&Hour()==14&&Minute()==0){OrderSend(Symbol(),OP_BUY,lot,Ask,2,0,0,"",MagicNumber,0,Green);time=Time[0];cenaB=Ask;
        obj = ("Obj" + "-" + Time[0]);}
        ObjectCreate(obj,OBJ_TREND,0,time,cenaB,time,cenaB);
        ObjectSet(obj,OBJPROP_STYLE,STYLE_SOLID);
        ObjectSet(obj,OBJPROP_WIDTH,2); 
        ObjectSet(obj,OBJPROP_COLOR,Blue);
        ObjectSet(obj,OBJPROP_RAY,false);
        ObjectSet(obj,OBJPROP_PRICE2,cenaB);
        ObjectSet(obj,OBJPROP_TIME2,time);
        ObjectSet(obj,OBJPROP_PRICE1,Close[0]);
        ObjectSet(obj,OBJPROP_TIME1,Time[0]);
Jednak linia kończy się już na pierwszej świecy jako kropka i dalej się już nie zmienia.
Solą życia jest kasa.

Awatar użytkownika
luktom
Gaduła
Gaduła
Posty: 197
Rejestracja: 19 gru 2007, 14:39

Re: Ruchoma linia

Nieprzeczytany post autor: luktom »

W momencie wysłania zlecenia powinieneś tworzyć obiekt z początkowymi wartościami o nazwie w stylu prefix + OrderTicket() a następnie, niezależnie od warunków wysyłania zlecenia, modyfikować parametry drugiego punktu.

Rzuć okiem na wskaźnik, który kiedyś napisałem, dostępny jest na stronie mojej byłej firmy:

http://pl.luktom.biz/Download/luktom-order-tracer

Co prawda rysuje on dopiero po zamknięciu pozycji, natomiast jeśli zmienisz czytanie z pozycji historycznych na obecnie - efekt powinien być taki jakiego oczekujesz :)

Łukasz Tomaszkiewicz :: luktom
algotronic- zaawansowane rozwiązania dla traderów
Odwiedź naszą stronę WWW, aby poznać pełną ofertę

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

Re: Ruchoma linia

Nieprzeczytany post autor: personov »

Ale zobacz : obiekt jest tworzony w momencie stawiania zlecenia i dopiero wtedy kończy się klamra.
Dopiero później są modyfikowane dwa parametry. Jednak nadal obiekt kończy się tylko kropką.

Kod: Zaznacz cały

string obj;
  if(total(OP_BUY)==0&&(PB0==1||PB2==1)&&(PB1a==1||PB3a==1)){OrderSend(Symbol(),OP_BUY,lot,Ask,2,0,0,"",MagicNumber,0,Green);time=Time[0];cenaB=Ask;
        obj = ("Obj" + "-" + Time[0]);
        ObjectCreate(obj,OBJ_TREND,0,Time[0],cenaB,time,cenaB);
        ObjectSet(obj,OBJPROP_STYLE,STYLE_SOLID);
        ObjectSet(obj,OBJPROP_WIDTH,2); 
        ObjectSet(obj,OBJPROP_COLOR,Blue);
        ObjectSet(obj,OBJPROP_RAY,false);}
        ////////////////////////////////
        ObjectSet(obj,OBJPROP_PRICE2,Close[0]);
        ObjectSet(obj,OBJPROP_TIME2,Time[0]);
Solą życia jest kasa.

Awatar użytkownika
luktom
Gaduła
Gaduła
Posty: 197
Rejestracja: 19 gru 2007, 14:39

Re: Ruchoma linia

Nieprzeczytany post autor: luktom »

Spróbuj wywołać po wszystkim WindowRedraw().
algotronic- zaawansowane rozwiązania dla traderów
Odwiedź naszą stronę WWW, aby poznać pełną ofertę

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

Re: Ruchoma linia

Nieprzeczytany post autor: Pierz Andrzej »

Zamiast ObjectSet dla edycji użyj ObjectMove bo po to została stworzona ;) i na koniec jak polecił Luktom użyj WindowRedraw().

Poza tym mam pytanie czy zmienna string obj jest lokalna czy globalna ? bo jak lokalna to zmień ja na zamienna statyczna bo tak to zeruje Ci się nazwa :P
z poważaniem
Andrzej Pierz
FOREX-SERVICE

ODPOWIEDZ