Wymyśliłem takiego prostego robota (wskaźniki i Ea w załączniku)
Założenia EA (sprawdzałem na M5) głównie USDJPY, EURUSD, EURJPY
Buy - przecięcie od dołu linii 10 wskaźnika DTOSC oraz MA wzrostowa, sell na odwrót.
Wyjście TS 0,30,50. Reszta parametrów w EA.
Głównym założeniem było wchodzenie w pozycje w trendzie, założyłem że bedę wchodził kiedy MA bedzię wzrostowe/spadkowe.
Niestety raz na kilkadziesiąt wejść nie załapuje się na aktywację TrailingStopa i robot potrafi zerować konto.
Niestety próby ze sztywnym SL i TP nie dają oczekiwanych rezultatów, za to kiedy w każdym z wejść w pozycję kurs pójdzie uaktywniając TS wyniki są zadowalające.
Może wymyślicie coś aby to jakoś wyeliminować..
Moje EA - potrzebna pomoc
Moje EA - potrzebna pomoc
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: Moje EA - potrzebna pomoc
DT Oscillator nie kompiluje.
PS: char nie może być nazwą zmiennej.
Podepnij jakąś bardziej sensowną wersję.
Nie sprawdzasz IsTradeContextBusy() przed OrderModify()?
-- Dodano: czw 12-02-2015, 21:39 --
Pierwsza funkcja na jaką spojrzałem - CanOpen
1) Można to było napisać prościej bez variable found
2) Po co przekazujesz parameter ordType skoro jest niepotrzebny
3) Funkcja nie robi tego co jest w opisie - sprawdzany jest tylko pierwszy napotkany order, więc albo zmień opis albo zmień logikę kodu bo nie wiadomo jakie było zamierzenie.
PS: char nie może być nazwą zmiennej.
Podepnij jakąś bardziej sensowną wersję.
Nie sprawdzasz IsTradeContextBusy() przed OrderModify()?
-- Dodano: czw 12-02-2015, 21:39 --
Pierwsza funkcja na jaką spojrzałem - CanOpen
1) Można to było napisać prościej bez variable found
Kod: Zaznacz cały
//+------------------------------------------------------------------+
//| Check if exist history order on currrent bar |
//| PARAMS: int Type - order type |
//| RETURN: true - can open new order |
//+------------------------------------------------------------------+
bool CanOpen(ENUM_ORDER_TYPE ordType)
{
int i=OrdersHistoryTotal()-1;
bool canOpen = true;
while (i >= 0)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == _Symbol && OrderMagicNumber() == MagicNo)
{
if (OrderOpenTime() >= Time[0]) canOpen = false;
break;
}
}
i--;
}
return (canOpen);
}
3) Funkcja nie robi tego co jest w opisie - sprawdzany jest tylko pierwszy napotkany order, więc albo zmień opis albo zmień logikę kodu bo nie wiadomo jakie było zamierzenie.
radical material simplification
Re: Moje EA - potrzebna pomoc
Automat był pisany przez kogoś innego na moje zlecenie...
Re: Moje EA - potrzebna pomoc
Albo jeszcze prościej (jeśli dobrze rozumuję ideę) np. tak:robs pisze:Pierwsza funkcja na jaką spojrzałem - CanOpen
1) Można to było napisać prościej bez variable found
Kod: Zaznacz cały
bool CanOpen()
{
int i=OrdersHistoryTotal();
while (i--) //ew. tutaj while(i)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) //a tutaj --i
{
if (OrderSymbol() == _Symbol && OrderMagicNumber() == MagicNo)
{
if (OrderOpenTime() >= Time[0])
return false;
return true; //lub break;
}
}
}
return true;
}
Ostatnio zmieniony 13 lut 2015, 02:23 przez WojtexWay, łącznie zmieniany 4 razy.
Re: Moje EA - potrzebna pomoc
I take it back - że tak się wyrażęrobs pisze: 3) Funkcja nie robi tego co jest w opisie - sprawdzany jest tylko pierwszy napotkany order, więc albo zmień opis albo zmień logikę kodu bo nie wiadomo jakie było zamierzenie.
Nie zaczaiłem o co chodzi
-- Dodano: pt 13-02-2015, 7:26 --
Chcesz powiedzieć że początkowy SL=0?pawelsko pisze: Niestety próby ze sztywnym SL i TP nie dają oczekiwanych rezultatów, za to kiedy w każdym z wejść w pozycję kurs pójdzie uaktywniając TS wyniki są zadowalające.
SL powinien być dodatni i nie większy niż TSStep, inaczej to nie ma sensu.
-- Dodano: pt 13-02-2015, 7:34 --
Ustaw SL = TSStep. Przy SL=0 zawsze sie wywali.pawelsko pisze: Niestety próby ze sztywnym SL i TP nie dają oczekiwanych rezultatów, za to kiedy w każdym z wejść w pozycję kurs pójdzie uaktywniając TS wyniki są zadowalające.
radical material simplification