Original (English)

Currency strength functions

ccySet(var Strength)

Adds the given Strength value to the currency and subtracts it from the counter currency of the current Forex pair. The Strength value can be any indicator or other price function that indicates a "strength" or "weakness" of a currency, for instance ROC or RSI. 

ccyReset()

Resets the stored strengths of all currencies. Usually called at the beginning of every bar before the strengths are summed up by ccySet.

ccyStrength(string Currency): var

Returns the average strength of the given Currency (3 letters, e.g., "USD"). The average strength is the strength sum of all Forex pairs beginning with Currency, minus the strength sum of all Forex pairs ending with Currency, divided by the number of Forex pairs. If a currency pair is given (7 letters, e.g., "EUR/USD"), the function returns the difference of both average strengths.

ccyMax(): string

Returns the currency pair with the strongest currency and the weakest counter currency.

ccyMin(): string

Returns the currency pair with the weakest currency and the strongest counter currency.

Parameters:

Strength Strength value, for instance the price rate of change. Must be in the same range for all currency pairs.
Currency Either a single currency ("USD") or a currency pair ("EUR/USD").

Remarks:

  • Currency strength functions can be used to detect currency price shocks that affect several Forex markets simultaneously (see example).
  • The forex pair name matters: Use the standard names like "EUR/USD", not variants like "EURUSD", "EUR-USD" etc.
  • Parameters passed to ccySet should be normalized or a percentage or probability value so that they are directly comparable for all currencies.
  • The source code of the currency strength functions is contained in Source\indicators.c.

Example:

// Currency Strength Strategy /////////////////////
// Exploits price shocks e.g., CHF cap and Brexit

function run()
{
  BarPeriod = 60;
  ccyReset();	// reset strengths at begin of any bar
  string Name;
  while(Name = (loop(Assets)))
  {
    if(assetType(Name) != FOREX)
      continue; // Currency pairs only
    asset(Name);
    vars Prices = series(priceClose());
    ccySet(ROC(Prices,1)); // store price change as strength
  }
  
  // get currency pairs with highest and lowest strength difference
  string Best = ccyMax(), Worst = ccyMin();
  var Threshold = 1.0;

  static char OldBest[8], OldWorst[8];	// static for keeping contents between runs
  if(*OldBest && !strstr(Best,OldBest)) { // new strongest asset?
    asset(OldBest);
    exitLong();
    if(ccyStrength(Best) > Threshold) {
      asset(Best);
      enterLong();
    }
  }
  if(*OldWorst && !strstr(Worst,OldWorst)) { // new weakest asset?
    asset(OldWorst);
    exitShort();
    if(ccyStrength(Worst) < -Threshold) {
      asset(Worst);
      enterShort();
    }
  }

  // store previous strongest and weakest asset names  
  strcpy(OldBest,Best);
  strcpy(OldWorst,Worst);
}

See also:

asset, ROC

► latest version online

Übersetzung (Deutsch)

Währungsstärken-Funktionen

ccySet(var Strength)

Fügt der Währung den gegebenen Strength-Wert hinzu und zieht ihn von der Gegenwährung des aktuellen Forex-Paares ab. Der Strength-Wert kann ein beliebiger Indikator oder eine andere Preisfunktion sein, die eine "Stärke" oder "Schwäche" einer Währung anzeigt, zum Beispiel ROC oder RSI. 

ccyReset()

Setzt die gespeicherten Stärken aller Währungen zurück. Wird normalerweise zu Beginn jeder Bar aufgerufen, bevor die Stärken durch ccySet summiert werden.

ccyStrength(string Currency): var

Gibt die durchschnittliche Stärke der angegebenen Währung zurück (3 Buchstaben, z.B. "USD"). Die durchschnittliche Stärke ist die Stärkensumme aller Forex-Paare, die mit Währung beginnen, minus die Stärkensumme aller Forex-Paare, die mit Währung enden, geteilt durch die Anzahl der Forex-Paare. Wenn ein Währungspaar angegeben ist (7 Buchstaben, z.B. "EUR/USD"), gibt die Funktion den Unterschied der beiden durchschnittlichen Stärken zurück.

ccyMax(): string

Gibt das Währungspaar mit der stärksten Währung und der schwächsten Gegenwährung zurück.

ccyMin(): string

Gibt das Währungspaar mit der schwächsten Währung und der stärksten Gegenwährung zurück.

Parameter:

Strength Stärkenwert, zum Beispiel die Preis- Rate of Change. Muss für alle Währungspaare im gleichen Bereich liegen.
Currency Entweder eine einzelne Währung ("USD") oder ein Währungspaar ("EUR/USD").

Bemerkungen:

  • Währungsstärken-Funktionen können verwendet werden, um Währungspreisschocks zu erkennen, die mehrere Forex-Märkte gleichzeitig beeinflussen (siehe Beispiel).
  • Der Name des Forex-Paares ist wichtig: Verwende die Standardnamen wie "EUR/USD", nicht Varianten wie "EURUSD", "EUR-USD" usw.
  • Parameter, die an ccySet übergeben werden, sollten normalisiert sein oder einen Prozentsatz- oder Wahrscheinlichkeitswert haben, sodass sie direkt für alle Währungen vergleichbar sind.
  • Der Quellcode der Währungsstärken-Funktionen ist in Source\indicators.c enthalten.

Beispiel:

// Currency Strength Strategy /////////////////////
// Nutzt Preisschocks, z.B. CHF-Cap und Brexit

function run()
{
  BarPeriod = 60;
  ccyReset();	// setze Stärken zu Beginn jeder Bar zurück
  string Name;
  while(Name = (loop(Assets)))
  {
    if(assetType(Name) != FOREX)
      continue; // Nur Währungspaare
    asset(Name);
    vars Prices = series(priceClose());
    ccySet(ROC(Prices,1)); // speichere Preisänderung als Stärke
  }
  
  // erhalte Währungspaare mit der höchsten und niedrigsten Stärkeunterschied
  string Best = ccyMax(), Worst = ccyMin();
  var Threshold = 1.0;

  static char OldBest[8], OldWorst[8];	// statisch, um Inhalte zwischen Läufen zu behalten
  if(*OldBest && !strstr(Best,OldBest)) { // neues stärkstes Asset?
    asset(OldBest);
    exitLong();
    if(ccyStrength(Best) > Threshold) {
      asset(Best);
      enterLong();
    }
  }
  if(*OldWorst && !strstr(Worst,OldWorst)) { // neues schwächstes Asset?
    asset(OldWorst);
    exitShort();
    if(ccyStrength(Worst) < -Threshold) {
      asset(Worst);
      enterShort();
    }
  }

  // speichere vorherige stärkste und schwächste Asset-Namen  
  strcpy(OldBest,Best);
  strcpy(OldWorst,Worst);
}

Siehe auch:

asset, ROC

► latest version online