Available translations
loading results
Data Mining - Indicator Bots - Coding the Indicator's Logic
Summary: Learn how to use data dependencies, the variable object, and how to deal with indicators with irregular periods.
Summary: Lernen Sie, wie man data dependencies und das variable object verwendet und wie man mit indicators mit unregelmäßigen Perioden (irregular periods) umgeht.
Summary: Узнайте, как использовать зависимости данных, переменный объект и как работать с индикаторами с нерегулярными периодами.
Summary: Özet: Veri bağımlılıklarını, değişken nesneyi nasıl kullanacağınızı ve düzensiz dönemli göstergelerle nasıl başa çıkacağınızı öğrenin.
Main Data Dependency
Haupt-Data Dependency:
Основная зависимость от данных (Main Data Dependency)
Ana Veri Bağımlılığı
The data building procedure works under the premise that the algorithm loops around a data collection and that—for each loop—generates a record for the product being built. For example, the SMA indicator loops around the candles product of the Candles Volumes indicator, thus, candles is the main data dependency. In the case of the
bollingerChannels
product, the main data dependency is the bollingerBands
product of the Bollinger Bands indicator. Die data building procedure funktioniert unter der Prämisse, dass der Algorithmus in Schleifen um eine Datensammlung herumläuft und für jede Schleife einen Datensatz für das zu erstellende Produkt erzeugt. Der SMA-Indikator umkreist beispielsweise das Kerzen-Produkt des Kerzen-Volumen-Indikators, so dass die Kerzen die main Datenabhängigkeit darstellen. Im Fall des Produkts
bollingerChannels
ist die Hauptdatenabhängigkeit das Produkt bollingerBands
des Indikators Bollinger Bands. Процедура построения данных работает на основе того, что алгоритм циклически обращается к сбору данных и для каждого цикла генерирует запись для строящегося продукта. Например, индикатор SMA циклично взаимодействует с продуктом Candles индикатора Candles Volumes, таким образом, свечи являются основной зависимостью данных. В случае продукта
bollingerChannels
основной зависимостью данных является продукт bollingerBands
индикатора Bollinger Bands. Veri oluşturma prosedürü, algoritmanın bir veri toplama etrafında döndüğü ve her döngü için oluşturulmakta olan ürün için bir kayıt oluşturduğu öncülü altında çalışır. Örneğin, SMA göstergesi Mum Hacimleri göstergesinin mum ürününün etrafında döner, bu nedenle mumlar ana veri bağımlılığıdır. BollingerChannels ürünü söz konusu olduğunda, ana veri bağımlılığı Bollinger Bantları göstergesinin
bollingerBands
ürünüdür. The main data dependency is the first dependency declared at the level of the processes. This dependency is made available in the record object, which features three properties:
Die main data dependency ist die erste Abhängigkeit, die auf der Ebene der Prozesse deklariert wird. Diese Abhängigkeit wird im record object zur Verfügung gestellt, das über drei Eigenschaften verfügt:
Основная зависимость данных - это первая зависимость, объявленная на уровне процессов. Эта зависимость доступна в объекте записи, который имеет три свойства:
Ana veri bağımlılığı, süreçler düzeyinde bildirilen ilk bağımlılıktır. Bu bağımlılık, üç özelliği içeren kayıt nesnesinde kullanıma sunulur:
- previous:
- önceki:
mainDependency.records[index - 1]
- current:
- şimdiki:
mainDependency.records[index]
- next:
- sonraki:
mainDependency.records[index + 1]
The variable index is the index in the array of the main dependency.
Die Variable index ist der Index im Array der main dependency.
Переменная index - это индекс в массиве основной зависимости.
Değişken indeksi, ana bağımlılığın dizisindeki indekstir.
For example, you may use the statement
record.propertyName
to access the value of any of the properties in the input datasets for the current record, or record.previous.propertyName
to access the value of the property in the previous record. Sie können zum Beispiel die Anweisung
record.propertyName
verwenden, um auf den Wert einer beliebigen Eigenschaft in den Eingabedatensätzen für den aktuellen Datensatz zuzugreifen, oder record.previous.propertyName
, um auf den Wert der Eigenschaft im vorherigen Datensatz zuzugreifen. Например, вы можете использовать оператор
record.propertyName
для доступа к значению любого из свойств во входных наборах данных для текущей записи или record.previous.propertyName
для доступа к значению свойства в предыдущей записи. Örneğin, geçerli kayıt için girdi veri kümelerindeki herhangi bir özelliğin değerine erişmek için
record.propertyName
ifadesini veya önceki kayıttaki özelliğin değerine erişmek için record.previous.propertyName
ifadesini kullanabilirsiniz. Note: The order in which dependencies are defined determines which one is the main data dependency.
Note: Die Reihenfolge, in der die dependencies definiert werden, bestimmt, welche die Hauptdatenabhängigkeit ist.
Note: Порядок определения зависимостей определяет, какая из них является основной зависимостью данных.
Note: Not: Bağımlılıkların tanımlanma sırası, hangisinin ana veri bağımlılığı olduğunu belirler.
Multiple Data Dependencies
Mehrere Data Dependencies:
Множественные зависимости от данных (Multiple Data Dependencies)
Çoklu Veri Bağımlılığı
The products object features a property for each data dependency, and each property is named with the
pluralVariableName
defined in the product’s configuration. Each property features an array with the dependency’s data collection. Das products-Objekt enthält eine Eigenschaft für jede Datenabhängigkeit, und jede Eigenschaft ist mit dem in der Produktkonfiguration definierten
pluralVariableName
benannt. Jede Eigenschaft enthält ein Array mit der Datensammlung der Abhängigkeit. Объект products имеет свойство для каждой зависимости данных, и каждое свойство имеет
pluralVariableName
, определенное в конфигурации продукта. Каждое свойство представляет собой массив с набором данных зависимости. Ürünler nesnesi, her veri bağımlılığı için bir özellik içerir ve her özellik, ürünün yapılandırmasında tanımlanan
pluralVariableName
ile adlandırılır. Her özellik, bağımlılığın veri toplamasına sahip bir diziye sahiptir. Data collections of different products may begin and end at different points in time. For example, it takes 20 candles to build the first
bollingerBands
object of the Bollinger Bands indicator, or 200 candles to build the first popularSMAs
object of the SMA indicator. Therefore, the record in i position in the array of one product may not correspond to the same period of time of the record in the same position of a different product. Data collections für verschiedene Produkte können zu unterschiedlichen Zeitpunkten beginnen und enden. So dauert es beispielsweise 20 Kerzen, um das erste bollingerBands-Objekt des Bollinger Bands-Indikators zu erstellen, oder 200 Kerzen, um das erste popularSMAs-Objekt des SMA-Indikators zu erstellen. Daher entspricht der Datensatz an der Position "i" im Array eines Produkts möglicherweise nicht demselben Zeitraum wie der Datensatz an derselben Position eines anderen Produkts.
Сбор данных по разным продуктам может начинаться и заканчиваться в разные моменты времени. Например, требуется 20 свечей, чтобы построить первый объект
bollingerBands
индикатора Bollinger Bands, или 200 свечей, чтобы построить первые popularSMA
индикатора SMA. Следовательно, запись в позиции i в массиве одного продукта может не соответствовать тому же периоду времени записи в той же позиции другого продукта. Farklı ürünlerin veri toplamaları, zaman içinde farklı noktalarda başlayıp bitebilir. Örneğin, Bollinger Bantları göstergesinin ilk
bollingerBands
nesnesini oluşturmak için 20 mum veya SMA göstergesinin ilk popülerSMA nesnesini oluşturmak için 200 mum gerekir. Bu nedenle, bir ürünün dizisindeki i konumundaki kayıt, farklı bir ürünün aynı konumundaki kaydın aynı zaman periyoduna karşılık gelmeyebilir. getElement Function
"getElement Function"
Функция getElement
getElement İşlevi
This function allows users to locate an object at a dataset whose objects does not have a begin and end property but instead, they have a timestamp property. It receives an arbitrary begin / end object and the function will search within the dependency dataset for the first record whose timestamp is within the begin and end of the received reference objet. For example, a user can get the News record that belong to a certain Candle object.
Diese Funktion ermöglicht es dem Benutzer, ein Objekt in einem Datensatz zu finden, dessen Objekte keine Anfangs- und Ende-Eigenschaft haben, sondern eine timestamp (Zeitstempel) Eigenschaft besitzen. Sie empfängt ein beliebiges Anfangs-/Endobjekt, und die Funktion sucht innerhalb des Abhängigkeitsdatensatzes nach dem ersten Datensatz, dessen Zeitstempel mit dem Anfang und Ende des empfangenen Referenzobjekts übereinstimmt. Zum Beispiel kann ein Benutzer die News-Datensätze abrufen, die zu einem bestimmten Candle object gehören.
Эта функция позволяет пользователям находить объект в наборе данных, у объектов которого нет свойства begin и end, но вместо этого у них есть свойство timestamp. Он получает произвольный объект начала / конца, и функция будет искать в наборе данных зависимостей первую запись, метка времени которой совпадает с началом и концом полученного ссылочного объекта. Например, пользователь может получить запись новостей, принадлежащую определенному объекту Candle.
Bu işlev, kullanıcıların bir veri kümesindeki nesneleri bir başlangıç ve bitiş özelliği olmayan, bunun yerine bir zaman damgası özelliğine sahip olan bir nesneyi bulmasını sağlar. Rastgele bir başlangıç / bitiş nesnesi alır ve işlev, zaman damgası alınan referans nesnesinin başlangıç ve bitişinde olan ilk kayıt için bağımlılık veri kümesi içinde arama yapar. Örneğin, bir kullanıcı belirli bir Candle nesnesine ait Haber kaydını alabilir.
The
getElement
function, which takes two parameters, may be used: Die Funktion
getElement
, die zwei Parameter benötigt, kann so verwendet werden: Можно использовать функцию
getElement
, которая принимает два параметра: İki parametre alan
getElement
işlevi kullanılabilir: - The name of the data collection (
pluralVariableName
) you wish to consult.
- Der Name der Datensammlung (
pluralVariableName
) die Sie abfragen möchten.
- Имя набора данных (
pluralVariableName
), к которому вы хотите обратиться.
- Danışmak istediğiniz veri toplamanın (
pluralVariableName
) adı.
- An object with begin and end properties, for example, the tenth candle.
- Ein Objekt mit Anfangs- und Endeigenschaften, zum Beispiel die zehnte candle.
- Объект со свойствами begin и end, например десятая свеча.
- Başlangıç ve bitiş özelliklerine sahip bir nesne, örneğin onuncu mum.
The function returns the record that matches the begin and end datetime of the second parameter.
Die Funktion gibt den Datensatz zurück, der mit dem Anfangs- und Enddatum des zweiten Parameters übereinstimmt.
Функция возвращает запись, которая соответствует датам начала и окончания второго параметра.
İşlev, ikinci parametrenin başlangıç ve bitiş tarih saatiyle eşleşen kaydı döndürür.
This is an example from the Candle Patterns indicator, which has the candles product of the Candles Volumes indicator as the main data dependency:
Dies ist ein Beispiel aus dem Candle Patterns indicator, der das candle product des Candles Volumes indicator als Hauptdatenabhängigkeit hat:
Это пример индикатора Candle Patterns, в котором прдукт Candles индикатора Candles Volumes является основной зависимостью данных:
Bu, ana veri bağımlılığı olarak Mum Hacimleri göstergesinin mum ürününü içeren Mum Kalıpları göstergesinden bir örnektir:
let candle = record.current // Calling "Candles"
let basicCandle = getElement ('basicCandles', candle) // Calling "Basic Candles"
getTimestampElement Function
Функция getTimestampElement
getTimestampElement İşlevi
Indicators might have parameters that influences it's calculations. These parameters are defined at the Product Definition config, and their values are set at the Process Instance config. Parameters are extracted at the Procedure Initialization Code. In order to facilitate this extraction we will create an object here that will be accesed from the Procedure Initialization with all parameters and their defined values.
Indikatoren können Parameter haben, die ihre Berechnungen beeinflussen. Diese Parameter werden in der Process Instance config definiert, und ihre Werte werden in der Process Instance config festgelegt. Die Parameter werden im Initialization Code der Prozedur extrahiert. Um diese Extraktion zu erleichtern, erstellen wir hier ein Objekt, auf das von der Procedure Initialization aus mit allen Parametern und ihren definierten Werten zugegriffen werden kann.
Индикаторы могут иметь параметры, влияющие на их расчеты. Эти параметры определяются в конфигурации определения продукта Product Definition, а их значения устанавливаются в конфигурации экземпляра процесса Process Instance. Параметры извлекаются из кода инициализации процедуры Procedure Initialization. Чтобы облегчить это извлечение, мы создадим здесь объект, который будет приниматься из процедуры инициализации со всеми параметрами и их определенными значениями.
Göstergeler, hesaplamalarını etkileyen parametrelere sahip olabilir. Bu parametreler Ürün Tanımı ( Product Definition ) yapılandırmasında tanımlanır ve değerleri İşlem Eşgörünümü yapılandırmasında ayarlanır. Parametreler, Prosedür Başlatma ( Procedure Initialization ) Kodunda çıkarılır. Bu çıkarımı kolaylaştırmak için burada, tüm parametreler ve tanımlı değerleri ile Prosedür Başlatma'dan erişilecek bir nesne oluşturacağız.
let currentAssetMetrics = getTimestampElement('assetMetrics', record.current)
Variable Object
Переменный объект (Variable Object)
Değişken Nesne
The output generated must be stored as new properties of the variable object, which is made available to record properties under the record definition node.
Die erzeugten Ausgaben müssen als neue properties des variable object gespeichert werden, das den record properties unter dem record definition node zur Verfügung gestellt wird.
Сгенерированный вывод должен быть сохранен как новые свойства объекта переменной, который становится доступным для записи свойств в узле определения записи Record Definition.
Üretilen çıktı, kayıt tanımlama düğümü altındaki özelliklerin kaydedilmesi için kullanıma sunulan değişken nesnenin yeni özellikleri olarak saklanmalıdır.
In the case of the data building procedure loop, the variable object may also be used to store and—later—retrieve information between different loop cycles, or even between different executions of the indicator process. Such a feature is not available in the calculations procedure loop, as the object does not persist beyond each loop in that context.
Im Falle der data building procedure loop kann das variable object auch dazu verwendet werden, Informationen zwischen verschiedenen Schleifenzyklen oder sogar zwischen verschiedenen Ausführungen des indicator process zu speichern und später abzurufen. In der calculations procedure loop ist eine solche Funktion nicht verfügbar, da das object in diesem Kontext nicht über jede Schleife hinaus bestehen bleibt.
В случае цикла процедуры построения данных переменный объект также может использоваться для хранения и - позже - извлечения информации между различными тактами цикла или даже между различными выполнениями индикаторного процесса. Такая функция недоступна в цикле процедуры расчетов (Calculations Procedure), поскольку объект не сохраняется за пределами каждого цикла в этом контексте.
Veri oluşturma prosedürü döngüsü durumunda, değişken nesne, farklı döngü döngüleri arasında veya hatta gösterge sürecinin farklı yürütmeleri arasında bilgi depolamak ve daha sonra almak için de kullanılabilir. Nesne bu bağlamda her döngünün ötesinde kalıcı olmadığından, böyle bir özellik hesaplama prosedürü döngüsünde mevcut değildir.
Multi-Time-Frame-Daily
Çoklu-Zaman-Çerçeve-Günlük (Multi-Time-Frame-Daily)
In time frames below one hour, the system allows to access data up to 48 hours in the past, relative to the current record. If more than 48-hours worth of data is required to produce the desired data building, then data must be stored into the variable object to be retrieved later on, as explained above.
In Zeiträumen von weniger als einer Stunde erlaubt das System den Zugriff auf Daten, die bis zu 48 Stunden in der Vergangenheit liegen, bezogen auf den aktuellen Datensatz. Werden mehr als 48 Stunden an Daten benötigt, um das gewünschte data building zu erstellen, müssen die Daten in dem variable object gespeichert werden, um später abgerufen werden zu können (wie oben erklärt).
В периоды времени менее одного часа система позволяет получать доступ к данным за последние 48 часов относительно текущей записи. Если для создания желаемого построения данных требуется более 48 часов данных, то данные должны быть сохранены в переменном объекте для последующего извлечения, как описано выше.
Bir saatin altındaki zaman dilimlerinde sistem, mevcut kayda göre 48 saat öncesine kadar olan verilere erişime izin verir. İstenen veri oluşturmayı oluşturmak için 48 saatten fazla veri gerekiyorsa, yukarıda açıklandığı gibi veriler daha sonra alınacak değişken nesnede saklanmalıdır.
Important: Procedures may only access data up to 48 hours in the past counting from the datetime of the record being processed. For example, the calculation of a moving average spanning 100 periods requires temporarily storing data in an array, as the 45 minutes time frame needs 75-hours worth of data.
Important: Verfahren können nur auf Daten zugreifen, die bis zu 48 Stunden in die Vergangenheit zurückreichen, gerechnet ab dem Datum des zu verarbeitenden Datensatzes. Die Berechnung eines gleitenden Durchschnitts (moving average), der sich über 100 Perioden erstreckt, erfordert beispielsweise die Zwischenspeicherung von Daten in einem Array, da für den Zeitrahmen von 45 Minuten Daten im Wert von 75 Stunden benötigt werden.
Important: Процедуры могут обращаться к данным только за прошедшие 48 часов, считая от времени даты обрабатываемой записи. Например, расчет скользящего среднего, охватывающего 100 периодов, требует временного хранения данных в массиве, поскольку для временного интервала в 45 минут требуется 75 часовых данных.
Important: Önemli: Prosedürler, işlenmekte olan kaydın tarihinden itibaren yalnızca 48 saat öncesine kadar olan verilere erişebilir. Örneğin, 45 dakikalık zaman çerçevesi 75 saatlik veriye ihtiyaç duyduğundan, 100 dönemi kapsayan hareketli bir ortalamanın hesaplanması, verilerin bir dizide geçici olarak depolanmasını gerektirir.
The following is an example of a procedure loop code, in particular, the code that calculates the Popular SMAs product of the Simple Moving Average (SMA) indicator. Notice how the output generated by the
calculateSMA
function is stored into the variable object, and how an array stored in the variable object is used to overcome the 48-hours data-access limitation of Multi-Priod-Daily time frames. Im Folgenden finden Sie ein Beispiel für einen procedure loop code, insbesondere den Code, der das Produkt Popular SMAs des Simple Moving Average (SMA) Indikators berechnet. Beachten Sie, wie die von der Funktion
calculateSMA
erzeugte Ausgabe im variable object gespeichert wird und wie ein im variable object gespeichertes Array verwendet wird, um die 48-Stunden-data-access limitation (Datenzugriffsbeschränkung) von Multi-Priod-Daily Zeitrahmen zu überwinden. Ниже приведен пример кода цикла процедуры, в частности, кода, который вычисляет продут Popular SMA индикатора Simple Moving Average (SMA). Обратите внимание, как вывод, генерируемый функцией
calculateSMA
, сохраняется в объекте переменной, и как массив, хранящийся в объекте переменной, используется для преодоления 48-часового ограничения на доступ к данным для таймфреймов Multi-Priod-Daily. Aşağıda, özellikle Basit Hareketli Ortalama ( Simple Moving Average ) (SMA) göstergesinin Popüler SMA'lar ürününü hesaplayan kod olmak üzere bir prosedür döngü kodu örneği verilmiştir. HesaplamaSMA işlevi tarafından üretilen çıktının değişken nesnede nasıl depolandığına ve Değişken nesnede depolanan bir dizinin Çoklu Priod-Günlük zaman çerçevelerinin 48 saatlik veri erişimi sınırlamasının üstesinden gelmek için nasıl kullanıldığına dikkat edin.
/* Loop Code. */
let candle = record.current // Our main dependency is candles
variable.last200.push(candle.close) // Add the current close value to the last 200 array.
if (variable.last200.length > 200) { // Store data in the variable object to overcome the limitations in Multi-Time-Frame-Daily.
variable.last200.splice(0, 1) // Remove the first element of the array to keep it at a maximun of 200 elements.
}
variable.sma20 = calculateSMA(20)
variable.sma50 = calculateSMA(50)
variable.sma100 = calculateSMA(100)
variable.sma200 = calculateSMA(200)
function calculateSMA(periods) { // Having a function saves us from duplicating code.
/* We check we have enough values to make the calculation */
if (variable.last200.length < periods) { return 0 } // If we dont, we define the value is zero.
let sum = 0 // Initialize sum variable.
for (let i = variable.last200.length - periods; i < variable.last200.length; i++) { // Iterate through the last periods
sum = sum + variable.last200[i]
}
let sma = sum / periods
return sma
}
Irregular Periods
Irregular Periods (Irreguläre Perioden):
Нерегулярные периоды (Irregular Periods)
Düzensiz Dönemler
Occasionally, a one-to-one mapping of the periods of the data dependency with the periods of the resulting product does not exist. For example, in the case of the
bollingerChannels
product, using the bollingerBands
as the main dependency. In such a case, the algorithm may read the 1-hour bollingerBands
as input but the resulting object may span several hours. Hin und wieder gibt es keine Eins-zu-Eins-Zuordnung zwischen den Perioden der Datenabhängigkeit und den Perioden des resultierenden Produkts. Zum Beispiel im Fall des
bollingerChannels
product, das die bollingerBands
als main dependency verwendet. In einem solchen Fall kann der Algorithmus die 1-hour bollingerBands
als Eingabe lesen, aber das resultierende object kann sich über mehrere Stunden erstrecken. Иногда не существует однозначного сопоставления периодов зависимости данных с периодами конечного продукта. Например, в случае продукта
bollingerChannels
, использующего в качестве основной зависимости bollingerBands.
В этом случае алгоритм может считывать 1-часовые полосы Боллинджера в качестве входных данных, но результирующий объект может охватывать несколько часов. Bazen, elde edilen ürünün dönemleri ile veri bağımlılığı dönemlerinin bire bir eşlemesi mevcut değildir. Örneğin,
bollingerChannels
ürünü söz konusu olduğunda, ana bağımlılık olarak bollingerBands
öğesinin kullanılması. Böyle bir durumda, algoritma 1 saatlik bollingerBand'leri girdi olarak okuyabilir, ancak ortaya çıkan nesne birkaç saat sürebilir. By default, the system pushes a record into the data collection for every loop. To build products that span several periods of the main dependency, you must make the push from within your own code.
Standardmäßig schiebt das System bei jeder Schleife einen Datensatz in die Datensammlung. Um Produkte zu erstellen, die sich über mehrere Perioden der Hauptabhängigkeit erstrecken, müssen Sie den Push in Ihrem eigenen Code durchführen.
По умолчанию система переносит запись в коллекцию данных для каждого цикла. Для создания продуктов, которые охватывают несколько периодов основной зависимости, вы должны выполнять это действие из собственного кода.
Varsayılan olarak, sistem her döngü için veri toplamaya bir kayıt gönderir. Ana bağımlılığın birkaç periyodunu kapsayan ürünler oluşturmak için, kendi kodunuzdan baskı yapmanız gerekir.
When the system detects a push in the procedure loop code, it cancels the automatic push on each loop.
Wenn das System einen Push im Code der procedure loop feststellt, bricht es den automatischen Push in jeder Schleife ab.
Когда система обнаруживает перенос в коде процедурного цикла, она отменяет автоматическое перенос в каждом цикле.
Sistem, prosedür döngü kodunda bir push bildirimi algıladığında, her döngüde otomatik push işlemini iptal eder.
The following example taken from the data building procedure loop of the Bollinger Channels Object indicator features several instances of arbitrary use of pushes.
Das folgende Beispiel aus der Schleife der data building procedure loop des Bollinger Channels Object zeigt mehrere Beispiele für die willkürliche Verwendung von Pushs.
Следующий пример, взятый из цикла процедуры построения данных индикатора Bollinger Channels Object, содержит несколько примеров произвольного использования переносов.
Bollinger Kanalları Nesne göstergesinin veri oluşturma prosedürü döngüsünden alınan aşağıdaki örnekte, çeşitli itme kullanımı örnekleri bulunmaktadır.
if (record.next !== undefined) {
if (
record.current.direction === record.next.direction) {
if (variable.channel === undefined) {
variable.channel = {
begin: undefined,
end: undefined,
direction: undefined,
period: 0,
firstMovingAverage: 0,
lastMovingAverage: 0,
firstDeviation: 0,
lastDeviation: 0
}
variable.channel.direction = record.current.direction
variable.channel.period = 2
variable.channel.begin = record.current.begin
variable.channel.end = record.next.end
variable.channel.firstMovingAverage = record.current.movingAverage
variable.channel.lastMovingAverage = record.next.movingAverage
variable.channel.firstDeviation = record.current.deviation
variable.channel.lastDeviation = record.next.deviation
} else {
variable.channel.period++
variable.channel.end = record.next.end
variable.channel.lastMovingAverage = record.next.movingAverage
variable.channel.lastDeviation = record.next.deviation
}
} else {
if (variable.channel !== undefined) {
results.push(variable.channel)
variable.channel = undefined
} else {
/* The variable.channel has only one period */
variable.channel = {}
variable.channel.direction = record.current.direction
variable.channel.period = 1
variable.channel.begin = record.current.begin
variable.channel.end = record.current.end
variable.channel.firstMovingAverage = record.current.movingAverage
variable.channel.lastMovingAverage = record.current.movingAverage
variable.channel.firstDeviation = record.current.deviation
variable.channel.lastDeviation = record.current.deviation
results.push(variable.channel)
variable.channel = undefined
}
}
} else {
if (variable.channel !== undefined) {
variable.channel.period++
variable.channel.end = record.current.end
variable.channel.lastMovingAverage = record.current.movingAverage
variable.channel.lastDeviation = record.current.deviation
results.push(variable.channel)
variable.channel = undefined
} else {
/* The variable.channel has only one period */
variable.channel = {}
variable.channel.direction = record.current.direction
variable.channel.period = 1
variable.channel.begin = record.current.begin
variable.channel.end = record.current.end
variable.channel.firstMovingAverage = record.current.movingAverage
variable.channel.lastMovingAverage = record.current.movingAverage
variable.channel.firstDeviation = record.current.deviation
variable.channel.lastDeviation = record.current.deviation
results.push(variable.channel)
variable.channel = undefined
}
}
Managing Undefined Objects
Undefined Objects verwalten:
Управление неопределенными объектами (Managing Undefined Objects)
Tanımsız Nesneleri Yönetme
In many instances, objects may be undefined. For example, the first 199 candles in the data collection corresponding to a 200-period moving average may be undefined, as the data building procedure may only build the object once the 200th candle is evaluated.
In vielen Fällen können die Objekte undefiniert sein. Beispielsweise können die ersten 199 candles in der Datensammlung, die einem gleitenden 200-Perioden-Durchschnitt entsprechen, undefiniert sein, da die Datenerstellungsprozedur das Objekt möglicherweise erst nach der Auswertung der 200sten candle erstellt.
Во многих случаях объекты могут быть неопределенными. Например, первые 199 свечей в коллекции данных, соответствующих 200-периодной скользящей средней, могут быть неопределенными, поскольку процедура построения данных может построить объект только после оценки 200-й свечи.
Bir çok durumda, nesneler tanımsız olabilir. Örneğin, 200 dönemlik hareketli ortalamaya karşılık gelen veri toplamadaki ilk 199 mum tanımsız olabilir, çünkü veri oluşturma prosedürü nesneyi yalnızca 200. mum değerlendirildikten sonra oluşturabilir.
Storing undefined property values is highly undesirable, as that would likely produce errors downstream when others attempt to consume the products produced by the indicator. How to handle such circumstances is up to the developer.
Die Speicherung von undifined property values ist höchst unerwünscht, da dies wahrscheinlich zu Fehlern führen würde, wenn andere versuchen, die von dem indicator erzeugten Produkte zu konsumieren. Wie man mit solchen Umständen umgeht, bleibt dem Entwickler überlassen. Warning!!! This translation is outdated. English version is... Storing undefined property values is highly undesirable, as that would likely produce errors downstream when others attempt to consume the products produced by the indicator. How to handle such circumstances is up to the developer. Please update this translation.
Хранение неопределенных значений свойств крайне нежелательно, так как это, скорее всего, приведет к ошибкам, когда другие попытаются использовать продукты, произведенные индикатором. Как поступать в таких случаях, зависит от разработчика.
Başkaları gösterge tarafından üretilen ürünleri tüketmeye çalıştığında aşağı yönde hatalara yol açacağından, tanımlanmamış mülk değerlerinin saklanması oldukça istenmeyen bir durumdur. Bu tür durumlarla nasıl başa çıkılacağı geliştiriciye bağlıdır. Warning!!! This translation is outdated. English version is... Storing undefined property values is highly undesirable, as that would likely produce errors downstream when others attempt to consume the products produced by the indicator. How to handle such circumstances is up to the developer. Please update this translation.
The Bollinger Channels Object example above features deliberate handling of undefined objects.
Das obige Beispiel des Bollinger Channels Object zeichnet sich durch den bewussten Umgang mit undefinierten Objekten aus.
Приведенный выше пример на Bollinger Channels Object отличается продуманной работой с неопределенными объектами.
Yukarıdaki Bollinger Kanalları Nesnesi örneği, tanımsız nesnelerin kasıtlı olarak ele alınmasını içerir.
In the case of a 200-period moving average discussed above, the developer may want to produce an arbitrary estimation of the moving average for the first 199 candles, or simply set the value to zero for the first 199 candles. The later was the choice for the
popularSMAs
product as may be observed in the code of the initialization procedure: Im Falle des oben beschriebenen 200-period moving average kann der Entwickler eine beliebige Schätzung des gleitenden Durchschnitts für die ersten 199 Kerzen vornehmen oder den Wert für die ersten 199 Kerzen einfach auf Null setzen. Letzteres wurde für das Produkt
popularSMAs
gewählt, wie im Code der initialization procedure zu sehen ist: В случае 200-периодного скользящего среднего, о котором говорилось выше, разработчик может захотеть произвести произвольную оценку скользящего среднего для первых 199 свечей или просто установить значение нуля для первых 199 свечей. Последнее было выбрано для продукта
popularSMA
, что можно заметить в коде процедуры инициализации: Yukarıda tartışılan 200 dönemlik hareketli ortalama durumunda, geliştirici ilk 199 mum için hareketli ortalamanın keyfi bir tahminini üretmek veya ilk 199 mum için değeri sıfıra ayarlamak isteyebilir. Başlatma prosedürünün kodunda görülebileceği gibi, popülerSMA ürününün seçimi daha sonraydı:
/* Initialization Code*/
variable.previousEMA20 = 0
variable.previousEMA50 = 0
variable.previousEMA100 = 0
variable.previousEMA200 = 0
/* Initialization Code*/
variable.previousEMA20 = 0
variable.previousEMA50 = 0
variable.previousEMA100 = 0
variable.previousEMA200 = 0
Data Mining — TOC
You just read page 20 in the topic.
3. Data Mining - Dataset Types
4. Data Mining - Datasets Type Conversions
5. Data Mining - Indicator Frameworks
6. Data Mining - Data Mine Hierarchy
7. Data Mining - Managing Execution
8. Data Mining - Data Dependencies
9. Data Mining - Status Reports
10. Data Mining - Status Dependencies
14. Data Mining - Fetching Data From APIs
15. Data Mining - Consuming Data From Strategies
16. Data Mining - Indicator Bots
17. Data Mining - Indicator Bots - Process Definition
18. Data Mining - Indicator Bots - Product Definition
19. Data Mining - Indicator Bots - Data Mining Workflow
20. Data Mining - Indicator Bots - Coding the Indicator's Logic