×

  Avatar
×

  Avatar

Omlouvám se...

Toto video je určeno pro členy skupiny.

Kolik stojí členství?

×

  Avatar

Omlouvám se, ...

Toto video je určeno pro členy skupiny.

Kolik stojí členství?

intraday.cz : projekt Login | Register
home -> Trading články -> ACSIL - proměnná napříč studiemi

ACSIL - proměnná napříč studiemi

V dnešním tutoriálu si ukážeme, jak přenášet informace - proměnné mezi studiemi nasazenými na různých grafech. Může se jednat o grafy s různými instrumenty, nebo timeframy. (Tento článek vzniká jako reakce na dotaz freezyho).

persist-vars

Logika přenosu proměnných mezi studiemi

Proměnné mezi různými grafy lze přenášet pomocí persistentních proměnných. Persistentní proměnné dokáží přežít cyklus studie. Více o perzistetntních proměnných v tomto workshopu (od 1 hod 11 min):

persist-vars

Pro přenos potřebujeme vytvořit 2 studie. První studie bude v zájmovém grafu ukládat požadovanou hodnotu do příslušné persistentní proměnné. Druhá studie bude v cílovém grafu tuto hodnotu načítat (například pro další libovolný výpočet nebo porovnávání).

První studie (uloží zájmovou proměnnou)

SCSFExport scsf_UlozeniPersistentni(SCStudyInterfaceRef sc)
{
  if (sc.SetDefaults)
  {
    sc.GraphName = "Graf s persistentni promennou";
    sc.FreeDLL = 0;
    return;
  }
  
  // vytvoříme si například 2 persistentní proměnné
  int& MojePers0 = sc.GetPersistentInt(0); // v závorkách je klíč persistentní 0
  int& MojePers1 = sc.GetPersistentInt(1); // klíč 1

  // A) do nich si můžeme uložit konstatnty...
  MojePers0 = 100;
  MojePers1 = 2000;

  // B) ...nebo jiné proměnné, které sa váží ke grafu
  MojePers0 = sc.BidVolume[sc.Index]; // uloží aktuální bid volume aktuálního baru
  MojePers1 = sc.AskVolume[sc.Index]; // uloží aktuální ask volume aktuálního baru
}

Touto studií jsme si uložili zájmové proměnné do persistentních proměnných. V naší druhé studii si nyní tyto persistentní proměnné načteme pomocí speciální funkce.

Druhá studie (načte proměnnou z jiného grafu)

Pro načtení použijeme funkci
int& GetStudyPersistentIntFromChart(číslo grafu, id studie, klíč persistentní); *
Číslo grafu a ID studie můžeme vyčíst ze Study Settings: sierra-chart-study

SCSFExport scsf_NacteniPersistentni(SCStudyInterfaceRef sc)
{
  if (sc.SetDefaults)
  {
    sc.GraphName = "Nacte persistentni promennou z grafu #5 studie 1";
    sc.FreeDLL = 0;
    return;
  }
  
  int a = sc.GetStudyPersistentIntFromChart(5, 1, 0); // graf 5, studie 1, klíč persistentníInt 0
  int b = sc.GetStudyPersistentIntFromChart(5, 1, 1); // graf 5, studie 1, klíč persistentníInt 1
  
  // pro ukázku si můžeme vypsat získané proměnné do MessageLogu:
  SCString Message;
  Message = Message.Format("MojePers0 = %i a MojePers1 = %i", a, b);
  sc.AddMessageToLog(Message, 1);
}

Ne vždy však budeme předem vědět, na jaké číslo grafu a číslo studie se budeme dotazovat. Můžeme však využít inputu nastavitelného ve Study Settings této studie následovně:

SCSFExport scsf_NacteniPersistentni(SCStudyInterfaceRef sc)
{
  SCInputRef  RefNo = sc.Input[0];
  
  if (sc.SetDefaults)
  {
    sc.GraphName = "Nacte persistentni promennou z libovolného grafu";
    sc.FreeDLL = 0;
    RefNo.Name = "Vyber grafu a ID studie";
    RefNo.SetChartStudyValues(1, 0);
    return;
  }
  
  int a = sc.GetStudyPersistentIntFromChart(RefNo.GetChartNumber(), RefNo.GetStudyID(), 0); 
  int b = sc.GetStudyPersistentIntFromChart(RefNo.GetChartNumber(), RefNo.GetStudyID(), 1); 
  
  // pro ukázku si můžeme vypsat získané proměnné do MessageLogu:
  SCString Message;
  Message = Message.Format("MojePers0 = %i a MojePers1 = %i", a, b);
  sc.AddMessageToLog(Message, 1);
}

Nyní si můžeme libovolně volit číslo grafu a id studie pomocí rozbalovacího listu v Study Settings této studie:

sierra-chart-volby

Pomocí funkce sc.GetStudyPersistentIntFromChart() můžeme načítat do jedné studie persistentní proměnné z více grafů. Následným zpracováním můžeme například měřit aktuální korelace námi sledovaných gafů.


(*) Nezapoměňte, že je nutné dbát na správné určení typu proměnné a to jak při ukládání do proměnné, tak i při jejím získávání. Existuje tedy speciální funkce pro každý typ proměnné:

sc.GetStudyPersistentIntFromChart()
sc.GetStudyPersistentDoubleFromChart()
sc.GetStudyPersistentFloatFromChart()
sc.GetStudyPersistentIntFromChart()
sc.GetStudyPersistentInt64FromChart()
sc.GetStudyPersistentPointerFromChart()
sc.GetStudyPersistentSCDateTimeFromChart()
sc.GetStudyPersistentSCStringFromChart()

Komentáře:

nahoru ↑
loading
Loading Activity Panel...
×

Trader equity


  loading
×

Načítání intradenního grafu...


  loading
×

Načítání situace...

  loading
×

Načítání karty obchodu...

  loading
×

Načítání karty obchodu...

 

Omlouvám se, Unregistered...

Tato funkce je určená pouze pro členy Pravidelného provozu.

Co je a kolik stojí členství?

×

User Trade List


  loading
×

Delete request


 
Uveďte důvod, prosím (např. duplicita):

×