Max wielkość lota
Max wielkość lota
Proszę o podpowiedź jakim wyrażeniem mogę ująć max wielkość lota w stosunku do aktualnego balance. Chcę, żeby EA otwierało pozycję "za wszystko co ma". Np. poziom balance wynosi 3450 PLN, 0.1 lota ( min. wielkość) kosztuje 300 PLN. Jak podzielę balance/300 to wyjdzie 1.1 lota, ale zostaje reszta. W jaki sposób EA ma wiedzieć, że ma otworzyć tylko 1.1 lota a resztą się nie przejmować ? Zależy mi na tym, żeby to była jedna pozycja a nie 11 pozycji 0.1 lota
Solą życia jest kasa.
Wydaje mi się ( sprawdź!) że powinno to być coś w stylu:
Kod: Zaznacz cały
ilosc_lotow=AccountBalance()/MarketInfo(Symbol(), MODE_MARGINREQUIRED)
Orły nie jedzą much
Witam
Kiedyś z ciekawości skleciłem taką funkcję. Nie jest zbyt szybka, ale może Ci się przyda.
Parametry: OP_BUY, OP_SELL
Kiedyś z ciekawości skleciłem taką funkcję. Nie jest zbyt szybka, ale może Ci się przyda.
Parametry: OP_BUY, OP_SELL
Kod: Zaznacz cały
double MaxLots2Open(int cmd)
{
double lots, minstep, ret = 0.0;
lots = MarketInfo(Symbol(), MODE_MINLOT);
minstep = MarketInfo(Symbol(),MODE_LOTSTEP);
AccountFreeMarginCheck(Symbol(), cmd, lots);
while(GetLastError() != 134) {
ret = lots;
lots += minstep;
AccountFreeMarginCheck(Symbol(), cmd, lots);
}
return(ret);
}
Nie sądzę, by ktokolwiek był na tyle mądry, aby ocenić, co jest możliwe, a co nie.
Jednak wyrażenie funkcji :
bierze pod uwagę resztę, która zostaje.
Jak wychodzi np.1.983 lota to EA chce otworzyć 1.983 lota
co jest niemożliwe. Jeśli EA zaokrągli to wyjdzie 2 loty, a na to jest za mało środków.
Ale pogrzebałem, pobawiłem się i doszedłem do celu. Oto gotowy kod :
Może się komuś przyda.
Kod: Zaznacz cały
ilosc_lotow=AccountBalance()/MarketInfo(Symbol(), MODE_MARGINREQUIRED)
Jak wychodzi np.1.983 lota to EA chce otworzyć 1.983 lota

Ale pogrzebałem, pobawiłem się i doszedłem do celu. Oto gotowy kod :
Kod: Zaznacz cały
ilość _lotów=MathFloor(AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/MarketInfo(Symbol(),MODE_LOTSTEP))*MarketInfo(Symbol(),MODE_LOTSTEP)
Solą życia jest kasa.
- w_ujek edek
- Stały bywalec
- Posty: 39
- Rejestracja: 28 kwie 2009, 10:57
dobra robotapersonov pisze: Ale pogrzebałem, pobawiłem się i doszedłem do celu. Oto gotowy kod :Może się komuś przyda.Kod: Zaznacz cały
ilość _lotów=MathFloor(AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/MarketInfo(Symbol(),MODE_LOTSTEP))*MarketInfo(Symbol(),MODE_LOTSTEP)

a w jaki sposob otrzymac polowe maksymalego zaangazowania?
Dodano po 21 minutach:
juz mam wystarczy dodac zaraz po
Kod: Zaznacz cały
(AccountFreeMargin()
Kod: Zaznacz cały
*0.5
czyli bedzie to wygladalo tak
Kod: Zaznacz cały
ilość _lotów=MathFloor(AccountFreeMargin()*0.5/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/MarketInfo(Symbol(),MODE_LOTSTEP))*MarketInfo(Symbol(),MODE_LOTSTEP)