Jump to content
Co nového? Mé kurzy
Komunita:
Diskuze Sledované příspěvky Žebříčky

Doporučené příspěvky

  • Odpovědí 583
  • Vytvořeno
  • Poslední

Nejaktivnější diskutující

Nejaktivnější diskutující

Publikované obrázky

Odesláno

Zdravim vsechny. Potreboval bych radu jak na smycky.
Mam program:
int i;
int j;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
Print("---------------------------Pred obema smyckyma-----");
for( i= 1000; i for( j= 0; j Print("i: ", i, " :=: j: ", j);
return(0);
}
a pri pohledu na vypis na obrazovce to zacina pocitat pokazde od jine hodnoty. Nekdy od nuly (to by bylo OK) a nekdy od 13 nebo od 26, 40. Nekdy to dokonce preskoci i jeden nadrazeny cyklus takze to zacne vlastne pocitat az od 62.
dela to jen pri prvotnim spusteni a pak kdyz uz se to rozjede je to v poradku.
Pro jistotu jsem zkousel i jednu smycku nahradit smyckou while, ale bez zlepseni. Take jsem mel definovane pocatecni hodnoty i, j jeste pred smyckama, ale zase bez efektu.
Je to u MT4 normalni? Je mozne, ze by byla v MT4 takovahle banalni chybka?
Koukal jsem i na jine vzorove programy a bezne se dve smycky v sobe pouzivaji.

  • 2 týdny později...
Odesláno

Zdravím,
asi budu za trdlo,ale vložím sem dotaz co jsem vkládal bohužel do jiného vlákna
a tedy úplně špatně.
Snažím se naučit programovat v MT4.
Pochopil jsem SL,PT,různé vstupy,trail atd.
Teď bojuju už delší dobu s tím jak vstoupit na close(open) aktuální svíce.
Mám prostě parametry pro vstup,ale potřebuji aby byl vykonán jen na CLOSE,případně OPEN
aktuální svíčky.TŘeba MA1 protne MA2 - to je mi jasný,ale aby bylo v podmínce ještě
to,že je close nebo open.Samozřejmě na aktivním TF.
Zkoušel jsem to vypodmínkovat časem a podobný zvěrstva,prostě nevím co s tím.
Neumím anglicky a nenašel jsem nikde volnej AOS ze kterého bych pochopil jak to udělat.
Nevíte o něčem,případně nenapsal by mi někdo kód jak to udělat?
Moc díky věm co poradí.Rob

Odesláno

Ahoj Robe. O 2 stránky dříve jsem to v tomto vlákně přesně takový kód dával. Jedná se o příspěvek z September 16, 2011 10:28AM

Funkcí NewBar() si otestuji, zda se jedná o novou svíčku. Pak tam mám podmínky obchodu a následuje zvukový alert (PlaySound("alert.wav");). Tak Ti stačí jen si upravit tu podmínku tak, aby Ti vyhovovala a místo alertu dát pokyn na vstup/výstup z obchodu

Laďa

Odesláno

Ahojky.
Jojo,díky.Všiml jsem si toho hned jak jsem odeslal dotaz,jel jsem vlákno od začátku a v půlce rezignoval a napsal dotaz.
Včera jsem to jen narychlo přepsal podle toho co si tam dával,ale něco jsem udělal asi špatně,ten alert
mi taky nechodí.Myslel jsem,že pokud se objeví open,udělá to zvuk.Mě to nedělalo nic.Tak jsem to vypnul a dnes budu pokračovat.Musím to rozchodit.Zatím moc díky.Rob

Odesláno

Ten můj příspěvek o 2 stránky dříve je plně funkční. Jsou tam jen pak další podmínky, které musí být splněny při nové svíčce. To si musíš vyhodit, aby to fungovalo. Takže by jsi tam měl mít něco takového:

bool NewBar()
{
static datetime lastbar = 0;
datetime curbar = Time[0];
if(lastbar!=curbar)
{
lastbar=curbar;
return (true);
}
else
{
return(false);
}
}



// příklad použití
if (NewBar() == true)
{
// máme open nové svíčky. Sem vlož, co se má provádět. Má-li se provádět ještě nějaká další dodatečná kotrnola jako křížení, musíš to dát sem

}

Laďa

Odesláno

Ahoj,
jsem psal příspěvek,ale nějak se tu neobjevil.
Jako laik jsem bojoval celou noc a nakonec jsem byl odměněn úspěchem.
Ano,Tvůj kód funguje,ten první alert co jsem zkoušel tak taky.
Už jsem to zapojil do podmínek které jsem potřeboval a zdá se to funkční.
Těď ještě pátrám jak zjistit hodnotu třeba CCI na předchozím open a na novém open a porovnat je.(nevím jestli je na to příkaz)
Chtěl jsem použít proměnou třeba a(b)=CCI následně b=b+1 pak snulovat atd.
Nejde mi ta proměná a(b) dřív se muselo "dimenzovat" místo,tady to tak nefachá.S tím už si ale poradím.
Moc děkuji,sice jsem nepochopil jak to funguje,ale funguje to.
Jo a v čem jsem to měl chybu?Vkládal jsem to na špatný místo programu a hlásilo to chybu.
Jelikož zas takovej expert nejsem nevěděl jsem co to chce a začal měnit a upravovat než abych to přesunul.
Ještě jednou dík.Moc mi to pomohlo.
Rob.
(tu)

Odesláno

Robe, toto jsou úplné základy. Aktuální svíčka má index 0. Předchozí svíčka má index 1. Chceš-li se dotázat na jakoukoliv cenu (pro příklad třeba open cenu předchozí svíčky), potom:

double PredchoziOpen = Open[1] ;

Chceš-li vědět hodnotu CCI, potom použij obdobně přímo funkci Metatraderu iCCI. V nápovědě je zdokumentovaná.

Odesláno

Ahoj,
jsem psal,že s tím bojuju. :)
iCCI používám k získání aktuální ceny:ECCI=iCCI(NULL,0,CCI,PRICE_TYPICAL,1)
Vím o těch hodnotach [0] [1] ve svíčkách tedy open,close,high,low,bar.
Že to jde i u iCCI jsem netušil,ale to je to moje pokus omyl.
Bohužel v nápovědě když si dám překlad do CZ:

symbol - symbol údaje , které by měly být použity pro výpočet ukazatele . NULL znamená, že aktuální symbol.
časovém rámci - časový rámec. To může být jedna z hodnot, časový rámec výčtu . 0 znamená aktuální graf časového rámce .
období - perioda průměrování pro výpočet .
applied_price - Aplikovaná cenu. To může být jeden z aplikované hodnot výčtu ceny .
Shift - Index hodnoty převzaté z indikátoru vyrovnávací paměti ( posun ve vztahu k aktuální svíci zadaný počet období před ).

mě to vždy netrkne hned.Našel jsem pár manuálu i tady na finančníku který jsem prošel,ale je to pro mě
chvílema nesrozumitelný.Patlám se v tom pár hodin a pak zjistim,že to šlo o dost jednodušeji.
No alespoň se něco naučím.
Nejvíc mě štve,že obcházím spoustu věcí a pak zjistím,že je na to příkaz. :)
Viz to s CCI.
No ale chybkama se člověk učí a pokud jsou tak dobří lidé jako ty-kteří poradí a nasměrují tak
to je super.
Už vím,proč je trading tak složitej(věnuju se mu pár let) - tedy složitej asi nebude,ale na všechno si člověk chce přijít sám. :)
Ještě jednou moc dík a nepřestávej radit,určitě tu zanedlouho budu mít zase dotaz na - nějakej základ (tu) :) :)
Rob.

Odesláno

No a je to tu.
Vrtá mi hlavou ještě jedna věc.Zjistil jsem,že mi neotevíraj všechny svíce.(když nedám žádnou podmínku,jen ten open)
Dal jsem prográmek jen na sell při open svíce,ale sem tam nějaká v testeru strategií prostě nic neudělá.
Netušíte čím by to mohlo být ?
Zde přikládám prg:
//+------------------------------------------------------------------+
//| rob.mq4 |
//| rob |
//| |
//+------------------------------------------------------------------+
#property copyright "rob"
#property link ""
bool NewBar() //////////////////////////////////////////
{ //Definice proměnné NewBar,která
static datetime lastbar = 0; //vrací true,když je nová svíčka.
datetime curbar = Time[0]; //Tedy podmínkou:
if(lastbar!=curbar) // if (NewBar() == true)
{ // {
lastbar=curbar; // ticket=OrderSend(Symbol(),OP_SELL,............
return (true); // }
} // vstupuji na open nové svíce
else //
{ //
return(false); //
} //
} ////////////////////////////////////////////¨
int ticket;
//---- input parameters

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

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

//----
return(0);
}
//////////////////////////////////////////////////
int start()
{

if (NewBar() == true)
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"dolu",1,0,Green);
}
return(0);
}


×
×
  • Vytvořit...