TrailingByShadows... dla DAXA

O jezykach programowania w platformach i nie tylko.
Goral
Uczestnik
Uczestnik
Posty: 3
Rejestracja: 22 kwie 2012, 10:57

TrailingByShadows... dla DAXA

Nieprzeczytany post autor: Goral »

Witam. Chciałbym użyć tego trailing bota do prowadzenia pozycji na DAXIE. Co jest złego w tym kodzie ,że nie działa ? Strasznie mi zależy na tym aby to śmigało. Jeśli ktoś jeszcze potrafi coś dodać aby człowiek nie musiał za każdym razem wpisywać numeru zlecenia to chylę czoła i chciałbym się jakoś odwdzięczyć :)

//+------------------------------------------------------------------+
//| TrailingByShadows.mq4 |
//| I_D |
//| http://www.mymmk.com/ |
//+------------------------------------------------------------------+
#property copyright "I_D"
#property link "http://www.mymmk.com/"

extern int iTicket; // óíčęŕëüíűé íîěĺđ (ňčęĺň) îňęđűňîé ďîçčöčč
extern int iTmfrm; // ďĺđčîä, ďî áŕđŕě ęîňîđîăî ńëĺäóĺň ňđŕëčňü (1, 5, 15, 30, 60, 240, 1440, 10080, 43200)
extern int iBars_n = 3; // ęîë-âî áŕđîâ, ďî ęîňîđűě ńëĺäóĺň ňđŕëčňü
extern int iIndent = 3; // îňńňóď îň ňĺíč áŕđŕ, íŕ ęîňîđîě đŕçěĺůŕĺňń˙ ńňîďëîńń
extern bool bTrlinloss = false; // ńëĺäóĺň ëč ňđŕëčňü íŕ ó÷ŕńňęĺ ëîńńîâ (ěĺćäó ęóđńîě ńňîďëîńńŕ č îňęđűňč˙)

//+------------------------------------------------------------------+
//| ŇĐĹÉËČÍĂ ĎÎ ŇĹÍßĚ N ŃÂĹ×ĹÉ |
//| Ďđč çŕďóńęĺ ýęńďĺđňŕ ĺěó íĺîáőîäčěî óęŕçŕňü óíčęŕëüíűé íîěĺđ |
//| (ňčęĺň) îňęđűňîé ďîçčöčč, ŕ ňŕęćĺ îďđĺäĺëčňü ďŕđŕěĺňđű ňđĺéëčíăŕ:|
//| ęîëč÷ĺńňâî áŕđîâ, ďî ňĺí˙ě ęîňîđűő íĺîáőîäčěî ňđĺéëčíăîâŕňü |
//| (îň 1 č áîëüřĺ) č îňńňóď (ďóíęňîâ) - đŕńńňî˙íčĺ îň ěŕęń. (ěčí.) |
//| ńâĺ÷č, íŕ ęîňîđîĺ ďĺđĺíîńčňń˙ ńňîďëîńń (îň 0), ďĺđĺęëţ÷ŕňĺëü |
//| trlinloss óęŕçűâŕĺň, ńëĺäóĺň ëč ňđĺéëčíăîâŕňü íŕ ó÷ŕńňęĺ |
//| "ńňîďëîńń-ęóđń îňęđűňč˙ ďîçčöčč. |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
return(0);
}

//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
TrailingByShadows(iTicket,iTmfrm,iBars_n,iIndent,bTrlinloss);
return(0);
}
//+------------------------------------------------------------------+

void TrailingByShadows(int ticket,int tmfrm,int bars_n, int indent,bool trlinloss)
{

int i; // counter
double new_extremum;

// ďđîâĺđ˙ĺě ďĺđĺäŕííűĺ çíŕ÷ĺíč˙
if ((bars_n<1) || (indent<0) || (ticket==0) || ((tmfrm!=1) && (tmfrm!=5) && (tmfrm!=15) && (tmfrm!=30) && (tmfrm!=60) && (tmfrm!=240) && (tmfrm!=1440) && (tmfrm!=10080) && (tmfrm!=43200)) || (!OrderSelect(ticket,SELECT_BY_TICKET)))
{
Print("Ňđĺéëčíă ôóíęöčĺé TrailingByShadows() íĺâîçěîćĺí čç-çŕ íĺęîđđĺęňíîńňč çíŕ÷ĺíčé ďĺđĺäŕííűő ĺé ŕđăóěĺíňîâ.");
return(0);
}

// ĺńëč äëčííŕ˙ ďîçčöč˙ (OP_BUY), íŕőîäčě ěčíčěóě bars_n ńâĺ÷ĺé
if (OrderType()==OP_BUY)
{
for(i=1;i<=bars_n;i++)
{
if (i==1) new_extremum = iLow(Symbol(),tmfrm,i);
else
if (new_extremum>iLow(Symbol(),tmfrm,i)) new_extremum = iLow(Symbol(),tmfrm,i);
}

// ĺńëč ňđŕëčě č â çîíĺ óáűňęîâ
if (trlinloss==true)
{
// ĺńëč íŕéäĺííîĺ çíŕ÷ĺíčĺ "ëó÷řĺ" ňĺęóůĺăî ńňîďëîńńŕ ďîçčöčč, ďĺđĺíîńčě
if ((((new_extremum - indent*Point)>OrderStopLoss()) || (OrderStopLoss()==0)) && (new_extremum - indent*Point<Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
if (!OrderModify(ticket,OrderOpenPrice(),new_extremum - indent*Point,OrderTakeProfit(),OrderExpiration()))
Print("Íĺ óäŕëîńü ěîäčôčöčđîâŕňü îđäĺđ ą",OrderTicket(),". Îřčáęŕ: ",GetLastError());
}
else
{
// ĺńëč íîâűé ńňîďëîńń íĺ ňîëüęî ëó÷řĺ ďđĺäűäóůĺăî, íî č ęóđńŕ îňęđűňč˙ ďîçčöčč
if ((((new_extremum - indent*Point)>OrderStopLoss()) || (OrderStopLoss()==0)) && ((new_extremum - indent*Point)>OrderOpenPrice()) && (new_extremum - indent*Point<Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
if (!OrderModify(ticket,OrderOpenPrice(),new_extremum-indent*Point,OrderTakeProfit(),OrderExpiration()))
Print("Íĺ óäŕëîńü ěîäčôčöčđîâŕňü îđäĺđ ą",OrderTicket(),". Îřčáęŕ: ",GetLastError());
}
}

// ĺńëč ęîđîňęŕ˙ ďîçčöč˙ (OP_SELL), íŕőîäčě ěčíčěóě bars_n ńâĺ÷ĺé
if (OrderType()==OP_SELL)
{
for(i=1;i<=bars_n;i++)
{
if (i==1) new_extremum = iHigh(Symbol(),tmfrm,i);
else
if (new_extremum<iHigh(Symbol(),tmfrm,i)) new_extremum = iHigh(Symbol(),tmfrm,i);
}

// ĺńëč ňđŕëčě č â çîíĺ óáűňęîâ
if (trlinloss==true)
{
// ĺńëč íŕéäĺííîĺ çíŕ÷ĺíčĺ "ëó÷řĺ" ňĺęóůĺăî ńňîďëîńńŕ ďîçčöčč, ďĺđĺíîńčě
if ((((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderStopLoss()) || (OrderStopLoss()==0)) && (new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point>Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
if (!OrderModify(ticket,OrderOpenPrice(),new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point,OrderTakeProfit(),OrderExpiration()))
Print("Íĺ óäŕëîńü ěîäčôčöčđîâŕňü îđäĺđ ą",OrderTicket(),". Îřčáęŕ: ",GetLastError());
}
else
{
// ĺńëč íîâűé ńňîďëîńń íĺ ňîëüęî ëó÷řĺ ďđĺäűäóůĺăî, íî č ęóđńŕ îňęđűňč˙ ďîçčöčč
if ((((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderStopLoss()) || (OrderStopLoss()==0)) && ((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderOpenPrice()) && (new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point>Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
if (!OrderModify(ticket,OrderOpenPrice(),new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD))*Point,OrderTakeProfit(),OrderExpiration()))
Print("Íĺ óäŕëîńü ěîäčôčöčđîâŕňü îđäĺđ ą",OrderTicket(),". Îřčáęŕ: ",GetLastError());
}
}
}
//+------------------------------------------------------------------+
W swojej karierze miałem 3 konta.
1) 1:50 Nowicjusz, 3 miesiące gry 3000E zdeponowane, wypłacone 4500E.
2) 1:500 GOD LIKE 500E wpłacone. MC !@!
3) 1:50 Aktualne od 2lat.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

Zamiast:

Kod: Zaznacz cały

TrailingByShadows(iTicket,iTmfrm,iBars_n,iIndent,bTrlinloss); 
Daj

Kod: Zaznacz cały

for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i, SELECT_BY_POS)) TrailingByShadows(iTicket,iTmfrm,iBars_n,iIndent,bTrlinloss); 
}
i powinno być z automatu wszystkie transakcje
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Nieprzeczytany post autor: CoVal »

Tig3r pisze:Zamiast:

Kod: Zaznacz cały

TrailingByShadows(iTicket,iTmfrm,iBars_n,iIndent,bTrlinloss); 
Daj

Kod: Zaznacz cały

for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i, SELECT_BY_POS)) TrailingByShadows(iTicket,iTmfrm,iBars_n,iIndent,bTrlinloss); 
}
i powinno być z automatu wszystkie transakcje
hmmm, ale wtedy i tak bedzie trailowalo tylko pozycje o ticket-cie: iTicket

ja bym sprobowal w funkcji start() napisac cos takiego:

Kod: Zaznacz cały

for(int i=0;i<OrdersTotal();i++)
{
   OrderSelect(i, SELECT_BY_POS); 
   if(OrderSymbol()==Symbol()
      TrailingByShadows(OrderTicket(),iTmfrm,iBars_n,iIndent,bTrlinloss); 
}
jesli chcemy trailowac dax-a to wrzucamy ten skrypt na wykres daxa - jesli tez pozostale instrumenty, to trzeba po prostu wyrzucic linie:

Kod: Zaznacz cały

   if(OrderSymbol()==Symbol()
...ale pisze bez mozliwosci sprawdzenia poprawnosci kodu.

Pozdrawiam

Goral
Uczestnik
Uczestnik
Posty: 3
Rejestracja: 22 kwie 2012, 10:57

Nieprzeczytany post autor: Goral »

Dupa. Zrobiłem tak jak pisaliście w obydwu przypadkach wyskakuje coś takiego w mt4 strategie:

I jeśli ten błąd wyskakuje to znaczy ,że dalsza część kodu nie jest otwierana czyli chyba nie mogę sprawdzić tego co napisaliście ? Am I right ?
2012.04.25 13:46:01 dax trail [DAX30],M1: Ňđĺéëčíă ôóíęöčĺé TrailingByShadows() íĺâîçěîćĺí čç-çŕ íĺęîđđĺęňíîńňč çíŕ÷ĺíčé ďĺđĺäŕííűő ĺé ŕđăóěĺíňîâ.


Broker to Admiral może tu jakaś wina leży :) Coś mi się wydaje ,że wina leży w tym całym "Point". Dax jest kwotowany na admiralu do 1 miejsca po przecinku... a w przypadku walut śmiga ten skrypt a one są normalnie kwotowane ;)

Co powiecie... :)
W swojej karierze miałem 3 konta.
1) 1:50 Nowicjusz, 3 miesiące gry 3000E zdeponowane, wypłacone 4500E.
2) 1:500 GOD LIKE 500E wpłacone. MC !@!
3) 1:50 Aktualne od 2lat.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

powiemy że musisz odpowiednie parametry zamknięcia ustawić
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Nieprzeczytany post autor: CoVal »

w takim razie problem lezy w tej tu czesci:

Kod: Zaznacz cały

if ((bars_n<1) || (indent<0) || (ticket==0) || ((tmfrm!=1) && (tmfrm!=5) && (tmfrm!=15) && (tmfrm!=30) && (tmfrm!=60) && (tmfrm!=240) && (tmfrm!=1440) && (tmfrm!=10080) && (tmfrm!=43200)) || (!OrderSelect(ticket,SELECT_BY_TICKET))) 
{ 
Print("[color=orange]Ňđĺéëčíă ôóíęöčĺé TrailingByShadows() íĺâîçěîćĺí čç-çŕ íĺęîđđĺęňíîńňč çíŕ÷ĺíčé ďĺđĺäŕííűő ĺé ŕđăóěĺíňîâ[/color]."); 
return(0); 
} 
byloby na pewno pomocne, gdybys zadal sobie ten trud i ten opisowy giberish skonwertowal na jakis zrozumialy jezyk....

no ale dobra...
pytanie pierwsze:
jaka wartosc poczatkowa nadajesz poszczegolnym parametrom ?
extern int iTicket;
extern int iTmfrm;
extern int iBars_n = 3;
extern int iIndent = 3;
extern bool bTrlinloss = false;

bo problem lezy w tym, ze jeden z warunkow jest po prostu niespelniony...
czyli np. jesli puszczasz ten kod tak jak jest, to na pewno on nie zadziala, bo wartosc iTmfrm =wartosci domyslnej... wiec ten warunek jest niespelniony....

jesli to nie zadziala, to sprobuj jeszcze wywalic ostatni test w tym if-ie (bo to podwojne sprawdzanie) i zostaw to tak:

Kod: Zaznacz cały

if ((bars_n<1) || (indent<0) || (ticket==0) || ((tmfrm!=1) && (tmfrm!=5) && (tmfrm!=15) && (tmfrm!=30) && (tmfrm!=60) && (tmfrm!=240) && (tmfrm!=1440) && (tmfrm!=10080) && (tmfrm!=43200))) 
{ 
Print("To gowno o nazwie TrailingByShadows() nie dziala poprawnie. Sprawdz dane wejsciowe"); 
return(0); 
} 
nie sadze, zeby to mialo cokolwiek wspolnego z tym, ze jest to dax czy edek.

jesli i to nie zadziala, to daj znac sprawdze wieczorem jak bede przy normalnym kompie.

Dodano po 16 godzinach 4 minutach:

sprawdzilem i troche poprawilem i teraz u mnie na dax-ie na AM dziala bez zadnych problemow.
nie zapomnij tylko na pewno wprowadzic wartosc parametru:

Kod: Zaznacz cały

extern int iTmfrm         = 60; // dldcîä, dî árdre eînîdîaî nëläóln ndrëcnü (1, 5, 15, 30, 60, 240, 1440, 10080, 43200) 
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

ODPOWIEDZ