Witam
napisałem coś takiego:
void CheckForOpen()
{
int c;
int d;
int res;
if(Volume[0]>1)
return;
c=iLowest(NULL,0,MODE_LOW,30,1);
d=Low[c];
if(Close[1]<d )
{
if(StopLoss>0)
SL=Bid+Point*StopLoss;
if(TakeProfit>0)
TP=Bid-Point*TakeProfit;
res=WHCOrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,SL,TP,"MACD",MAGICMA,0,SellColor);
if(res<0)
{
Print("Error when opening a SELL order #",GetLastError());
Sleep(10000);
return;
}
}
}
i nie rozumiem czemu nie działa, przy kompilacji nie ma żadnego błędu.
nie działający algorytm
Re: nie działający algorytm
No to jeśli Ty, autor nie rozumiesz to czemu my mamy rozumieć ?
Na pierwszy rzut oka zda mi się że:
if(Volume[0]>1)
return;
będzie zawsze spełnione.
Na pierwszy rzut oka zda mi się że:
if(Volume[0]>1)
return;
będzie zawsze spełnione.
-
- Stały bywalec
- Posty: 43
- Rejestracja: 22 gru 2016, 12:45
Re: nie działający algorytm
Problem nr 1:
Low[c] to jest cena, więc zmienna d powinna być typu double. Jak masz tam int, to zamiast np. 1.5421 będziesz miał tam 1.
Problem nr 2:
Close[1] nie może być niższe od najniższej ceny z zakresu Low[1]:Low[30]
Low[c] to jest cena, więc zmienna d powinna być typu double. Jak masz tam int, to zamiast np. 1.5421 będziesz miał tam 1.
Problem nr 2:
Close[1] nie może być niższe od najniższej ceny z zakresu Low[1]:Low[30]
Współautor interaktywnego kursu MQL4 dla serwisu fxwatch
Re: nie działający algorytm
Sprawdzałem d nie musi być double natomiast wprowadziłem taką zmianę:TesterForex pisze:Problem nr 1:
Low[c] to jest cena, więc zmienna d powinna być typu double. Jak masz tam int, to zamiast np. 1.5421 będziesz miał tam 1.
Problem nr 2:
Close[1] nie może być niższe od najniższej ceny z zakresu Low[1]:Low[30]
"c=iLowest(NULL,0,MODE_LOW,30,2);
d=Low[c];
if(Close[1]<d )"
i zaczęło to żyć, wiedziałem że gdzieś popełniłem prosty logiczny błąd którego po prostu nie widzę dzięki