Wszystkie pytania dozwolone początkujących programistów
Pytanie (mt4)
Chcę mieć ryzyko(koszt dotknięcia SL wyrażony w kasie) pojedyńczej operacji (w tym wypadku Long), dobrze liczę ?
Dzięki.
to do wskaźnika BasketProfit który zmieniłem dodając "money at risk(ile stracę jeżeli wszystko pójdzie na SL)", "risk %(w procentach konta)" i idiot mode z Tro_Rat zone(>x% i >50% wyświetli ładne ostrzeżenie)...
			
			
						Chcę mieć ryzyko(koszt dotknięcia SL wyrażony w kasie) pojedyńczej operacji (w tym wypadku Long), dobrze liczę ?
Kod: Zaznacz cały
singlesymbolrisk=100000*OrderLots()*(OrderOpenPrice()-OrderStopLoss())*MarketInfo(Symbol(), MODE_TICKVALUE);
to do wskaźnika BasketProfit który zmieniłem dodając "money at risk(ile stracę jeżeli wszystko pójdzie na SL)", "risk %(w procentach konta)" i idiot mode z Tro_Rat zone(>x% i >50% wyświetli ładne ostrzeżenie)...
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
			
									
						Re: Wszystkie pytania dozwolone początkujących programistów
Proszę o podpowiedź gdzie leży błąd. Mam taki oto kawałek kodu :
który w formie zaprezentowanej powyżej działa jak należy tzn. poprawnie określa istnienie otwartych pozycji. Wystarczy jednak, że dodam do niego warunek dotyczący MagicNumber - kod widoczny poniżej :
I funkcja przestaje działać jak należy - dodam, że mam na początku zadeklarowaną zmienną :
Gdzie tkwi błąd? Z góry dziękuję za pomoc...
			
			
									
									
						Kod: Zaznacz cały
bool ExistPositions() {
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==Symbol())) { 
return(True);
}}} 
return(false);
}Kod: Zaznacz cały
bool ExistPositions() {
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==Symbol())&& (OrderMagicNumber()==MagicNumber)) { 
return(True);
}}} 
return(false);
}Kod: Zaznacz cały
extern int MagicNumber = 12234573; 
Re: Wszystkie pytania dozwolone początkujących programistów
A kompluje się ? Wyświetla jakieś błędy ?
			
			
									
									Solą życia jest kasa.
						Re: Wszystkie pytania dozwolone początkujących programistów
Dzięki za odp. - wszystko kompiluje się bez problemu. W dalszej części EA funkcję wywołuję za pomocą :
			
			
									
									
						Kod: Zaznacz cały
if (!ExistPositions()){- Pierz Andrzej
- Przyjaciel Forum 
- Posty: 1200
- Rejestracja: 02 lip 2006, 14:17
Re: Wszystkie pytania dozwolone początkujących programistów
mikolaj2 pisze:Dzięki za odp. - wszystko kompiluje się bez problemu. W dalszej części EA funkcję wywołuję za pomocą :
Kod: Zaznacz cały
if (!ExistPositions()){
a w funkcji OrderSend przypisujesz MagicNumber ?
z poważaniem
Andrzej Pierz
FOREX-SERVICE
						Andrzej Pierz
FOREX-SERVICE
Re: Wszystkie pytania dozwolone początkujących programistów
Dziękuję - tu właśnie tkwił błądPierz Andrzej pisze: a w funkcji OrderSend przypisujesz MagicNumber ?
 Wnoszę o pochwałę dla użytkownika Pierz Andrzej oraz Personov - za zaangażowanie i chęć niesienia pomocy
 Wnoszę o pochwałę dla użytkownika Pierz Andrzej oraz Personov - za zaangażowanie i chęć niesienia pomocy 
Re: Wszystkie pytania dozwolone początkujących programistów
Ja mam bardzo podobny problem. W kodzie poniżej powinienem pobierać ceny otwarcia zleceń i profit z konkretnych pozycji ale nic takiego się nie dzieje.
Kompiluje bezbłednie, GetLastError zwraca mi 0. Wcześniej chodziło ok ale kod był z dekompilatora i zachciało mi się zrobić go bardziej do przełknięcia. Zamiast jakiejś l_pos_548 zrobiłem k i szlag trafił całe ustrojstwo. Nigdzie więcej w kodzie nie pojawia się wspomniane l_pos_548 więc jestem trochę zdziwiony tą sytuacją. Otwarte zlecenia mają Magic, symbole Pair_1 prawidłowo działają a profitu i ceny nie pobiera. Ktoś może mnie oświecić? Z góry wielki dzięki za poświęcony czas.
			
			
									
									
						Kod: Zaznacz cały
for (int k = 0; k < OrdersTotal(); k++) {
            if (OrderSelect(k, SELECT_BY_POS, MODE_TRADES)) {            
               if (OrderMagicNumber() == 111) {
                  if (OrderSymbol() == Pair_1) {
                     profit_S1 = OrderProfit();
                     open_price_S1  = OrderOpenPrice();
                  }
               }
          }
       }
Re: Wszystkie pytania dozwolone początkujących programistów
wrzuc ta sama petle w oryginalnej wersji - na pierwszy rzut oka nic szczegolnego tu nie widze.. ale moze trzeba porownac z oryginalem.sonixh pisze:Ja mam bardzo podobny problem.
jestes pewien ze nie zdublowales zmiennej k (czy jak tam sie nazywa ta oryginalna zmienna) ?
jestes pewien, ze nie pominales np. znaku + w
Kod: Zaznacz cały
profit_S1 = OrderProfit();moze w oryginale jest np.:
Kod: Zaznacz cały
profit_S1 += OrderProfit();Re: Wszystkie pytania dozwolone początkujących programistów
W oryginale jest :
itd. Takie pętle są dwie w całym kodzie więc w jednej użyłem i a w drugiej k. Dla jasności dodam, że pętle nie działają jednocześnie, albo działa jedna, albo druga w zależności od ustawienia na wejściu. Jeśli zmieniam obie literki na tą samą to nic mi nie daje. Dlaczego nie wykonuje prostej instrukcji ?   
			
			
									
									
						Kod: Zaznacz cały
for (int l_pos_548 = 0; l_pos_548 < OrdersTotal(); l_pos_548++) {
            if (OrderSelect(l_pos_548, SELECT_BY_POS, MODE_TRADES)) {
               if (OrderMagicNumber() == 111) {
                  if (OrderSymbol() == Pair_1) {
                     l_ord_profit_72 = OrderProfit();
                     l_ord_open_price_24 = OrderOpenPrice();
                  }
               }
                if (OrderMagicNumber() == 222) {
                  if (OrderSymbol() == Pair_2) {
                     l_ord_profit_80 = OrderProfit();
                     l_ord_open_price_32 = OrderOpenPrice();
                  }
               }
 Kod: Zaznacz cały
  l_ord_open_price_32 = OrderOpenPrice(); 
 
							








