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

Sierra Chart a její možnosti


Břonda

Doporučené příspěvky

To já jsem zase používal do teď práve Ninju a zenfire. Ninja mi příjde náročný na výkon PC a hlavně mi nevyhovuje nahrávání dat proto abych následně mohl použít playback. Pro Sierru jsem se rozhodl právě z důvodu že nemusím žádné data nahrávat pro použití plabacku. Nechal jsem se inspirovat videotutoriálem na real time data od Petra.. Chodím ještě do práce navíc v Anglii (časový posun) a nemůžu být doma od otevření trhu až do jeho zavření každý den proto se mi tím vyřešil tento problém, takže kdykoliv můžu zapnout playback jak se mi tohodí.. U ninji bych musel mít skoro nonstop zaplý notebook abych data nahrál.

Link to comment
Sdílet pomocí služby

  • 4 týdny později...

Zdravim

neresil jste nahodou nekdo nekdy pri programovani studie do SC moznost exportu dat do souboru ? Nemam na mysli primo graf, ale rekneme matice vysledku, ktere jsou ulozeny v sg.Subgraph[] Dohledal jsem v ramci studie exportu scid, ze by to slo pres externi dll, kde se pouzivaji Stream I/O objekty, nicmene moznosti podobneho exportu primo v ramci studie jsem se nikde nedohrabal. Jde to vubec touto cestou ?

Dik za pripadne nakopnuti spravnym smerem

Libor

Link to comment
Sdílet pomocí služby

Rob99,

prozatím jsem přesně toto neřešil, nicméně bych řekl, že jsou dvě možnosti:

1. napsat externí dll (pro export dat) a tu v Custom study volat
2. pomocí Worksheets study by mělo jít exportovat zároveň i hodnoty indikátorů takže si myslím, že pokud by jste měl hodnoty sc.Subgraph[] jako indikátor, měly by se také exportovat

Aleš

Link to comment
Sdílet pomocí služby

2 Alec

Jj. Tak nejak jsem dosel k stejnym zaverum, ze jine cesty neni. Nicmene obe reseni jsou pro mne dost obtizna, resp. pro externi dll potrebuji jiny compiler + knihovny, a nejak se mi zatim nepodarilo s tim vsim srovnat. Zkousel jsem CodeBlock a nejake externi veci z VS2008, nicmene vysledek nikde. Z worksheets moc nepracuji, a navic potrebuji data z celeho "kvartalu" a nejsem si jist jestli se da na tohle worksheets pouzit.

V podstate o nic nejde, jen ze jsem naprogramoval svuj obchodni system do AOS a chtel jsem si usetrit praci pri testech, a mit vstupy a vystupy rovnou vygenerovane ve file, kde bych s nimi dal pracoval. Takhle si hodnoty zobrazuji primo v grafu a musim to opisovat. Takze je otazka, jestli mi studium exportu v C++ stoji za tu pridanou hodnotu. Asi nejschudnejsi bude strategii poslat do excelu pres worksheetstudy a pak dal zpracovavat. (Jasne vse v sc.Subgraph resp. sg. se chova zaroven jako 'indikator', takze v tom neni problem)

Dik za konzultaci, a at se dari ;)

Libor

Link to comment
Sdílet pomocí služby

Pratele, rad bych pozadal ty z vas, kteri rozumi programovani. Na support board k sierre jsem nalezl kod, ktery zobrazuje cas, jak dlouho se vykresluje posledni usecka, viz. priloha. Kod vkladam radeji na obrazku, z duvodu prehlednosti. Uznavam, ze mi vadi detail, ale cas vykreslovani usecky je v ciselnem formatu. (Tj. kdyz indikator ukazuje napriklad 4.50, pak ve formatu MM:SS je to 4:30). Dokazal by nekdo upravit kod do formatu casu? Predem diky. Tomas

12040

Link to comment
Sdílet pomocí služby

2 tomicek :

Hodnota casu se da zobrazit napr. takto (v tom Bar graph to pujde ovsem tezko)

s_UseTool Tool;
// Reset objectu tool
Tool.Clear();
Tool.ChartNumber = sg.ChartNumber;
Tool.Tool = TOOL_TEXT;
Tool.LineNumber = 1;
Tool.AddMethod = UTAM_ADD_ALWAYS;
Tool.FontSize = 10;
// Promenne casu
int Hour, Minute, Second;
// Naliti hodnot
TIME_TO_HMS(sg.BaseDateTimeIn[sg.CurrentIndex].GetTime(), Hour, Minute, Second);
// Co se ma vypsat
Tool.Text.Format("%d:%d:%d", Hour,Minute,Second );
// Kdy se to ma vypsat
Tool.BeginDateTime = sg.BaseDateTimeIn[sg.CurrentIndex];
// Kam se to ma vypsat (osa y)
Tool.BeginValue = sg.BaseData[SC_HIGH][sg.CurrentIndex] + 3;
// Barvicky a ostatni customizace
Tool.Color = RGB(0,255,255);
Tool.TextAlignment = DT_CENTER;
// Provedeni
sg.UseToolEx(Tool);

Prevod z desitek na min,sec je predpokladam jasny, ale pro jistotu....(0.5*60) :)

Kdyby ste to sem soupl jako kus kodu.. Nechce se mi to hledat ani prepisovat, takze nevim presne co s tim chcete, ale tak tohle je aspon pro inspiraci.

Link to comment
Sdílet pomocí služby

to: Rob99

takze vkladam presny kod:
ten kdyz zkompiluji do .dll - funguje perfektne az na ten format. bohuzel jak jsem psal, neumim ho prevest tak, aby se zobrazoval ve formatu HH:MM:SS
jinak kod funguje tak, ze zobrazuje historii casu (doby) ve vykreslovani jednotlivych usecek (samozrejme v alternativnim grafu) a dokaze zobrazovat aktualni dobu vykreslovani posledni usecky

diky za pomoc

tomas


______________________

#include "sierrachart.h"

SCDLLName("Dave's Custom Studies")

SCSFExport scsf_TimeHistogram(SCStudyGraphRef sc)
{
// Section 1 - Set the configuration variables

if (sc.SetDefaults)
{
// Set the configuration and defaults

sc.GraphName = "Time Per Bar";

sc.StudyDescription = "Minutes per bar.";

sc.AutoLoop = 1; // true

// Uncomment the following line when you're done with your
// development. This makes calling your function faster.
sc.FreeDLL = 0; // false

sc.Subgraph[0].Name = "Time Histogram";
sc.Subgraph[0].PrimaryColor = RGB(0,0,255); // Blue
sc.Subgraph[0].DrawStyle = DRAWSTYLE_BAR; // Look in scconstants.h for other draw styles


return;
}


// Section 2 - Do data processing

int Hour, Minute, Second;
sc.BaseDateTimeIn[sc.Index-1].GetTimeHMS(Hour,Minute,Second);

if ((Hour==9 && Minute>29) || (Hour>9 && Hour int barTime = sc.BaseDateTimeIn.TimeAt(sc.Index)-sc.BaseDateTimeIn.TimeAt(sc.Index-1);
int barTimeCurrent = sc.CurrentSystemDateTime.GetTime()-sc.BaseDateTimeIn.TimeAt(sc.Index);
// if (barTime // barTime+=24*60*60;
// }

float barTimeMins=barTime/60.;
float barTimeMinsCurrent=barTimeCurrent/60.;
if (barTimeMins>0){
sc.Subgraph[0][sc.Index-1] = barTimeMins;
}
if (barTimeMinsCurrent>0){
sc.Subgraph[0][sc.Index] = barTimeMinsCurrent;
}
}

}

Link to comment
Sdílet pomocí služby

Návštěvník
Téma je uzavřené.
×
×
  • Vytvořit...