Standardowe podwajanie - przykład kodu, wynik i wykres
Standardowe podwajanie - przykład kodu, wynik i wykres
Cześć,
Opis prostego algorytmu podwajającego stawkę ujemnych zakładów - kasyno na przykładzie rynku CCI.
http://fivewithfour.blogspot.com/
pozdrawiam
Opis prostego algorytmu podwajającego stawkę ujemnych zakładów - kasyno na przykładzie rynku CCI.
http://fivewithfour.blogspot.com/
pozdrawiam
Raczej wątek powinien być w dziale "Początki na rynku fx" .
http://pl.wikipedia.org/wiki/Paradoks_hazardzisty
http://www.forex.nawigator.biz/dyskusje ... sc&start=0
http://pl.wikipedia.org/wiki/Paradoks_hazardzisty
http://www.forex.nawigator.biz/dyskusje ... sc&start=0
Nec hercules contra plures .
Błędy logiczne popełniane przez grających nie są błędami logicznymi programistów - moim zadaniem było oprogramowanie koncepcji wymyślonej przez hazardzistę, a nie prostowanie logiki osoby uzależnionej i przekonanej o swoim "geniuszu".
Jeśli chodzi o okres wykorzystany w przykładzie to jest to najdłuższy ciągły okres danych jakimi dysponuje.
Gdybym grał poczuł bym smak błędnej logiki na własnej skórze, ale prezentowane rozwiązanie pomysłu jest poprawne.
pozdrawiam
Jeśli chodzi o okres wykorzystany w przykładzie to jest to najdłuższy ciągły okres danych jakimi dysponuje.
Gdybym grał poczuł bym smak błędnej logiki na własnej skórze, ale prezentowane rozwiązanie pomysłu jest poprawne.
pozdrawiam
Trudno się nie zgodzić z podstawami logiki.
Szukanie świętego grala pozostawiam grającym - ale gdyby wyciśnięcie z niego kasy wymagało pracy programisty to polecam swoje usługi.
Na wszelki wypadek podpinam kod algorytmu, który wygenerował wykresy z tego posta http://fivewithfour.blogspot.com/2011/0 ... ld-ii.html
pozdrawiam
Szukanie świętego grala pozostawiam grającym - ale gdyby wyciśnięcie z niego kasy wymagało pracy programisty to polecam swoje usługi.
Na wszelki wypadek podpinam kod algorytmu, który wygenerował wykresy z tego posta http://fivewithfour.blogspot.com/2011/0 ... ld-ii.html
Kod: Zaznacz cały
#property copyright "http://FiveWithFour.blogspot.com"
#property link "http://FiveWithFour.blogspot.com"
// parametry podstawowe sterujące algorytmem
double dFirstLots = 0.1; // stawka początkowa
int iSlippage = 1;
double dTakeProfitBUY = 5; // skok po jakim zamknąć z zyskiem - BUY
double dLostProfitBUY = 5; // skok po jakim podwoić stawkę - BUY
double dTakeProfitSELL = 5; // skok po jakim zamknąć z zyskiem - SELL
double dLostProfitSELL = 5; // skok po jakim podwoić stawkę - SELL
string sSymbol = "GOLD";
// parametry sterujące zwiększonym ryzykiem
bool bDoubleDanger = true; // ryzyko (true = włączone / false = wyłączone)
double dTakeProfitDOUBLEBUY = 15; // skok po jakim zamknąć z zyskiem - BUY
double dLostProfitDOUBLEBUY = 45; // skok po jakim zamknąć ze stratą - BUY
double dTakeProfitDOUBLESELL = 15; // skok po jakim zamknąć z zyskiem - SELL
double dLostProfitDOUBLESELL = 45; // skok po jakim zamknąć ze stratą - SELL
int iDoubleLots = 8; // skok po jakim algorytm zaczyna kompensować straty podwajając zakład przeciwny
// funkcja uruchamiająca działanie
int init()
{
OrderSend(sSymbol, OP_BUY, dFirstLots, Ask , iSlippage, 0, 0, "Casino", 11111, 0 , CLR_NONE);
OrderSend(sSymbol, OP_SELL, dFirstLots, Bid , iSlippage, 0, 0, "Casino", 11111, 0 , CLR_NONE);
return(0);
}
// funkcje algorytmu - uruchamiane przy zmianie ceny waloru
int iDoubleTicket;
bool bDouble = false;
int n = 0;
int start()
{
int i=0;
int iTicket;
double dLots, dOpnPrice;
//Print("RSI = ",iRSI(NULL,0,14,PRICE_CLOSE,0));
while(OrderSelect(i,SELECT_BY_POS))
{
iTicket = OrderTicket(); // znacznik transakcji
dLots = OrderLots();
dOpnPrice = OrderOpenPrice();
switch (OrderType())
{
case OP_SELL:
{
if (dOpnPrice <= (Ask - dLostProfitSELL) && (iTicket != iDoubleTicket) && (OrderMagicNumber() != 33333) && (OrderMagicNumber() != 44444))
{
if (dLots >= (dFirstLots*iDoubleLots) && ((bDouble == false) && (bDoubleDanger == true)))
{
iDoubleTicket = OrderSend(sSymbol, OP_BUY, dLots*2, Ask, iSlippage, NULL, NULL, "Casino_double", 22222, 0 , CLR_NONE);
bDouble = true;
}
while ((OrderSend(sSymbol, OP_SELL, dLots*2, Bid , iSlippage, NULL, NULL, "Casino", 11111, 0 , CLR_NONE) < 0))
{
if (GetLastError() == 134) // brak funduszy na dalsze zakłady
{
Print("G A M E O V E R - L O O S E R ! ! ! ");
break;
}
RefreshRates();
}
while (!(OrderClose(iTicket, dLots, Ask, 1, CLR_NONE)))
{
}
}
if (dOpnPrice >= (Ask + dTakeProfitSELL) && (iTicket != iDoubleTicket)) // realizacja zysku z opcji OP_SELL i otwarcie nowej pozycji z podsawową wartością lot
{
while (!(OrderClose(iTicket, dLots, Ask, 1, CLR_NONE)))
{
RefreshRates();
}
while ((OrderSend(sSymbol, OP_SELL, dFirstLots, Bid , iSlippage, NULL, NULL, "Casino", 11111,0 , CLR_NONE) < 0))
{
if (GetLastError() == 134)
{
Print("G A M E O V E R - L O O S E R ! ! ! "); // brak funduszy na dalsze zakłady
break;
}
RefreshRates();
}
}
break;
}
case OP_BUY:
{
if (dOpnPrice >= (Bid + dLostProfitBUY) && (iTicket != iDoubleTicket) && (OrderMagicNumber() != 33333) && (OrderMagicNumber() != 44444))
{
if (dLots >= (dFirstLots*iDoubleLots) && ((bDouble == false) && (bDoubleDanger == true)))
{
iDoubleTicket = OrderSend(sSymbol, OP_SELL, dLots*2, Bid, iSlippage, NULL, NULL, "Casino_double", 22222,0 , CLR_NONE);
bDouble = true;
}
while ((OrderSend(sSymbol, OP_BUY, dLots*2, Ask, iSlippage, NULL, NULL, "Casino",11111, 0, CLR_NONE) < 0))
{
if (GetLastError() == 134) // brak funduszy na dalsze zakłady
{
Print("G A M E O V E R - L O O S E R ! ! ! ");
break;
}
RefreshRates();
}
while (!(OrderClose(iTicket, dLots, Bid, 1, CLR_NONE)))
{
RefreshRates();
}
}
if (dOpnPrice <= (Bid - dTakeProfitBUY) && (iTicket != iDoubleTicket)) // realizacja zysku z opcji OP_BUY i otwarcie nowej pozycji z podsawową wartością lot
{
while (!(OrderClose(iTicket, dLots, Bid, 1, CLR_NONE)))
{
RefreshRates();
}
while ((OrderSend(sSymbol, OP_BUY, dFirstLots, Ask ,iSlippage, NULL, NULL, "Casino", 11111, 0, CLR_NONE) < 0))
{
if (GetLastError() == 134) // brak funduszy na dalsze zakłady
{
Print("G A M E O V E R - L O O S E R ! ! ! "); // brak funduszy na dalsze zakłady
break;
}
}
}
break;
}
}
i++;
if (bDoubleDanger == true)
fnCloseDouble();
}
return(0);
}
int fnCloseDouble()
{
while(OrderSelect(n,SELECT_BY_POS))
{
if (OrderMagicNumber() == 22222)
{
switch (OrderType())
{
case OP_BUY:
{
if (OrderOpenPrice() <= Bid - dTakeProfitDOUBLEBUY)
{
RefreshRates();
OrderClose(OrderTicket(), OrderLots(), Bid, 1, CLR_NONE);
Print("DOUBLE profit: " + OrderProfit());
bDouble = false;
break;
}
if (OrderOpenPrice() >= Bid + dLostProfitDOUBLEBUY)
{
RefreshRates();
OrderClose(OrderTicket(), OrderLots(), Bid, 1, CLR_NONE);
Print("DOUBLE profit: " + OrderProfit());
bDouble = false;
break;
}
break;
}
case OP_SELL:
{
if (OrderOpenPrice() >= Ask + dTakeProfitDOUBLESELL)
{
RefreshRates();
OrderClose(OrderTicket(), OrderLots(), Ask, 1, CLR_NONE);
Print("DOUBLE profit: " + OrderTicket());
bDouble = false;
break;
}
if (OrderOpenPrice() <= Ask - dLostProfitDOUBLESELL)
{
RefreshRates();
OrderClose(OrderTicket(), OrderLots(), Ask, 1, CLR_NONE);
Print("DOUBLE profit: " + OrderTicket());
bDouble = false;
break;
}
}
break;
}
}
n++;
}
n=0;
return(0);
}
Cześć,
Aby grać strategią należy ją zrozumieć - a ta nie jest trudna.
Jeśli masz mały depozyt to raczej nie rzucaj się na częstę podbijanie stawek ze straconych pozycji - algorytm wyświetla odpowiedni komunikat dla zachłannych. Parametry można dowolnie skalować i należy dostosować je do własnych potrzeb i możliwości. Dla Twojego depozytu i okresu czasu ustawiłem go na takie parametry:

i otrzymałem taki wynik:

Jest to przykład programistyczny opisujący proste zadanie z logiki. Nie jest to strategia oparta na wskaźnikach, która przynosi zyski każdemu. Nie gram, jestem tylko programistą ale nie wierzę, że istnieje algorytm podejmujący zawsze prawidłowe decyzje niezależnie od depozytu i stawki.
Aby grać strategią należy ją zrozumieć - a ta nie jest trudna.
Jeśli masz mały depozyt to raczej nie rzucaj się na częstę podbijanie stawek ze straconych pozycji - algorytm wyświetla odpowiedni komunikat dla zachłannych. Parametry można dowolnie skalować i należy dostosować je do własnych potrzeb i możliwości. Dla Twojego depozytu i okresu czasu ustawiłem go na takie parametry:

i otrzymałem taki wynik:

Jest to przykład programistyczny opisujący proste zadanie z logiki. Nie jest to strategia oparta na wskaźnikach, która przynosi zyski każdemu. Nie gram, jestem tylko programistą ale nie wierzę, że istnieje algorytm podejmujący zawsze prawidłowe decyzje niezależnie od depozytu i stawki.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony 07 sty 2011, 15:46 przez jumper, łącznie zmieniany 1 raz.
Jak widać chodzi właśnie o tą optymalizację ... Tylko powstaje pytanie: Czy będziesz wiedział do przodu jaki wartości zastosować przy ciągle zmieniającym się Rynku?<kerimb> pisze:Być może było jakoś optymalizowane
Osobiście wątpię ... Dlatego testy zawsze wychodzą pięknie do tyłu a nie do przodu ... itd ... itd ... Nie ma żadnej pewności, że to co działało w tył z takimi ustawieniami będzie działało z nimi do przodu ...