pomocy, poniżej przedstawiam kod który w zależności od fraktala czy jest ujemny czy dodatni dokonuje transakcji buy lub sell
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false)
{
if (fraktal > 0)
OrderSend(Symbol(),OP_BUY, lot, cenaBuy, 50, Bid-sl*Point, Bid+tp*Point) ;
else
OrderSend(Symbol(),OP_SELL, lot, cenaSell, 50,Ask+sl*Point ,Bid-tp*Point);
}
jeżeli usunę linijkę sprawdzaającą czy są jakieś zlecenia ( if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false)) to działa ale wówczas zlecenia cały czas się wykonują i jest ich bardzo dużo, a ja chcę aby wykonało się jedno zlecenie,
nie działający kod
-
- Stały bywalec
- Posty: 43
- Rejestracja: 22 gru 2016, 12:45
Re: nie działający kod
Potrzebujesz zmiennej, która będzie przechowywała wartość ostatniego fraktala. Niech to będzie lastFractal
W każdym wywołaniem głównej funkcji musisz od nowa "wyliczać" wartość ostatniego fraktala i sprawdzać czy jest inna niż ta przechowywana w zmiennej lastFractal. Jeżeli jest inna, to aktualizujesz zmienną lastFractal i robisz zlecenia. Czyli:
//lepiej sprawdzać też czy funkcja nie zwraca 0
W każdym wywołaniem głównej funkcji musisz od nowa "wyliczać" wartość ostatniego fraktala i sprawdzać czy jest inna niż ta przechowywana w zmiennej lastFractal. Jeżeli jest inna, to aktualizujesz zmienną lastFractal i robisz zlecenia. Czyli:
//lepiej sprawdzać też czy funkcja nie zwraca 0
Kod: Zaznacz cały
if (fraktal() != lastFractal && fraktal() != 0) {
//aktualizacja zmiennej
lastFractal = fraktal();
if(lastFractal > 0) buy; else sell;
}
Współautor interaktywnego kursu MQL4 dla serwisu fxwatch