Vlastní indikátor do AOS

 Dobrý den, chtěl jsem se zeptat když má člověk nějaký indikátor který není standartní v MT4 ale je stažený od někoho jakym způsobem ho zapojím do AOS ? Musím překopírovat celý kód toho jak se indikátor počítá nebo se na něj dá nějak odkázat a vzít si z něj pouze danou praměnnou co potřebuji? Díky za odpovědi wink

Jste na diskusním fóru jako nepřihlášený uživatel a Vaše funkce jsou tak omezené. Pro neomezený přístup je nutné být registrovaný a přihlášený uživatel. Nejste-li registrován/a klikněte pro bezplatnou registraci. Jednoduchá registrace vám otevře cestu k profesionálním informacím.

Registrací na FXstreet.cz můžete získat:

  • Možnost diskutovat s ostatními tradery.
  • Vkládání nových příspěvků a zakládání nových témat v diskusním fóru.
  • Možnost vyhledávání v tomto velmi rozsáhlém diskusním fóru.
  • Přístup k uzamčeným odborným článkům, sekcím a školy forexu.
  • Ebooky, manuály a obchodní systémy zdarma.
  • Zasílání newsletterů a informací o nových akcích a aktivitách portálu FXstreet.cz
  • Možnost psát vlastní blogy a články.
  • Možnost objednání tradingových knih, seminářů nebo VIP zóny.
  • Další přínosné informace z oblasti obchodování na forexu.
Autor Vlastní indikátor do AOS (30 odpovědí)
Kovac
Veteran member
avatar
Příspěvky: 13988
Více informací o uživateli >>
Vlastní indikátor do AOS 21.07.2017 22:39

No dulezite otazka, jestli mas ten indikator jako EXE nebo jako MQL soubor.

Broker: Purple Trading (live) | Admiral Markets (live). Obchodní systém: Price Action, S/R, VIP zóna.
Vykuk
Veteran member
avatar
Příspěvky: 1250
Více informací o uživateli >>
iCustom 22.07.2017 07:47

Ahoj, pokud máš kód k tomu indikátoru, tak si můžeš klidně dát tu práci a překopat si ho do AOSu, ale podstatně jednodužší bude použít iCustom, viz odkaz zde.

| Broker: IC Markets (live) | Programuji MQL4 a cBoty | Obchoduji PA a EW | FX narozeniny 5.10.2012 |
mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: iCustom 24.07.2017 08:21
Odpověď na: Vykuk

Ahoj, pokud máš kód k tomu indikátoru, tak si můžeš klidně dát tu práci a překopat si ho do AOSu, ale podstatně jednodužší bude použít iCustom, viz odkaz zde.

 No paráda ....mám to jak v EXE tak MQL, takže něni problém obě řešení....ale netušil jsem že něco jako iCustom existuje ... to vyřeší dost problémů ;-)  díky.

mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
proměnná POLE 24.07.2017 10:43

Když jste mi tak pěkně poradili, mám tu jeden oříšek a stále přemýšlím jak bych ho mohl elegantně vyřešit respektive zapsat. Nastíním situaci:

Když Close[1] tak hodnota indikátoru se zapíše do proměnné pole Indikator_buffer[2] na pozici č.0 

a zároveň se hodnota indikatoru z pole na pozici 0 přesune na pozici č.1.

Zkrátka aby se mi v proměnné pole při uzavírání svíček aktualizovali tyto dvě pozice s hodnotami indikatoru uzavřené svičky1 a svíčky2.  Je to pro následné podmínky k otevírání obchodu kdy zadavám indikator_buffer[0] < indikator_buffer[1].  Pokud víte děkuji ;-)

mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: proměnná POLE 24.07.2017 11:03
Odpověď na: mira.vorlik

Když jste mi tak pěkně poradili, mám tu jeden oříšek a stále přemýšlím jak bych ho mohl elegantně vyřešit respektive zapsat. Nastíním situaci:

Když Close[1] tak hodnota indikátoru se zapíše do proměnné pole Indikator_buffer[2] na pozici č.0 

a zároveň se hodnota indikatoru z pole na pozici 0 přesune na pozici č.1.

Zkrátka aby se mi v proměnné pole při uzavírání svíček aktualizovali tyto dvě pozice s hodnotami indikatoru uzavřené svičky1 a svíčky2.  Je to pro následné podmínky k otevírání obchodu kdy zadavám indikator_buffer[0] < indikator_buffer[1].  Pokud víte děkuji ;-)

Nějak takto ale nefungujecry :

if (Close[1]!=Close[1])
{
Indikator_Buffer[1]=Indikator_Buffer[2];
Indikator_Buffer[1]=Indikator;
}

mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: Re: proměnná POLE 24.07.2017 12:50
Odpověď na: mira.vorlik

Nějak takto ale nefungujecry :

if (Close[1]!=Close[1])
{
Indikator_Buffer[1]=Indikator_Buffer[2];
Indikator_Buffer[1]=Indikator;
}

Problém je v té podmínce, potřebuju zapsat toto:

if Close[1] změní cenu tak: //ale ne v zavisloti na nečem jen když prostě se změní cena close je proto nějaký příkaz ?

Vykuk
Veteran member
avatar
Příspěvky: 1250
Více informací o uživateli >>
Re: Re: Re: proměnná POLE 24.07.2017 13:27
Odpověď na: mira.vorlik

Problém je v té podmínce, potřebuju zapsat toto:

if Close[1] změní cenu tak: //ale ne v zavisloti na nečem jen když prostě se změní cena close je proto nějaký příkaz ?

Problém bude v tom, že ta podmínka nebude nikdy TRUE, protoýe Close[1] je vždy rovno Close[1]. Je to jako by jsi napsal if( 10 < 10 )...

Takže pokud chceš trigrovat změnou hodnoty close na svíčce [1] (poslední dokončená svíčka), tak si ji ulož do proměnné a ověřuj ji v dalším cyklu...

Nahoře v globálních, mimo metodu OnTick() definuj třeba:

double temp = 0;

if( Close[1] != temp )

{

temp = Close[1];

//a teď ještě proveď ty akce, které spouštíš, to posouvání v bufferu atd...

}

| Broker: IC Markets (live) | Programuji MQL4 a cBoty | Obchoduji PA a EW | FX narozeniny 5.10.2012 |
mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: Re: Re: Re: proměnná POLE 24.07.2017 13:47
Odpověď na: Vykuk

Problém bude v tom, že ta podmínka nebude nikdy TRUE, protoýe Close[1] je vždy rovno Close[1]. Je to jako by jsi napsal if( 10 < 10 )...

Takže pokud chceš trigrovat změnou hodnoty close na svíčce [1] (poslední dokončená svíčka), tak si ji ulož do proměnné a ověřuj ji v dalším cyklu...

Nahoře v globálních, mimo metodu OnTick() definuj třeba:

double temp = 0;

if( Close[1] != temp )

{

temp = Close[1];

//a teď ještě proveď ty akce, které spouštíš, to posouvání v bufferu atd...

}

Mám trochu problémy se strukturou programu. Když dám vypočet pro indikator mimo OnTick()  tak mi napíše že neni definována proměnná a když ji nechám v OnTicku tak mi zase chybí ve funkci pro ty svíčky mimo OnTick a když ten výpočet dám pod externy hned nahoru tak mi to to sice chybu nehlasí kdžto obchody nebere ..... no dobrej guláš ....

mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: Re: Re: Re: Re: proměnná POLE 24.07.2017 13:56
Odpověď na: mira.vorlik

Mám trochu problémy se strukturou programu. Když dám vypočet pro indikator mimo OnTick()  tak mi napíše že neni definována proměnná a když ji nechám v OnTicku tak mi zase chybí ve funkci pro ty svíčky mimo OnTick a když ten výpočet dám pod externy hned nahoru tak mi to to sice chybu nehlasí kdžto obchody nebere ..... no dobrej guláš ....

//+------------------------------------------------------------------+
//| pokus.mq4 |
//| Mira_Vorlik |
//| https://www.seznam.cz |
//+------------------------------------------------------------------+
#property copyright "Mira_Vorlik"
#property link "https://www.seznam.cz"
#property version "1.00"
#property strict

extern double StopLoss_v_pipech = 200;
extern double ProfitTarget_v_pipech = 300;
extern double Velikost_pozice = 0.05; // definice velikosti pozice pro obchodován
extern double ADX_Period = 14;
extern double ADX_Metoda = 3;
double ADX_Buffer[2];


//-------------------------------------TADY NĚVÍM KAM TO ZAŘADIT -------------------------------------------
double close=0;

if(Close[1]!=close)//porovnává proměnnou close s aktualním Close
{
ADX_Buffer[0]= ADX_Buffer[1];
ADX_Buffer[0]=ADX;
close=Close[1]; //ukladá do proměnné
}
//---------------------------------------------------------------------------------------------------------------------------


//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(0); }

//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double SL = StopLoss_v_pipech*Point;
double PT = ProfitTarget_v_pipech*Point;
string Text = "Obchod_buy";
int Magic_number1 =11;
int q;
int ticket;
double ADX=iCustom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,0);//double ADX=iCustom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,0);//


//******funkce pro nákup*******************************************************************************************
for(q = 0; q < OrdersTotal(); q++) // počítadlo pro zjištění počtu pokynů
{
if(OrderSelect(q, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber()==Magic_number1)
{return; }
}
if(ADX>50 && ADX_Buffer[0]<ADX_Buffer[1]) // nákup když hodnota ADX je nad 50
// předešlá hodnota ADX je větší než aktuální

{
ticket = OrderSend (Symbol(), OP_BUY, Velikost_pozice, Ask, 0, Ask-SL, Ask+PT, Text, Magic_number1, 0, Blue);
}
}
//******************************************************************************************************************


Vykuk
Veteran member
avatar
Příspěvky: 1250
Více informací o uživateli >>
Re: Re: Re: Re: Re: proměnná POLE 24.07.2017 14:13
Odpověď na: mira.vorlik

Mám trochu problémy se strukturou programu. Když dám vypočet pro indikator mimo OnTick()  tak mi napíše že neni definována proměnná a když ji nechám v OnTicku tak mi zase chybí ve funkci pro ty svíčky mimo OnTick a když ten výpočet dám pod externy hned nahoru tak mi to to sice chybu nehlasí kdžto obchody nebere ..... no dobrej guláš ....

Promiň, nepřehledně jsem to napsal a udělal jsem ti v tom guláš :-D. Takže ten deklarační řádek double temp = 0; má být mimo ty hlavní funkce. To znamená tam, jak deklaruješ i ty extern proměnný. Jen ten temp bude bez toho extern.

Ten zbytek, tedy toto:

if(Close[1]!=close)//porovnává proměnnou close s aktualním Close
{
ADX_Buffer[0]= ADX_Buffer[1]; 
ADX_Buffer[0]=ADX;
close=Close[1]; //ukladá do proměnné

potom patří tam, kde tu podmínku chceš ověřovat a ty akce provádět. Takže předpokládám do OnTick()

| Broker: IC Markets (live) | Programuji MQL4 a cBoty | Obchoduji PA a EW | FX narozeniny 5.10.2012 |
Fil
Silver member
avatar
Příspěvky: 52
Více informací o uživateli >>
Re: proměnná POLE 24.07.2017 18:03
Odpověď na: mira.vorlik

Když jste mi tak pěkně poradili, mám tu jeden oříšek a stále přemýšlím jak bych ho mohl elegantně vyřešit respektive zapsat. Nastíním situaci:

Když Close[1] tak hodnota indikátoru se zapíše do proměnné pole Indikator_buffer[2] na pozici č.0 

a zároveň se hodnota indikatoru z pole na pozici 0 přesune na pozici č.1.

Zkrátka aby se mi v proměnné pole při uzavírání svíček aktualizovali tyto dvě pozice s hodnotami indikatoru uzavřené svičky1 a svíčky2.  Je to pro následné podmínky k otevírání obchodu kdy zadavám indikator_buffer[0] < indikator_buffer[1].  Pokud víte děkuji ;-)

Já to mám napsané pro indikátor takto, jde to použít i pro AOS:

j = Bars - 1;
//----
for(j = 0; j <= Bars ; j++)
{

data_Buffer[j+1]=iMAOnArray(prumer_buffer,Bars,prumer,0,0,j); // Zde jde jakákoliv funkce, výpočet nebo cokoliv
}

Zapíše to hodnotu iMAOnArray z aktuální svíčky j do data_Buffer[j+1] předchozí svíčky (proto to +1). Je jedno kam to chci zapsat, lze dát +1, +2, +n. Hodnotu vyvolám data_Buffer[1] nebo data_Buffer[2] nebo jakoukoliv svíčku z grafu chci.

Pomohlo?

Fil
Silver member
avatar
Příspěvky: 52
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: proměnná POLE 24.07.2017 21:37
Odpověď na: mira.vorlik

//+------------------------------------------------------------------+
//| pokus.mq4 |
//| Mira_Vorlik |
//| https://www.seznam.cz |
//+------------------------------------------------------------------+
#property copyright "Mira_Vorlik"
#property link "https://www.seznam.cz"
#property version "1.00"
#property strict

extern double StopLoss_v_pipech = 200;
extern double ProfitTarget_v_pipech = 300;
extern double Velikost_pozice = 0.05; // definice velikosti pozice pro obchodován
extern double ADX_Period = 14;
extern double ADX_Metoda = 3;
double ADX_Buffer[2];


//-------------------------------------TADY NĚVÍM KAM TO ZAŘADIT -------------------------------------------
double close=0;

if(Close[1]!=close)//porovnává proměnnou close s aktualním Close
{
ADX_Buffer[0]= ADX_Buffer[1];
ADX_Buffer[0]=ADX;
close=Close[1]; //ukladá do proměnné
}
//---------------------------------------------------------------------------------------------------------------------------


//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(0); }

//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double SL = StopLoss_v_pipech*Point;
double PT = ProfitTarget_v_pipech*Point;
string Text = "Obchod_buy";
int Magic_number1 =11;
int q;
int ticket;
double ADX=iCustom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,0);//double ADX=iCustom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,0);//


//******funkce pro nákup*******************************************************************************************
for(q = 0; q < OrdersTotal(); q++) // počítadlo pro zjištění počtu pokynů
{
if(OrderSelect(q, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber()==Magic_number1)
{return; }
}
if(ADX>50 && ADX_Buffer[0]<ADX_Buffer[1]) // nákup když hodnota ADX je nad 50
// předešlá hodnota ADX je větší než aktuální

{
ticket = OrderSend (Symbol(), OP_BUY, Velikost_pozice, Ask, 0, Ask-SL, Ask+PT, Text, Magic_number1, 0, Blue);
}
}
//******************************************************************************************************************


Rád bych pomohl, ale tento systém nemůže fungovat. Připadá mi to, jako nakopírovaná směs z několika systémů do jednoho souboru bez logické vazby a posloupnosti programu.

Problém s "TADY NĚVÍM KAM TO ZAŘADIT" je ten, že to nemůže fungovat pro porovnání dvou hodnot a navíc musí být v OnTick().

Nevím, jestli víš, co je v tomto napsáno, ale přeložím to takto:

Když Close uzavřené svíčky 1 není rovno Close, tak se ADX_Bufer[0] první změní na ADX_Bufer[1] a ihned se zase změní na ADX_Bufer[0] a Close se změní na Close uzavřené svíčky 1. Takže se nic nestane. Nevím proč řešit Close a Close[1], když je obchod otevřen jen na základě hodnot ADX otevřené a zavřené svíčky.

Ve funkci iCustom stačí poslední číslo v závorce změnit z 0 na 1 a hned bere data ze svíčky 0 a svíčky 1. Já bych to napsal takto (i to takto používám):

double ADX_posledni=iCustom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,0);

double ADX_predposledni=Custom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,1);

 To že jsou tam další chyby (když nepočítám celou část  "TADY NĚVÍM KAM TO ZAŘADIT" ), tak jich je dalších 6 a všechny znemožňují funkčnost. 

To nejdůležitější je, že není definován Buffer a tak nejde pracovat s hodnotou [0], [1] případně [2]. Nemusí být použit, když bude použit můj návrh.

Fil
Silver member
avatar
Příspěvky: 52
Více informací o uživateli >>
Re: Re: proměnná POLE 24.07.2017 22:22
Odpověď na: mira.vorlik

Nějak takto ale nefungujecry :

if (Close[1]!=Close[1])
{
Indikator_Buffer[1]=Indikator_Buffer[2];
Indikator_Buffer[1]=Indikator;
}

Dnes je klid a tak se nudím, tady máš upravený systém bez chyb, ale není vyzkoušeno, protože je tam iCustom. 

Snad ti to pomůže, ale nastavil sis to jen na jeden otevřený obchod, ale to už je brnkačka.

//+------------------------------------------------------------------+
//| pokus.mq4 |
//| Mira_Vorlik |
//| https://www.seznam.cz |
//+------------------------------------------------------------------+
#property copyright "Mira_Vorlik"
#property link "https://www.seznam.cz"
#property version "1.00"
#property strict
extern double StopLoss_v_pipech = 200;
extern double ProfitTarget_v_pipech = 300;
extern double Velikost_pozice = 0.05; // definice velikosti pozice pro obchodován
extern double ADX_Period = 14;
extern double ADX_Metoda = 3;

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(0); }

//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double SL = StopLoss_v_pipech*Point;
double PT = ProfitTarget_v_pipech*Point;
string Text = "Obchod_buy";
int Magic_number1 =11;
int pocet = 0;

double ADX_posledni=iCustom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,0);
double ADX_predposledni=iCustom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,1);

//******funkce pro nákup*******************************************************************************************
for(int q = 0; pocet < OrdersTotal(); q++) // počítadlo pro zjištění počtu pokynů
{
pocet++;
if(OrderSelect(q, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber()==Magic_number1)
{return; }
}
if(ADX_posledni>50 && ADX_posledni<ADX_predposledni) // nákup když hodnota ADX je nad 50
// předešlá hodnota ADX je větší než aktuální
{
int ticket = OrderSend (Symbol(), OP_BUY, Velikost_pozice, Ask, 0, Ask-SL, Ask+PT, Text, Magic_number1, 0, Blue);
}
}
//******************************************************************************************************************

mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: Re: Re: proměnná POLE 25.07.2017 07:28
Odpověď na: Fil

Dnes je klid a tak se nudím, tady máš upravený systém bez chyb, ale není vyzkoušeno, protože je tam iCustom. 

Snad ti to pomůže, ale nastavil sis to jen na jeden otevřený obchod, ale to už je brnkačka.

//+------------------------------------------------------------------+
//| pokus.mq4 |
//| Mira_Vorlik |
//| https://www.seznam.cz |
//+------------------------------------------------------------------+
#property copyright "Mira_Vorlik"
#property link "https://www.seznam.cz"
#property version "1.00"
#property strict
extern double StopLoss_v_pipech = 200;
extern double ProfitTarget_v_pipech = 300;
extern double Velikost_pozice = 0.05; // definice velikosti pozice pro obchodován
extern double ADX_Period = 14;
extern double ADX_Metoda = 3;

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(0); }

//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double SL = StopLoss_v_pipech*Point;
double PT = ProfitTarget_v_pipech*Point;
string Text = "Obchod_buy";
int Magic_number1 =11;
int pocet = 0;

double ADX_posledni=iCustom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,0);
double ADX_predposledni=iCustom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,1);

//******funkce pro nákup*******************************************************************************************
for(int q = 0; pocet < OrdersTotal(); q++) // počítadlo pro zjištění počtu pokynů
{
pocet++;
if(OrderSelect(q, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber()==Magic_number1)
{return; }
}
if(ADX_posledni>50 && ADX_posledni<ADX_predposledni) // nákup když hodnota ADX je nad 50
// předešlá hodnota ADX je větší než aktuální
{
int ticket = OrderSend (Symbol(), OP_BUY, Velikost_pozice, Ask, 0, Ask-SL, Ask+PT, Text, Magic_number1, 0, Blue);
}
}
//******************************************************************************************************************

Tak tohle mi přijde opravdu jako nejelgantnější řešení. Mockrát díky. Jsem rad že za včerejší dobu uvažovaní jsem si nevyškubal vlasy laughing

mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: proměnná POLE 25.07.2017 08:06
Odpověď na: Fil

Rád bych pomohl, ale tento systém nemůže fungovat. Připadá mi to, jako nakopírovaná směs z několika systémů do jednoho souboru bez logické vazby a posloupnosti programu.

Problém s "TADY NĚVÍM KAM TO ZAŘADIT" je ten, že to nemůže fungovat pro porovnání dvou hodnot a navíc musí být v OnTick().

Nevím, jestli víš, co je v tomto napsáno, ale přeložím to takto:

Když Close uzavřené svíčky 1 není rovno Close, tak se ADX_Bufer[0] první změní na ADX_Bufer[1] a ihned se zase změní na ADX_Bufer[0] a Close se změní na Close uzavřené svíčky 1. Takže se nic nestane. Nevím proč řešit Close a Close[1], když je obchod otevřen jen na základě hodnot ADX otevřené a zavřené svíčky.

Ve funkci iCustom stačí poslední číslo v závorce změnit z 0 na 1 a hned bere data ze svíčky 0 a svíčky 1. Já bych to napsal takto (i to takto používám):

double ADX_posledni=iCustom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,0);

double ADX_predposledni=Custom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,1);

 To že jsou tam další chyby (když nepočítám celou část  "TADY NĚVÍM KAM TO ZAŘADIT" ), tak jich je dalších 6 a všechny znemožňují funkčnost. 

To nejdůležitější je, že není definován Buffer a tak nejde pracovat s hodnotou [0], [1] případně [2]. Nemusí být použit, když bude použit můj návrh.

Jen dodatečně tedy:

if(Close[1]!=close)//porovnává proměnnou close s aktualním Close{

ADX_Buffer[0]= ADX_Buffer[1]; // hodnota ADX se zkopíruje z pozice 0 na pozici jedna

ADX_Buffer[0]=ADX;  // na pozici nula se nakopíruje nová hodnota ADX dle iCustom vzroce

close=Close[1]; // do proměnné close se nastaví nová cena svíčky

Dle toho by to to mělo ale fungovat nebo se fakt mýlim? Pokud se nerovna hodnota Close[1] proměné tak se se posune hodnota v poli z pozice 0 na pozici 1 a následně se na pozici 0 zapíše nová hodnota ADX vypočítaná z indikátoru a do proměnné close se zapíše nová hodnota Close[1] a tím se opět porovnává dokud nenaskočí nové Close[1] a celé se to dokola neopakuje..... 

Když Close uzavřené svíčky 1 není rovno Close, tak se ADX_Bufer[0] první změní na ADX_Bufer[1] a ihned se zase změní na ADX_Bufer[0] a Close se změní na Close uzavřené svíčky 1. Takže se nic nestane. Nevím proč řešit Close a Close[1], když je obchod otevřen jen na základě hodnot ADX otevřené a zavřené svíčky.

Fil
Silver member
avatar
Příspěvky: 52
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 25.07.2017 08:35
Odpověď na: mira.vorlik

Jen dodatečně tedy:

if(Close[1]!=close)//porovnává proměnnou close s aktualním Close{

ADX_Buffer[0]= ADX_Buffer[1]; // hodnota ADX se zkopíruje z pozice 0 na pozici jedna

ADX_Buffer[0]=ADX;  // na pozici nula se nakopíruje nová hodnota ADX dle iCustom vzroce

close=Close[1]; // do proměnné close se nastaví nová cena svíčky

Dle toho by to to mělo ale fungovat nebo se fakt mýlim? Pokud se nerovna hodnota Close[1] proměné tak se se posune hodnota v poli z pozice 0 na pozici 1 a následně se na pozici 0 zapíše nová hodnota ADX vypočítaná z indikátoru a do proměnné close se zapíše nová hodnota Close[1] a tím se opět porovnává dokud nenaskočí nové Close[1] a celé se to dokola neopakuje..... 

Když Close uzavřené svíčky 1 není rovno Close, tak se ADX_Bufer[0] první změní na ADX_Bufer[1] a ihned se zase změní na ADX_Bufer[0] a Close se změní na Close uzavřené svíčky 1. Takže se nic nestane. Nevím proč řešit Close a Close[1], když je obchod otevřen jen na základě hodnot ADX otevřené a zavřené svíčky.

V tomto případě by to nemohlo ani moc fungovat. Představ si situaci, kdy během posledních 2-3 svíček nedojde ke změně ceny - prostě Open=High=Low=Close - když není vol. tak se to stává. Tak ten tvůj zápis nic dělat nebude, ale ADX, protože se vypočítává za několik svíček zpět, tak bude pořád měnit cenu. Tvůj systém na tuto změnu ani nezareaguje.

A teď Buffer. To je ten problém s Bufferem, nejde si dát, že zadám z [0] a to zapíšu do [1]. Ty čísla v závorce jsou pouze pro vyvolání hodnoty z pozice z Bufferu. Navíc nebylo správně zadáno nastavení Bufferu, správně mělo být hned na začátku pod extern double ADX_Buffer[];. Tak jak sem psal výše (upravil jsem to a zadal ty tvoje hodnoty, pokud bys to chtěl použít teď nebo někdy jindy) "

j = Bars - 1; 
//---- 
for(j = 0; j <= Bars ; j++)
{

ADX_Buffer[j]=iCustom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,j);
}

" je to nutné takto zadat, aby se Buffer nakrmil daty. Buffer je dobrá věc, ale musí se pochopit. Ten jsem pochopil, když jsem upravoval indikátory.

V tomto případě, bych Buffer nepoužil, data už máš z indikátoru, a navíc je Buffer časově (cca 50-100ms) náročnější. 

Snad jsem to vysvětlil srozumitelně?

PS: Nějak jsem nepochopil použití toho ADX (třeba je upravený výpočet, nevím), ADX měří vol. trendu, ale hodnoty nad 40 jsou už moc a ty pracuješ s hodnotou nad 50. Navíc chceš, aby ten trend skončil, ADX poslední musí být menší než předposlední. Asi to máš vysledované, ale většinou se bere začínající trend, když ADX překoná 20 u váhavějších 25.

Fil
Silver member
avatar
Příspěvky: 52
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 25.07.2017 08:51
Odpověď na: mira.vorlik

Jen dodatečně tedy:

if(Close[1]!=close)//porovnává proměnnou close s aktualním Close{

ADX_Buffer[0]= ADX_Buffer[1]; // hodnota ADX se zkopíruje z pozice 0 na pozici jedna

ADX_Buffer[0]=ADX;  // na pozici nula se nakopíruje nová hodnota ADX dle iCustom vzroce

close=Close[1]; // do proměnné close se nastaví nová cena svíčky

Dle toho by to to mělo ale fungovat nebo se fakt mýlim? Pokud se nerovna hodnota Close[1] proměné tak se se posune hodnota v poli z pozice 0 na pozici 1 a následně se na pozici 0 zapíše nová hodnota ADX vypočítaná z indikátoru a do proměnné close se zapíše nová hodnota Close[1] a tím se opět porovnává dokud nenaskočí nové Close[1] a celé se to dokola neopakuje..... 

Když Close uzavřené svíčky 1 není rovno Close, tak se ADX_Bufer[0] první změní na ADX_Bufer[1] a ihned se zase změní na ADX_Bufer[0] a Close se změní na Close uzavřené svíčky 1. Takže se nic nestane. Nevím proč řešit Close a Close[1], když je obchod otevřen jen na základě hodnot ADX otevřené a zavřené svíčky.

Ještě k tomu zápisu. Když si nebudu všímat, že to byl pokus o Buffer, tak to jde takto udělat, ale bez hranatých závorek. Co je ještě důležitější je zápis, musí se postupovat z leva do prava a tak musí být x = něco, nelze dávat něco se bude rovnat x (něco = x):

if(Close[1] != close)//porovnává proměnnou close s aktualním Close

{

ADX_1 = ADX_0; // hodnota ADX_0 se zkopíruje z pozice 0 na pozici jedna

ADX_0 = ADX;  // na pozici nula se nakopíruje nová hodnota ADX dle iCustom vzroce

close = Close[1]; // do proměnné close se nastaví nová cena svíčky

}

Takto by to šlo, ale viz. výše problém s cenou close, která se nebude měnit a adx ano!!!

mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 25.07.2017 10:55
Odpověď na: Fil

Ještě k tomu zápisu. Když si nebudu všímat, že to byl pokus o Buffer, tak to jde takto udělat, ale bez hranatých závorek. Co je ještě důležitější je zápis, musí se postupovat z leva do prava a tak musí být x = něco, nelze dávat něco se bude rovnat x (něco = x):

if(Close[1] != close)//porovnává proměnnou close s aktualním Close

{

ADX_1 = ADX_0; // hodnota ADX_0 se zkopíruje z pozice 0 na pozici jedna

ADX_0 = ADX;  // na pozici nula se nakopíruje nová hodnota ADX dle iCustom vzroce

close = Close[1]; // do proměnné close se nastaví nová cena svíčky

}

Takto by to šlo, ale viz. výše problém s cenou close, která se nebude měnit a adx ano!!!

Děkuji za připomínky, moc publikací a příkladu nemám tak surfuju kde se dá a tohle mi rozhodně pomáha pochopit jak to vše funguje. Já to ADX používám na krátkodobé otočení trendu (5-20) min u binarních opcí a snažím se naprogramovat si BackTest než strategii a až bude hotovo tak optimalizace atd..... snad nebude vadit kdybych měl další dotazy v průběhu mé cesty ;-) 

Fil
Silver member
avatar
Příspěvky: 52
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 25.07.2017 11:08
Odpověď na: mira.vorlik

Děkuji za připomínky, moc publikací a příkladu nemám tak surfuju kde se dá a tohle mi rozhodně pomáha pochopit jak to vše funguje. Já to ADX používám na krátkodobé otočení trendu (5-20) min u binarních opcí a snažím se naprogramovat si BackTest než strategii a až bude hotovo tak optimalizace atd..... snad nebude vadit kdybych měl další dotazy v průběhu mé cesty ;-) 

V pohodě není problém, stačí používat selský rozum a logiku. 

U binárních opcí pozor, tam se hraje proti brokerovi a ten nerad platí ze svého.

"Počítač neudělá nic, co mu neřeknu, aby udělal a nebo to udělá přesně podle toho, jak mu to řeknu a je mu jedno, jestli to je dobře nebo špatně."

Fil
Silver member
avatar
Příspěvky: 52
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 25.07.2017 11:25
Odpověď na: mira.vorlik

Děkuji za připomínky, moc publikací a příkladu nemám tak surfuju kde se dá a tohle mi rozhodně pomáha pochopit jak to vše funguje. Já to ADX používám na krátkodobé otočení trendu (5-20) min u binarních opcí a snažím se naprogramovat si BackTest než strategii a až bude hotovo tak optimalizace atd..... snad nebude vadit kdybych měl další dotazy v průběhu mé cesty ;-) 

Ještě pár potřehů, co třeba pomůžou, k testům pro binární opce:

- u brokera, kde jsem to zkoušel, byla cena jako průměr Bid+Ask/2

- proto při testu musí být obchod v plusu alespoň 1/2 spreadu

- lze naprogramovat, že při splnění podmínek se otevře třeba 20 obchodů (každý má svůj Magic 1-20) a AOS je postupně zavírá po upynutí 1 - 20 minuty, lze pak najít nejvhodnější délku trvání opce

- pozor na to, ale nová svíčka se nemusí otevřít přesně v 0s, ale klidně i po 10-15s v té které minutě

- pozor u účtů kde je variabilní spread, moc lidí to nesleduje a zajímají se jen o co nejnižší spread, ale mám přesně zjištěno, že rozdíl mezi minimálním spreadem a maximálním spreadem je i 200-400% (čas 8:00-22:00), přitom průměr je jen o 10-50% vyšší než minimální.

mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 25.07.2017 12:34
Odpověď na: Fil

Ještě pár potřehů, co třeba pomůžou, k testům pro binární opce:

- u brokera, kde jsem to zkoušel, byla cena jako průměr Bid+Ask/2

- proto při testu musí být obchod v plusu alespoň 1/2 spreadu

- lze naprogramovat, že při splnění podmínek se otevře třeba 20 obchodů (každý má svůj Magic 1-20) a AOS je postupně zavírá po upynutí 1 - 20 minuty, lze pak najít nejvhodnější délku trvání opce

- pozor na to, ale nová svíčka se nemusí otevřít přesně v 0s, ale klidně i po 10-15s v té které minutě

- pozor u účtů kde je variabilní spread, moc lidí to nesleduje a zajímají se jen o co nejnižší spread, ale mám přesně zjištěno, že rozdíl mezi minimálním spreadem a maximálním spreadem je i 200-400% (čas 8:00-22:00), přitom průměr je jen o 10-50% vyšší než minimální.

Říkal jsem si že pokud v testeru zadám spread 0 a v programu budu používat jen bid nebo ask tak nemusím žádné dělení ani řešit..... jen se ještě zeptám jak je ta podmníka správně  něco něco....&& OrderOpenTime()+900  //900 jako 15min* 60s ??

mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 25.07.2017 13:07
Odpověď na: mira.vorlik

Říkal jsem si že pokud v testeru zadám spread 0 a v programu budu používat jen bid nebo ask tak nemusím žádné dělení ani řešit..... jen se ještě zeptám jak je ta podmníka správně  něco něco....&& OrderOpenTime()+900  //900 jako 15min* 60s ??

Repsektive takto a stejně to zase nejde :D .... 

int m = TimeMinute(TimeCurrent()); // zjistí aktuální minutu  

if(m == TimeMinute(OrderOpenTime()) + 9)//podmínka

mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 25.07.2017 13:13
Odpověď na: mira.vorlik

Repsektive takto a stejně to zase nejde :D .... 

int m = TimeMinute(TimeCurrent()); // zjistí aktuální minutu  

if(m == TimeMinute(OrderOpenTime()) + 9)//podmínka

To je taky blbost protože když otevře v 7:50 a obchod bude na 15 min tak by měl zavřít 8:05 a ta podmínka mi řekne že má zavřít 7:65 a pochybuju že si to umí přebrat ....

Fil
Silver member
avatar
Příspěvky: 52
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 25.07.2017 13:17
Odpověď na: mira.vorlik

Říkal jsem si že pokud v testeru zadám spread 0 a v programu budu používat jen bid nebo ask tak nemusím žádné dělení ani řešit..... jen se ještě zeptám jak je ta podmníka správně  něco něco....&& OrderOpenTime()+900  //900 jako 15min* 60s ??

Dát do testeru 0 spread je špatně, protože to bere jen cenu Bid, ale u výpočtu pro ocpce je to (Bid + Ask) /2 a z toho ještě u kotace na 5 míst udělají jen 4 místou kotaci a ten průměr zaokrouhlují. Takže obchody ti možná budou vycházet dobře, ale pokud nebudou v zisku minimálně o spread, tak nic nezjistíš. U opcí se hraje o každý pip, broker si to takto zařizuje.

Zkusit to můžeš, ale bez toho průměru bych byl opatrný.

Fil
Silver member
avatar
Příspěvky: 52
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 25.07.2017 13:50
Odpověď na: mira.vorlik

To je taky blbost protože když otevře v 7:50 a obchod bude na 15 min tak by měl zavřít 8:05 a ta podmínka mi řekne že má zavřít 7:65 a pochybuju že si to umí přebrat ....

Protože chceš rozsah 1-20 minut, tak musíš testovat na M1, protože tam alespoň vidíš, jak trochu vypadal pohyb při tvorbě svíčky. U M15 zjistíš jen Open, High, Low a Close, ale MT4 si neuchovává tickové data. Ani nejsou potřeba, protože každý broker je má jiné a tahat je od nějakého poskytovatele a pak obchodovat u jiného je blbost, pořád to tu někdo řeší, ale je to zbytečná práce.

AOS se provádí po každém ticku a tak je s open i close svíčky problém. Řešil jsem problém, kdy jsem potřeboval uchovat data z každé zavřené svíčky, ale jen 1x. Problém je, že nikdo neví, kdy svíčka skončí a ani kdy začne vznikat nová (zní to možná blbě, ale je to tak). Čas přesně 11:59:59 je krásný, ale pokud v tom okamžiku nedojde k ticku, tak program čas prošvihne a neudělá nic. To stejně 12:00:00, když nebude tick, tak program nic neudělá. Někdy se prostě stane, že 30s před ukončením svíčky, už k žádnému ticku nedojde a nová svíčka se vytvoří až 20s po čase otevření. Mám to ověřeno, není třeba o tom polemizovat.

Ale já se nezvádám a tak jsem to vyřešil, možná složitě (kdybych to ještě ladil, dalo by se to vymyslet lépe), já sem to potřeboval jen na 1 zkoušku a když to fungovalo, tak bylo hotovo. 

// Nutno předem vyfiltrovat obchody z terminálu podle magic

int shift = "zde musí být čas otevření obchodu s magic dle nastavení" + PERIOD_M1*(magic); //magic je hodnota kolik minut má být otevřen

int open_svicka = iTime(0,0,0); // zde se zjistí čas poslední svíčky

if(open_svicka >= shift) //porovnání časů a pak vykonání close nebo dalších příkazů
{

//následuje příkaz na zavření změnu nebo cokoliv jiného
}

Takže zápis je - zjisti jaký má čas poslední svíčka, jestli je poslední svíčka větší nebo rovna času, který uběhl od otevření svíčky + její doba trvání, tak třeba svíčku s tímto magic zavři nebo s ní něco udělej.

Zkus to, snad to bude fungovat, kdyby něco dej vědět, otestoval bych to a pak poslal, ale to bys měl už moc snadné.

mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 26.07.2017 08:33
Odpověď na: Fil

Protože chceš rozsah 1-20 minut, tak musíš testovat na M1, protože tam alespoň vidíš, jak trochu vypadal pohyb při tvorbě svíčky. U M15 zjistíš jen Open, High, Low a Close, ale MT4 si neuchovává tickové data. Ani nejsou potřeba, protože každý broker je má jiné a tahat je od nějakého poskytovatele a pak obchodovat u jiného je blbost, pořád to tu někdo řeší, ale je to zbytečná práce.

AOS se provádí po každém ticku a tak je s open i close svíčky problém. Řešil jsem problém, kdy jsem potřeboval uchovat data z každé zavřené svíčky, ale jen 1x. Problém je, že nikdo neví, kdy svíčka skončí a ani kdy začne vznikat nová (zní to možná blbě, ale je to tak). Čas přesně 11:59:59 je krásný, ale pokud v tom okamžiku nedojde k ticku, tak program čas prošvihne a neudělá nic. To stejně 12:00:00, když nebude tick, tak program nic neudělá. Někdy se prostě stane, že 30s před ukončením svíčky, už k žádnému ticku nedojde a nová svíčka se vytvoří až 20s po čase otevření. Mám to ověřeno, není třeba o tom polemizovat.

Ale já se nezvádám a tak jsem to vyřešil, možná složitě (kdybych to ještě ladil, dalo by se to vymyslet lépe), já sem to potřeboval jen na 1 zkoušku a když to fungovalo, tak bylo hotovo. 

// Nutno předem vyfiltrovat obchody z terminálu podle magic

int shift = "zde musí být čas otevření obchodu s magic dle nastavení" + PERIOD_M1*(magic); //magic je hodnota kolik minut má být otevřen

int open_svicka = iTime(0,0,0); // zde se zjistí čas poslední svíčky

if(open_svicka >= shift) //porovnání časů a pak vykonání close nebo dalších příkazů
{

//následuje příkaz na zavření změnu nebo cokoliv jiného
}

Takže zápis je - zjisti jaký má čas poslední svíčka, jestli je poslední svíčka větší nebo rovna času, který uběhl od otevření svíčky + její doba trvání, tak třeba svíčku s tímto magic zavři nebo s ní něco udělej.

Zkus to, snad to bude fungovat, kdyby něco dej vědět, otestoval bych to a pak poslal, ale to bys měl už moc snadné.

Zkusil jsem to otestovat standartně na TF 5M protože nechci na M1 pak mi indikatory ukazují jiná data a dosadil jsem tam danou funkci takto nastavenou int shift aby uzaviral po 15 min (s tím že budu testovat 5,10,15,20min: 

int shift = (int) OrderOpenTime() + PERIOD_M1*900; // obchody se mi zavirají 18,17,18,20,18,18,20 min což je dost velká odchylka... musím vykoumat jiný postup zdá se.

Pokud nastavím int shift = (int) OrderOpenTime() + PERIOD_M5*180; zavírá se stejně

-------------------------------------

Pak jsem se vrátil k problému s průměrnou cenu pro otevírání a zavírání obchodu s tak jsem udělal toto:

 

int ticket = OrderSend (Symbol(), OP_BUY, Velikost_pozice, (Bid + Ask)/2, 0, Ask-SL, Ask+PT, Text, Magic_number1,0, Blue); 

ale žadný obchod se neotevřel takže jak se dá otevřít obchod když zdáse mohu zadat jen Bid či Ask frown....samej problém v cestě a to to má usnadnit práci laughing

 

 

 

 

 

 

 

 

 

Fil
Silver member
avatar
Příspěvky: 52
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 26.07.2017 09:00
Odpověď na: mira.vorlik

Zkusil jsem to otestovat standartně na TF 5M protože nechci na M1 pak mi indikatory ukazují jiná data a dosadil jsem tam danou funkci takto nastavenou int shift aby uzaviral po 15 min (s tím že budu testovat 5,10,15,20min: 

int shift = (int) OrderOpenTime() + PERIOD_M1*900; // obchody se mi zavirají 18,17,18,20,18,18,20 min což je dost velká odchylka... musím vykoumat jiný postup zdá se.

Pokud nastavím int shift = (int) OrderOpenTime() + PERIOD_M5*180; zavírá se stejně

-------------------------------------

Pak jsem se vrátil k problému s průměrnou cenu pro otevírání a zavírání obchodu s tak jsem udělal toto:

 

int ticket = OrderSend (Symbol(), OP_BUY, Velikost_pozice, (Bid + Ask)/2, 0, Ask-SL, Ask+PT, Text, Magic_number1,0, Blue); 

ale žadný obchod se neotevřel takže jak se dá otevřít obchod když zdáse mohu zadat jen Bid či Ask frown....samej problém v cestě a to to má usnadnit práci laughing

 

 

 

 

 

 

 

 

 

Takže první tu druhou část:

- Je jasné, že obchod se musí otevřít za ASK, ne za průměr. Já psal, že u opcí broker počítá průměr a tak potom ve vyhodnocení je nutno brát za úspěšné obchody jen ty, které jsou min, 1/2 spreadu v plusu. Jestli je to jen na testování opcí, tak není potřeba zadávat SL a TP, protože opce končí časově, ne cenově. Když dojde k pohybu, tak se obchod uzavře (SL, TP), ikdyž v určitou dobu se mohl vrátit a opce by byla plusová nebo i mínusová. Takže bez SL a TP a jen ASK nebo BID.

První část:

- ale jinak to funguje, počítá a zavírá, to je dobře

-protože jsou obchody jsou otvírány na M5, tak odchylka může být až 4:59 minuty. Proto jsem doporučoval M1, kde by to bylo max 0:59 min. Kdyby byl každý obchod otevřen vždy pár vteřin po vytvoření M5, tak by odchylka byla malá, ale takto je možnost otevřít obchod v rozmezí 0:00 až po 4:59 M5 svíčky. Jde to vyřešit úpravou:

int open_svicka = iTime(0,1,0); // zde se bude brát čas svíčky M1 místo svíčky dle grafu

Pak by měl být rozdíl max 0:59s. Jde o to když otevřu svíčku na M5 v čase 4:30, tak + 10 minut je 14:30, a doba zavření bude v 15:00 

Ještě nějaký problém? Vyřešit jde všechno, jen se stačí zeptat.

 

mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 26.07.2017 09:05
Odpověď na: Fil

Takže první tu druhou část:

- Je jasné, že obchod se musí otevřít za ASK, ne za průměr. Já psal, že u opcí broker počítá průměr a tak potom ve vyhodnocení je nutno brát za úspěšné obchody jen ty, které jsou min, 1/2 spreadu v plusu. Jestli je to jen na testování opcí, tak není potřeba zadávat SL a TP, protože opce končí časově, ne cenově. Když dojde k pohybu, tak se obchod uzavře (SL, TP), ikdyž v určitou dobu se mohl vrátit a opce by byla plusová nebo i mínusová. Takže bez SL a TP a jen ASK nebo BID.

První část:

- ale jinak to funguje, počítá a zavírá, to je dobře

-protože jsou obchody jsou otvírány na M5, tak odchylka může být až 4:59 minuty. Proto jsem doporučoval M1, kde by to bylo max 0:59 min. Kdyby byl každý obchod otevřen vždy pár vteřin po vytvoření M5, tak by odchylka byla malá, ale takto je možnost otevřít obchod v rozmezí 0:00 až po 4:59 M5 svíčky. Jde to vyřešit úpravou:

int open_svicka = iTime(0,1,0); // zde se bude brát čas svíčky M1 místo svíčky dle grafu

Pak by měl být rozdíl max 0:59s. Jde o to když otevřu svíčku na M5 v čase 4:30, tak + 10 minut je 14:30, a doba zavření bude v 15:00 

Ještě nějaký problém? Vyřešit jde všechno, jen se stačí zeptat.

 

Zkusil jsem dosadit toto a funguje ...funkci jsem nechal akorát jsem změnil tu proměnou:

 

int open_svicka = (int) TimeCurrent();

Fil
Silver member
avatar
Příspěvky: 52
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 26.07.2017 09:22
Odpověď na: mira.vorlik

Zkusil jsem dosadit toto a funguje ...funkci jsem nechal akorát jsem změnil tu proměnou:

 

int open_svicka = (int) TimeCurrent();

Jo to by šlo, já jsem to měl nastavené tak, aby mi to zapsalo data jen při vytvoření svíčky, při prvním ticku. Tady by to šlo a bude to ještě přesnější, protože to počítá čas open na vteřiny a porovnává s časem co je na serveru, což je pro test opcí ideál. Může dojít k odchylce do 10s a to tím, když na instrumentu nebudou ticky, tak AOS nic nedělá a čeká na další tick, ale čas běží dál. 

No stačilo použít selský rozum a je to. Hodně štěstí.

mira.vorlik
Nováček v diskuzi
avatar
Příspěvky: 16
Více informací o uživateli >>
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: proměnná POLE 28.07.2017 11:29
Odpověď na: Fil

Jo to by šlo, já jsem to měl nastavené tak, aby mi to zapsalo data jen při vytvoření svíčky, při prvním ticku. Tady by to šlo a bude to ještě přesnější, protože to počítá čas open na vteřiny a porovnává s časem co je na serveru, což je pro test opcí ideál. Může dojít k odchylce do 10s a to tím, když na instrumentu nebudou ticky, tak AOS nic nedělá a čeká na další tick, ale čas běží dál. 

No stačilo použít selský rozum a je to. Hodně štěstí.

Nějak jsem dnes uvažoval zdali jde a jako že určitě nějak ano ... vytahnout hodnotu indikátoru v zavislosti na určitém čase? Pokud mám funkci iCustom tak předposlení číslice je daný buffer ze kterýho se tahají data indikatoru tick po ticku a ta poslední je pořadí těchto dat. Nejde nějak napsat třeba toto?

double ADX_posledni=iCustom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,Open[1]); // abych dostal hodnotu ADX v čase open svíčky 1. resp:

int cas_svicky_1 = (int) iTime(0,0,1);

double ADX_posledni=iCustom(NULL,0,"ADX_upravene",ADX_Period,21,21,ADX_Metoda,8,3,0,cas_svicky_1); 

chápu že bohužel takto jednoduše to nejde protože funkce iCuctom chce pořadí a ne čas. Takže čas musím přivést ale to bych musel vytvořit nějaké počitadlo Ticků v závislosti na čase  od TimeCurrent() ... no nedokážu si to moc představit. Jednoduší by byla nějaká funkce co to už umí tahat pouze se zadaním času, je nějaká taková ?innocent Přeci jen ten indikátot tam je baffuer tam je časová osa tam je časy svíček tam jsou .... nějak to jít musí.cool

 

Předchozí témata

Následující témata

Forex - doporučené články:

Co je FOREX?
Základní informace o finančním trhu FOREX. Forex je obchodování s cizími měnami (forex trading) a je zároveň největším a také nejlikvidnějším finančním trhem na světě.
Forex pro začátečníky
Forex je celosvětová burzovní síť, v jejímž rámci se obchoduje se všemi světovými měnami, včetně české koruny. Na forexu obchodují banky, fondy, pojišťovny, brokeři a podobné instituce, ale také jednotlivci, je otevřený všem.
1. část - Co to vlastně forex je?
FOREX = International Interbank FOReign EXchange. Mezinárodní devizový trh - jednoduše obchodování s cizími měnami - obchodování se směnnými kurzy.
VIP zóna - Forex Asistent
Nabízíme vám jedinečnou příležitost stát se součástí týmu elitních obchodníků FXstreet.cz. Ve spolupráci s předními úspěšnými obchodníky jsme pro vás připravili unikátní VIP skupinu, až doposud využívanou pouze několika profesionálními tradery, a k tomu i exkluzivní Price Action VIP indikátor, doposud úspěšně používaný pouze k soukromým účelům. Nyní se vám otevírá možnost stát se součástí této VIP skupiny, díky které získáte jedinečné know-how pro obchodování na forexu, výjimečný Price Action VIP indikátor, a tím také náskok před drtivou většinou ostatních účastníků trhu.
Forex brokeři - jak správně vybrat
V podstatě každého, kdo by chtěl obchodovat forex, čeká jednou rozhodování o tom, s jakým brokerem (přeloženo jako makléř/broker nebo zprostředkovatel) by chtěl mít co do činění a svěřil mu své finance určené k obchodování. Velmi rád bych vám přiblížil problematiku výběru brokera, rozdíl mezi jednotlivými typy brokerů a v neposlední řadě uvedu několik příkladů nejznámějších z nich.
Forex robot (AOS): Automatický obchodní systém
Snem některých obchodníků je obchodovat bez nutnosti jakéhokoliv zásahu do obchodu. Je to pouhá fikce nebo reálná záležitost? Kolik z nás věří, že "roboti" mohou profitabilně obchodovat? Na jakých principech fungují?
Forex volatilita
Forex volatilita, co je volatilita? Velmi užitečným nástrojem je ukazatel volatility na forexu. Grafy v této sekci ukazují volatilitu vybraného měnových párů v průběhu aktuální obchodní seance.
Forex zůstává největším trhem na světě
V dnešním článku se podíváme na nejnovější statistiky globálního obchodování na forexu. Banka pro mezinárodní vyrovnání plateb (BIS) totiž před pár týdny zveřejnila svůj pravidelný tříletý přehled, ve kterém detailně analyzuje vývoj na měnovém trhu. BIS je označována jako "centrální banka centrálních bank". Je nejstarší mezinárodní finanční organizací a hraje klíčovou roli při spolupráci centrálních bank a dalších institucí z finančního sektoru. Dnešní vzdělávací článek sice nebude zcela zaměřen na praktické informace z pohledu běžného tradera, ale i přesto přinese zajímavé a důležité poznatky.

Nejnovější články:


Naposledy čtené:


FXstreet.cz - forex, komodity, trading, zpravodajství

Nezávislý investiční server zaměřený na forex, komodity, trading a zpravodajství. Vzdělávací články, cenové grafy, cizí měny, semináře, ekonomické a forex zprávy.
reklama
Dukascopy
reklama
reklama