Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
sonixh
Stały bywalec
Stały bywalec
Posty: 57
Rejestracja: 13 sty 2011, 19:26

Nieprzeczytany post autor: sonixh »

Hmm, wygląda na to, że Bossa nawala bo na FXPro sprawdziłem i tam śmiga jak złoto. Pierwszy raz tak mam. Wobec tego co mógłbyś mi poradzić?
Obrazek

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

Nieprzeczytany post autor: Pierz Andrzej »

sonixh pisze:Hmm, wygląda na to, że Bossa nawala bo na FXPro sprawdziłem i tam śmiga jak złoto. Pierwszy raz tak mam. Wobec tego co mógłbyś mi poradzić?
reinstalke ??

pzdr Andrzej

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

Nieprzeczytany post autor: sonixh »

Dobra, sprawdzę i przeinstaluję. Wielkie dzięki za pomoc. bez niej bym nie ruszył tematu. :564:
Obrazek

Awatar użytkownika
KeithFlint
Bywalec
Bywalec
Posty: 10
Rejestracja: 02 cze 2011, 15:30

Nieprzeczytany post autor: KeithFlint »

Panowie, byłbym wdzięczny, jakby ktoś rzucił okiem na poniższy kod:

Kod: Zaznacz cały

SL = 10*Point;
RISK = 5;
LotSize = ((RISK/100)*AccountBalance())/SL;
Ot i któtkie równianie, według którego obliczany jest wolumen transakcji.
Podczas kompilacji nie ma żadnych błędów.
Przy testowaniu otrzymuję jednak błąd dzielenia przez zero (w dzienniku: zero divide).
Nie rozumiem w którym miejscu mam błąd.

Próbowałem zamienić RISK=5 na RISK=0.05, aby pozbyć się ułamka w równaniu. Zmieniłem też AccountBalance() na AccountEquity(). Błąd dalej był ten sam.

Potem zmieniłem SL=10*Point na SL=10. (Dopisałem "*Point" w zleceniach). Pojawił się za to błąd o złej ilości lotów, error 4051.

Chciałem też zaokrąglać wynik tego równania, jednak MathRound() zaokrągla do całości.

Czy ktoś może podpowiedzieć co jest nie tak?

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

Nieprzeczytany post autor: thisredone »

zaokrąglasz przez NormalizeDouble(loty,ipp)
ipp - ilość miejsc po przecinku. Zwracaj uwagę na to czy twój broker pozwala trejdować mikro lotami.

SL masz prawdopodobnie zadeklarowany jako int stąd twój problem
tzn. nic w tym złego ale w tym obliczeniach powinieneś zrobić coś takiego:

double esel = SL *Point;

Awatar użytkownika
KeithFlint
Bywalec
Bywalec
Posty: 10
Rejestracja: 02 cze 2011, 15:30

Nieprzeczytany post autor: KeithFlint »

thisredone dzięki za podpowiedź ;)

Wstyd się przyznać ale błędne jest samo obliczanie wielkości lota. Napiszę je nieco inaczej.

Eksperta projektuję dla EURUSD. Chciałbym jednak mieć też aktualny kurs USDPLN aby móc obliczyć tą wielkość lota.
Założenie jest takie, że przy SL=5pips maksymalna strana wynosi 5% kapitału. Aby tą właśnie stratę policzyć potrzebuję ciągle mieć aktualny kurs USDPLN.
Szukałem w dokumentacji MQL4 i MQL5 funkcji, która pobierałaby kurs USDPLN działając na EURUSD. Ma ktoś pomysł jak to załatwić?
Dodam, że nie chciałbym co chwilę ręcznie poprawiać ceny w kodzie eksperta.

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

Nieprzeczytany post autor: sonixh »

Może pobieraj wartość usdpln za pomocą

Kod: Zaznacz cały

MarketInfo(Symbol(),MODE_TICKVALUE);
lub coś w tym stylu.

Dodano po 1 minutach:

Zerknij czasami i tu:
http://bossa.pl/index.jsp?layout=2&page ... at_id=1088

Masz tam podstawowe instrukcje. :)
Obrazek

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

Nieprzeczytany post autor: thisredone »

nie wiem jak chcesz za pomocą jakiegoś kursu obliczyć wartość lotów ale żeby sprawdzić cenę na innej parce wykorzystaj jedną z tych funkcji:
http://docs.mql4.com/series
np. iClose();

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

Nieprzeczytany post autor: sonixh »

raczej to powinno bardziej tak wyglądać.

Kod: Zaznacz cały

double MarketInfo( string USDPLN, MODE_TICKVALUE)

Obrazek

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

Nieprzeczytany post autor: thisredone »

masz na myśli

Kod: Zaznacz cały

double MarketInfo( "USDPLN", MODE_TICKVALUE);
'string USDPLN' zadeklarowałoby zmienną typu string o nazwie USDPLN bez zawartości ;)

ODPOWIEDZ