Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
JAREK67
Maniak
Maniak
Posty: 2143
Rejestracja: 13 lip 2006, 11:21

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: JAREK67 »

JemPasztetową pisze:Panie, ja manualnie to takie rzeczy potrafię że...zresztą zapytaj pan mojej starej 8)
No dobra, skoro może to mieć sens, to czy sens ma RSI.
Ogólnie na moim beta-testing w MT4 (czy jak te testowanie strategii nazwać) RSI zaczyna mieć sens przy wykresach H4 i bardzo restrykcyjnie postawionych sygnałach kupna -20% i sprzedaży - 80%.
Ogólnie próbuje to to podporządkować kursom na WTI, ale nie za bardzo wiem, do czego co służy. Jeżli maiłby ktoś jakięs doświadczenie własne, niekoniecznie trzeźwe, to chętnie posłucham albo i poczytam. :568:
Pozdrawiam miliarderów z fx nawigatora, Marjan.
Forex to generalnie upierdliwy temat. Zwłaszcza jesli ktoś chciałby szybko i dużo zarobić przy pomocy EA. Już chyba lepiej zapisać się do partii, zostac jej prominentnym członkiem. Potem byc wybranym do parlamentu żeby wrszcie dać się skorumpować za ciężkie pieniądze. Myslę, że to jest w perspektywie lat dla ciebie bardziej rzeczywisty scenariusz niż napisanie zarabiającego robota. Przemyśl to JemPasztetowa. Najbliższe wybory juz w przyszłym roku ;)

JemPasztetową
Bywalec
Bywalec
Posty: 19
Rejestracja: 23 lis 2012, 16:44

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: JemPasztetową »

Bardziej chodzi mi o potwierdzenie sygnałów kupna i sprzedaży na ropie WTI, jako, że chciałbym mieć jasny obraz "wyczerpywania się" rynku i ew. sygnały dla zmiany trendu. Nie chodzi mi o pełny automat, jedynie o wysyłanie sygnałów; osobiście uważam, że tzw. instynkt jest najlepszą bronią własną.
No, ale skoro rekiny biznesu z internetu tak twierdzą, to pewnie mają rację.
Do kogoś, kto nie jest sfrustrowanym łapaczem astrologicznych liczb na wykresach i fanem feng sui w handlu eurodolarem --> jak to cholerstwo, czyli RSI, ustawić, żeby działało na odpowiednim przedziale czasowym? Tj H1, H4 etc.
Ps. Forex jako rynek zbyt chimeryczny w ogóle mnie nie interesuje.
Ostatnio zmieniony 23 maja 2013, 10:23 przez JemPasztetową, łącznie zmieniany 1 raz.

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: Pierz Andrzej »

JemPasztetowa i widzisz w tym miejscu mogła by się zacząć dyskusja która trwała by w nieskończoność :) . Bo ja wierze że są EA które zarabiają. Sam posiadam 1 EA które przez jakiś okres pozwoliło mi w kilka miesięcy ze 100$ zrobić 40000$ (EA nie jest nie było i nie będzie na sprzedaż).
Lepiej zacznij inwestować manualnie i opracuj swój dochodowy system , jak już będziesz wiedział jak poruszać się na rynku to wtedy zgłoś się do mnie , zrobię Ci z tego automat :D:D
z poważaniem
Andrzej Pierz
FOREX-SERVICE

JemPasztetową
Bywalec
Bywalec
Posty: 19
Rejestracja: 23 lis 2012, 16:44

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: JemPasztetową »

Spokojnie, nie będę jej przedłużał w nieskończoność.
Ja osobiście wyznaje podejście holistyczne, uważam, że nie da się przewidywać w długim okresie ruchów cenowych bez głębokiego zrozumienia rynku. Rynek walutowy jest dla mnie zbyt skomplikowany, za dużo zmiennych, zbyt wielu graczy.
Dlatego od roku się skupiam na jednym commodity - ropie, i od niedawna na 1 indeksie -sp500.
Ale ad rem ---> skoro można zadawać głupie pytania:
---> Jak RSI ustawić np na przedział H1, a jak na H4
---> Dlaczego to coś wysyła sygnały jak na moje oko ZBYT CZĘSTO
---> Czy można jeszcze bardziej restrykcyjnie połączyć sygnały z czym innym, może ze wstęgą Bollingera :)

To w zasadzie wszystko, jakby komuś się przypadkiem chciało odpowiedzieć.

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: personov »

Przede wszystkim taka dyskusja kwalifikuje się do działu strategie. W dziale programowanie podejmujemy tematy typowo związane z kodem, a nie z ustawieniami wskaźników i dylematami, czy te wskaźniki są dobre.
Odpowiem Ci tak : nie ma wskaźnika, który w 100 % wskaże Ci zwrot trendu. Zawsze będzie jakieś "ale". Zawsze zdarzy się sytuacja, że kiedyś da Ci fałszywy sygnał. I co wtedy ? Pomyślisz, że są złe ustawienia ? Wskaźnik może być jedynie pewną podpowiedzią, ale nigdy nie można się kierować tylko jego wskazaniem.
Solą życia jest kasa.

JemPasztetową
Bywalec
Bywalec
Posty: 19
Rejestracja: 23 lis 2012, 16:44

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: JemPasztetową »

Fakt, to może nieodpowiedni dział.
Właśnie o tym mówię :) Nie uważam, że AT powinna być wyznacznikiem, a jedynie pomocą. Uważam również, e moja wiedza jest zbyt mała, żeby póki co inwestować cokolwiek na rynku commodities --> przede wszystkim wiedza dotycząca tego rynku.
Co do spraw stricte technicznych:

#property copyright "© 2009 BJF Trading Group inc."
#property link "www.iticsoftware.com"

#define major 1
#define minor 0

extern string _tmp1_ = " --- Trade params ---";
extern double Lots = 0.05;
extern int StopLoss = 300;
extern int TakeProfit = 700;
extern int Slippage = 3;
extern int Magic = 20090601;

extern string _tmp2_ = " --- RSI ---";
extern int RSI.period = 3;
extern int RSI.applied_price = PRICE_CLOSE;
extern int RSI.SignalBar = 1;
extern double RSI.SellAbove = 80.0;
extern double RSI.BuyBelow = 20.0;

extern string _tmp3_ = " --- Chart ---";
extern color clBuy = DodgerBlue;
extern color clSell = Red;
extern color clClose = Gold

itd. Wiec co do wspomnianych sygnałów, jeżeli dobrze zrozumiałem i.obsługi ---> wklejam daną strategię na dany time chart i na tym przedziale czasowym powinna mi działać, czy nie tak?

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: personov »

A co to za EA ? Pisałeś cały czas o wskaźniku RSI...
Skoro masz jakiś już gotowy automat to nikt Ci nie odpowie na pytania dlaczego coś nie działa, bo nie widzimy całego kodu. No chyba, że na forum znajdzie się autor tego automatu. Nikt Ci nie podpowie nic na temat ustawień, chyba że ktoś już tego używał, a musisz sobie zdawać sprawę, że takich EA jest tysiące.
Solą życia jest kasa.

JemPasztetową
Bywalec
Bywalec
Posty: 19
Rejestracja: 23 lis 2012, 16:44

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: JemPasztetową »

Aha w ten sposób...
No dobra, a jeśli wkleję cały kod? Po prostu nie chciałem zaśmiecać miejsca forumowego:

CAŁY KOD:


#property copyright "© 2009 BJF Trading Group inc."
#property link "www.iticsoftware.com"

#define major 1
#define minor 0

extern string _tmp1_ = " --- Trade params ---";
extern double Lots = 0.05;
extern int StopLoss = 300;
extern int TakeProfit = 700;
extern int Slippage = 3;
extern int Magic = 20090601;

extern string _tmp2_ = " --- RSI ---";
extern int RSI.period = 3;
extern int RSI.applied_price = PRICE_CLOSE;
extern int RSI.SignalBar = 1;
extern double RSI.SellAbove = 80.0;
extern double RSI.BuyBelow = 20.0;

extern string _tmp3_ = " --- Chart ---";
extern color clBuy = DodgerBlue;
extern color clSell = Red;
extern color clClose = Gold;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#include <stdlib.mqh>
#include <stderror.mqh>

int RepeatN = 3;
int BuyCnt, SellCnt;

void init()
{
}

void deinit()
{
}

void start()
{
//-----

double RSI1 = iRSI(NULL, 0, RSI.period, RSI.applied_price, RSI.SignalBar);
double RSI2 = iRSI(NULL, 0, RSI.period, RSI.applied_price, RSI.SignalBar+1);

//-----

RecountOrders();

//-----

double price, sl, tp;
int ticket;

if (RSI1 < RSI.BuyBelow && RSI2 >= RSI.BuyBelow)
{
if (BuyCnt > 0) return;
if (CloseOrders(OP_SELL) > 0) return;
if (OrdersCountBar0(0) > 0) return;

//-----

for (int i=0; i<RepeatN; i++)
{
RefreshRates();
price = Ask;

sl = If(StopLoss > 0, price - StopLoss*Point, 0);
tp = If(TakeProfit > 0, price + TakeProfit*Point, 0);

ticket = Buy(Symbol(), GetLots(), price, sl, tp, Magic);
if (ticket > 0) break;
}

return;
}

if (RSI1 > RSI.SellAbove && RSI2 <= RSI.SellAbove)
{
if (SellCnt > 0) return;
if (CloseOrders(OP_BUY) > 0) return;
if (OrdersCountBar0(0) > 0) return;

//-----

for (i=0; i<RepeatN; i++)
{
RefreshRates();
price = Bid;

sl = If(StopLoss > 0, price + StopLoss*Point, 0);
tp = If(TakeProfit > 0, price - TakeProfit*Point, 0);

ticket = Sell(Symbol(), GetLots(), price, sl, tp, Magic);
if (ticket > 0) break;
}

return;
}
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

double If(bool cond, double if_true, double if_false)
{
if (cond) return (if_true);
return (if_false);
}

double GetLots()
{
return (Lots);
}

void RecountOrders()
{
BuyCnt = 0;
SellCnt = 0;

int cnt = OrdersTotal();
for (int i=0; i < cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != Magic) continue;

int type = OrderType();
if (type == OP_BUY) BuyCnt++;
if (type == OP_SELL) SellCnt++;
}
}

int OrdersCountBar0(int TF)
{
int orders = 0;

int cnt = OrdersTotal();
for (int i=0; i<cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != Magic) continue;

if (OrderOpenTime() >= iTime(NULL, TF, 0)) orders++;
}

cnt = OrdersHistoryTotal();
for (i=0; i<cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != Magic) continue;

if (OrderOpenTime() >= iTime(NULL, TF, 0)) orders++;
}

return (orders);
}

int CloseOrders(int type1, int type2 = -1)
{
int cnt = OrdersTotal();
for (int i=cnt-1; i >= 0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != Magic) continue;

int type = OrderType();
if (type != type1 && type != type2) continue;

if (type == OP_BUY)
{
RefreshRates();
CloseOrder(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID));
continue;
}

if (type == OP_SELL)
{
RefreshRates();
CloseOrder(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK));
continue;
}
}

int orders = 0;
cnt = OrdersTotal();
for (i = 0; i < cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != Magic) continue;

type = OrderType();
if (type != type1 && type != type2) continue;

orders++;
}

return (orders);
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

int SleepOk = 2000;
int SleepErr = 6000;

int Buy(string symbol, double lot, double price, double sl, double tp, int magic, string comment="")
{
int dig = MarketInfo(symbol, MODE_DIGITS);

price = NormalizeDouble(price, dig);
sl = NormalizeDouble(sl, dig);
tp = NormalizeDouble(tp, dig);

string _lot = DoubleToStr(lot, 2);
string _price = DoubleToStr(price, dig);
string _sl = DoubleToStr(sl, dig);
string _tp = DoubleToStr(tp, dig);

Print("Buy \"", symbol, "\", ", _lot, ", ", _price, ", ", Slippage, ", ", _sl, ", ", _tp, ", ", magic, ", \"", comment, "\"");

int res = OrderSend(symbol, OP_BUY, lot, price, Slippage, sl, tp, comment, magic, 0, clBuy);
if (res >= 0) {
Sleep(SleepOk);
return (res);
}

int code = GetLastError();
Print("Error opening BUY order: ", ErrorDescription(code), " (", code, ")");
Sleep(SleepErr);

return (-1);
}

int Sell(string symbol, double lot, double price, double sl, double tp, int magic, string comment="")
{
int dig = MarketInfo(symbol, MODE_DIGITS);

price = NormalizeDouble(price, dig);
sl = NormalizeDouble(sl, dig);
tp = NormalizeDouble(tp, dig);

string _lot = DoubleToStr(lot, 2);
string _price = DoubleToStr(price, dig);
string _sl = DoubleToStr(sl, dig);
string _tp = DoubleToStr(tp, dig);

Print("Sell \"", symbol, "\", ", _lot, ", ", _price, ", ", Slippage, ", ", _sl, ", ", _tp, ", ", magic, ", \"", comment, "\"");

int res = OrderSend(symbol, OP_SELL, lot, price, Slippage, sl, tp, comment, magic, 0, clSell);
if (res >= 0) {
Sleep(SleepOk);
return (res);
}

int code = GetLastError();
Print("Error opening SELL order: ", ErrorDescription(code), " (", code, ")");
Sleep(SleepErr);

return (-1);
}

bool CloseOrder(int ticket, double lot, double price)
{
if (!OrderSelect(ticket, SELECT_BY_TICKET)) return(false);
if (OrderCloseTime() > 0) return(false);

int dig = MarketInfo(OrderSymbol(), MODE_DIGITS);
string _lot = DoubleToStr(lot, 2);
string _price = DoubleToStr(price, dig);

Print("CloseOrder ", ticket, ", ", _lot, ", ", _price, ", ", Slippage);

bool res = OrderClose(ticket, lot, price, Slippage, clClose);
if (res) {
Sleep(SleepOk);
return (res);
}

int code = GetLastError();
Print("CloseOrder failed: ", ErrorDescription(code), " (", code, ")");
Sleep(SleepErr);

return (false);
}

Dodam, że sam zmieniłem SL i TP testując na testerze strategii na MT4.

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: personov »

I napisz teraz w czym dokładnie masz problem ? Od początku :
- czy w prawym górnym rogu masz uśmiechniętą buźkę ? ( może być jeszcze smutna lub krzyżyk ),
- czy w ogóle nie otwiera Ci transakcji w miejscach w których powinien ? ( jeśli tak to jakie zapisy są w zakładce dziennik ),
- czy otwiera transakcje np. na H1, a nie otwiera na H4 ?
Solą życia jest kasa.

JemPasztetową
Bywalec
Bywalec
Posty: 19
Rejestracja: 23 lis 2012, 16:44

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: JemPasztetową »

1. Bużka jest zlecenia smigają
2. Transakcje: wydaje mi się, że przy tak ustawionym sygnale K i S (20 i 80) ona są zbyt czeste
3. Pojęcia nie mam. Własnie tu jest problem - nie wiem jak to ustawić na danym time chart. Wedle testów pownienm ustawić średnioterminowo - na H1 lub najlepeij H4

ODPOWIEDZ