czyli na funkca ma byc poza start a odwołanie do niej tylko pomiedzy znaczkami start
Wszystkie pytania dozwolone początkujących programistów
Hej.
Otwieram programowo zlecenie i ustawiam w SendOrder TP i ST.
I po pewnym czasie zlecenie osiagnie TP albo SL i zostanie zamkniete. ALe wtedy na wykresie nie narysuje sie trojkat zamykajacy i przerywana linia miedzy otwarciem i zamknieciem.
Jak zrobic aby przy samoczynnym zamkniecie narysowal sie trojkat zamykajacy i linia przerywana?
Otwieram programowo zlecenie i ustawiam w SendOrder TP i ST.
I po pewnym czasie zlecenie osiagnie TP albo SL i zostanie zamkniete. ALe wtedy na wykresie nie narysuje sie trojkat zamykajacy i przerywana linia miedzy otwarciem i zamknieciem.
Jak zrobic aby przy samoczynnym zamkniecie narysowal sie trojkat zamykajacy i linia przerywana?
- SceptycznyProgramista
- Stały bywalec

- Posty: 37
- Rejestracja: 02 kwie 2011, 23:51
trzeba zdefiniować zmienne globalna np:
następnie w kodzie po wystąpieniu zdarzenia utworzyć "zapalnik" dla zdarzenia:
a w innym miejscu w kodzie monitorować stan zmiennej zdarzenie_wystapilo
Kod: Zaznacz cały
bool zdarzenie_wystapilo=false;
datetime czas = 0;
Kod: Zaznacz cały
if(ma100>ma50)
{
zdarzenie_wystapilo = true;
czas = TimeCurrent();
}
Kod: Zaznacz cały
if(zdarzenie_wystapilo && czas > czas +1h)
{
....// tu wpisac kod do wykonania
zdarzenie_wystapilo = false; // resetujemy stan i czekamy na kolejne
czas=0;
}
Witam, mam następujący problem. Piszę oscylator w separate window i chcę wyświetlić sygnały buy i sell w oknie wykresu w postaci arrow. Jednak nie wyświetla mi historycznych strzałek (te co się dopiero tworzą wyświetla) dopiero jak mam uruchomiony mt4 i skompiluje na żywca to historyczne się wyświetlają. Tak samo jest przy zmianie TF. Ktoś wie co jest grane?
Kod: Zaznacz cały
int deinit()
{
ObjectsDeleteAll(0, OBJ_ARROW);
}
void drawSignals(int i)
{
if(checkForBuy(i))
{
ObjectCreate("ArrowBuy"+Time[i], OBJ_ARROW, 0, Time[i], Low[i] - 5*Point);
ObjectSet("ArrowBuy"+Time[i],OBJPROP_ARROWCODE, 241);
}
if(checkForSell(i))
{
ObjectCreate("ArrowSell"+Time[i], OBJ_ARROW, 0, Time[i], High[i] + 10*Point);
ObjectSet("ArrowSell"+Time[i],OBJPROP_ARROWCODE, 242);
}
}
int start()
{
int limit;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars - counted_bars;
for(int i=0; i<limit; i++)
{
Map[i] = costam;
drawSignals(i);
}
return(0);
}
Jak mogę wyliczyć maksymalny lot jakim mogę otworzyć pozycję?
np. lewar 1:500, depozyt 100 USD, waluta EURUSD
Znalazłem w sieci
Czy znacie jakiś inny sposób wyliczenia maksymalnego Lota?
np. lewar 1:500, depozyt 100 USD, waluta EURUSD
Znalazłem w sieci
Kod: Zaznacz cały
NormalizeDouble(AccountFreeMargin() * maximumRisk / 1000.0, 2);Jeśli będziesz ciężko pracował nad swoim zajęciem, zarobisz na życie.
Jeśli będziesz ciężko pracował nad sobą, zarobisz fortunę. (Jim Rohn)
Jeśli będziesz ciężko pracował nad sobą, zarobisz fortunę. (Jim Rohn)
- siersciuch
- Pasjonat

- Posty: 407
- Rejestracja: 06 kwie 2010, 20:31
Chciałbym zeby mi zamykało zlecenie po np 50 minutach. to 50minut mnoze razy 60 wychodzi 3000 sekund, ale jak je dodać do Orderopentime() ?
Kod: Zaznacz cały
if(OrderSelect(short2, SELECT_BY_TICKET)==true)
{
if(OrderCloseTime()==0 && TimeCurrent()< OrderOpenTime()+3000)
{
OrderClose(short2,lot,Bid,2);
}
}jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.
Moze tak:siersciuch pisze:Chciałbym zeby mi zamykało zlecenie po np 50 minutach. to 50minut mnoze razy 60 wychodzi 3000 sekund, ale jak je dodać do Orderopentime() ?Kod: Zaznacz cały
if(OrderSelect(short2, SELECT_BY_TICKET)==true) { if(OrderCloseTime()==0 && TimeCurrent()< OrderOpenTime()+3000) { OrderClose(short2,lot,Bid,2); } }
Kod: Zaznacz cały
if(TimeCurrent()-OrderOpenTime() >= 3000)
- siersciuch
- Pasjonat

- Posty: 407
- Rejestracja: 06 kwie 2010, 20:31



