AvgVM
- Indikatoren
- Version: 1.0
- Aktivierungen: 5
Basierend auf „Volumes“ verfolgt diese Strategie die Marktaktivität und signalisiert Ihnen, sobald das Handelsvolumen einen bestimmten Schwellenwert überschreitet, dass der Markt begonnen hat, stark zu schwanken. In Kombination mit anderen Indikatoren können Sie die Trendrichtung einschätzen.Zu diesem Zeitpunkt lassen sich mit Orders leicht Gewinne erzielen, und die Gewinnwahrscheinlichkeit ist hoch. Unterhalb dieser Schwelle befindet sich der Markt hingegen in einer Ruhephase: Selbst wenn Sie Gewinne erzielen können, müssen Sie wiederholte Seitwärtsbewegungen ertragen – solche Orders sind sowohl zeit- als auch energieaufwendig.
//+------------------------------------------------------------------+
//| Iterationsfunktion (vorwärtsgerichtete Durchlauf, entspricht dem Standard-MT5-MACD/Volume-Indikator) |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int limit = rates_total - prev_calculated;
if(limit > 1) limit = rates_total - 1;
for(int i = limit; i >= 0; i--)
{
// Bei m Symbolen wie USDJPYm gibt tick_volume häufig 0 zurück; daher muss auf das tatsächliche Handelsvolumen volume[] zurückgegriffen werden
double currentVol = (double)tick_volume[i];
//double currentVol = (tv != 0.0) ? tv : (double)volume[i];
// Berechnung des gleitenden Durchschnitts: Es werden avm aufeinanderfolgende Handelsvolumina benötigt (nach i werden noch avm-1 weitere benötigt, daher gilt i+avm <= rates_total)
if(i <= rates_total - avm)
{
double sum = 0.0;
for(int j = 0; j < avm; j++)
{
double v = (double)tick_volume[i + j];
if(v == 0.0) v = (double)volume[i + j];
sum += v;
AvgBuffer[i] = sum / avm;
}
}
else
{
// Die historischen Daten reichen nicht bis zur avm-Wurzel zurück, daher wird das Feld leer gelassen (das ist normal, da es für die ersten avm-1 Wurzeln keinen gleitenden Durchschnitt gibt)
AvgBuffer[i] = 0.0;
VolAboveBuffer[i] = 0.0;
VolBelowBuffer[i] = 0.0;
continue;
}
