Available translations
loading results
Situations, Conditions, and Formulas
Summary: The trading framework implemented in Trading Systems and Trading Strategies carries some low-level trading logic in and of itself. However, the bulk of the logic specific to each strategy derives from the way you describe market situations, and how you define the actions the Trading Bot must take.
Summary: Торговая инфраструктура, реализованная в Trading Systems и Trading Strategies, сама по себе несет в себе некоторую низкоуровневую торговую логику. Однако основная часть логики, специфичной для каждой стратегии, вытекает из того, как вы описываете рыночные ситуации и как вы определяете действия, которые должен предпринять торговый бот Trading Bot.
Summary: Alım Satım Sistemleri (Trading Systems) ve Alım Satım Stratejilerinde (Trading Strategies) uygulanan alım satım yapılandırması, kendi içinde bazı düşük seviyeli alım satım mantığı taşır. Ancak, her bir stratejiye özgü mantığın büyük kısmı, piyasa durumlarını tanımlama şeklinizden ve Alım Satım Botunun gerçekleştirmesi gereken eylemleri nasıl tanımladığınızdan kaynaklanır.
Situation
Foundations->Node->Situation->Definition
A situation refers to a specific state of the market in which a certain event should take place, as defined by any number of conditions.
Un situation se refiere a un estado específico del mercado en el que debe tener lugar un determinado evento, definido por una serie de condiciones.
Ситуация Situation относится к определенному состоянию, в котором должно произойти определенное событие, поределяемое любым количеством условий.
Durum, herhangi bir sayıda koşulla tanımlanabilecek bir olayın gerçekleşmesi beklenen piyasa durumunu ifade eder.
Eine Situation bezieht sich auf einen bestimmten Zustand des Marktes, in dem ein bestimmtes Ereignis eintreten sollte, das durch eine beliebige Anzahl von Bedingungen definiert ist.
Foundations->Node->Situation->Content
In other words, you define situations in which you wish a certain event to happen (i.e.: trigger on the strategy, take a position, etc.) and each situation is described as a set of conditions that need to be met for the event to be triggered.
Другими словами, вы определяете ситуации, в которых вы хотите, чтобы произошло определенное событие (т.е.: срабатывание стратегии, занятие позиции и т.д.), и каждая ситуация описывается как набор условий, которые должны быть выполнены, чтобы событие произошло.
Mit anderen Worten: Sie definieren Situationen, in denen ein bestimmtes Ereignis eintreten soll (d.h.: Auslösung der Strategie, Eröffnen einer Position usw.), und jede Situation wird als eine Reihe von Bedingungen beschrieben, die erfüllt sein müssen, damit das Ereignis ausgelöst wird.
Başka bir deyişle, belirli bir olayın gerçekleşmesini istediğiniz durumları tanımlarsınız (örneğin: stratejiyi tetiklemek, bir pozisyon almak, vb.) ve her durum, olayın tetiklenmesi için yerine getirilmesi gereken bir dizi koşul olarak tanımlanır.
A situation gets validated when all conditions under it are
true
. Ситуация подтверждается, когда все условия в ней истинны (
true
). Eine Situation wird wahr (
true
), wenn alle darunter liegenden Bedingungen true
sind (logische UND-Verknüpfung). Bir durum, altındaki tüm koşullar doğru olduğunda doğrulanır.
An event may have more than one situation attached to it. In such a case, when any of the situations gets validated, the event gets triggered. That is, events may be triggered in different circumstances, meaning that you are free to define different situations upon which the same event would be triggered. In such a case, when any of the situations evaluate
true
, then the event is triggered. Событие может иметь более одной ситуации, связанной с ним. В этом случае, когда любая из ситуаций подтверждается, событие срабатывает. То есть события могут срабатывать при различных обстоятельствах, что означает, что вы можете определить различные ситуации, при которых будет срабатывать одно и то же событие. В этом случае, когда любая из ситуаций становится истинной (
true
), событие срабатывает. Ein Ereignis kann mit mehr als einer Situation verknüpft sein. In einem solchen Fall wird das Ereignis ausgelöst, wenn eine der Situationen wahr wird. Das heißt, dass Ereignisse unter verschiedenen Umständen ausgelöst werden können, es steht Ihnen also frei, verschiedene Situationen zu definieren, in denen das gleiche Ereignis ausgelöst wird. In einem solchen Fall wird das Ereignis ausgelöst, wenn eine der Situationen als
true
bewertet wird (logische ODER-Verknüpfung). Bir olaya bağlı birden fazla durum olabilir. Böyle bir durumda, durumlardan herhangi biri doğrulandığında, olay tetiklenir. Yani, olaylar farklı koşullarda tetiklenebilir, yani aynı olayın tetikleneceği farklı durumları tanımlamakta özgürsünüz. Böyle bir durumda, durumlardan herhangi biri
true
(doğru) olarak değerlendirildiğinde, olay tetiklenir. Condition
Foundations->Node->Condition->Definition
Conditions are rules within a situation. When all conditions under a situation validate true, then the situation gets validated as well, and the associated event is triggered.
Conditions son reglas dentro de una situación. Cuando todas las condiciones de una situación se validan como verdaderas, la situación también se valida y se activa el evento asociado.
Condition - это правила внутри ситуации. Когда все условия в ситуации проверяются на истинность, ситуация также проверяется, и запускается соответствующее событие.
Koşullar, bir durum içindeki kurallardır. Bir durum altındaki tüm koşullar doğru olduğunda, durum da doğrulanır ve ilgili olay tetiklenir.
Foundations->Node->Condition->Content
Therefore, conditions are used to mathematically describe what needs to happen with the market for a certain action to be taken.
Таким образом, условия используются для математического описания того, что должно произойти с рынком для выполнения определенного действия.
Daher werden Bedingungen verwendet, um mathematisch zu beschreiben, was auf dem Markt geschehen muss, damit eine bestimmte Aktion durchgeführt werden kann.
Bu nedenle, belirli bir eylemin gerçekleştirilmesi için piyasada ne olması gerektiğini matematiksel olarak tanımlayacağınız yer burasıdır.
For example:
Например:
Zum Beispiel:
Situation 1
Ситуация 1
1. Durum
- Condition A:
chart.at01hs.candle.close
>chart.at01hs.bollingerBand.MovingAverage
- Bedingung A:
chart.at01hs.candle.close
>chart.at01hs.bollingerBand.MovingAverage
- Состояние A:
chart.at01hs.candle.close
>chart.at01hs.bollingerBand.MovingAverage
- Koşul A:
chart.at01hs.candle.close
>chart.at01hs.bollingerBand.MovingAverage
Note: This means that the latest candle at the 1 hour chart closed above the Bollinger Bands moving average.
Note: Это означает, что последняя свеча на часовом графике закрылась выше скользящей средней полосы Боллинджера.
Note: Dies bedeutet, dass die letzte Kerze auf dem 1-Stunden-Chart oberhalb des gleitenden Durchschnitts der Bollinger-Bänder geschlossen hat.
Note: Bu, 1 saatlik grafikteki en son mumun Bollinger Bantları hareketli ortalamasının üzerinde kapandığı anlamına gelir.
- Condition B:
chart.at01hs.candle.previous.max
>chart.at01hs.bollingerBand.previous.MovingAverage
- Bedingung B:
chart.at01hs.candle.previous.max
>chart.at01hs.bollingerBand.previous.MovingAverage
- Состояние B:
chart.at01hs.candle.previous.max
>chart.at01hs.bollingerBand.previous.MovingAverage
- Koşul B:
chart.at01hs.candle.previous.max
>chart.at01hs.bollingerBand.previous.MovingAverage
Note: This means that the maximum value of the candle before the last one, was higher than the Bollinger Bands moving average.
Note: Это означает, что максимальное значение свечи перед последней было выше скользящей средней полосы Боллинджера.
Note: Das bedeutet, dass der Höchstwert der vorletzten Kerze über dem gleitenden Durchschnitt der Bollinger-Bänder lag.
Note: Bu, son mumdan önceki mumun maksimum değerinin Bollinger Bantları hareketli ortalamasından daha yüksek olduğu anlamına gelir.
In the example above, conditions A and B are comparison statements that may evaluate either
true
or false
. In the case both would evaluate true
then Situation 1 would be true
as well. В приведенном выше примере условия A и B представляют собой операторы сравнения, которые могут оценивать как
true
, так и false
. В случае, если оба будут оценивать как true
, то ситуация 1 также будет верной. Im obigen Beispiel sind die Bedingungen A und B Vergleichsaussagen, die entweder als
true
oder false
bewertet werden können. Wenn beide wahr werden, wird auch Situation 1 wahr. Yukarıdaki örnekte, A ve B koşulları doğru (
true
) ya da yanlış (false
) olarak değerlendirilebilen karşılaştırma ifadeleridir. Her ikisinin de doğru olarak değerlendirilmesi durumunda Durum 1 de doğru olacaktır. Note: To learn how to write conditions, start with the Syntax Overview.
Note: Чтобы узнать, как писать условия, начните с обзора Syntax Overview.
Note: Um zu lernen, wie man Bedingungen schreibt, beginnen Sie mit der Syntax Overview.
Note: Koşulların nasıl yazılacağını öğrenmek için Sözdizimine Genel Bakış (Syntax Overview) konusuna bakabilirsiniz.
Formula
Foundations->Node->Formula->Definition
A formula is a mathematical expression intended to determine a numerical value to be applied dynamically to a certain property.
Una fórmula es una expresión matemática destinada a determinar un valor numérico que se aplicará dinámicamente a una determinada propiedad.
Formula - это математическое выражение, предназначенное для определения числового значения, которое будет динамически применяться к определенному свойству.
Formül, belirli bir özelliğe dinamik olarak uygulanacak sayısal bir değer belirlemeyi amaçlayan matematiksel bir ifadedir.
Eine Formel ist ein mathematischer Ausdruck zur Bestimmung eines numerischen Wertes, der dynamisch auf eine bestimmte Eigenschaft angewendet werden soll.
Foundations->Node->Formula->Content
In the context of a Trading System, formulas are used to determine the values for several properties, such as the Target Rate, Target Size, Managed Stop Loss, Managed Take Profit, and so on.
В контексте торговой системы Trading System, формулы используются для определения значений нескольких свойств, таких как Target Rate, Target Size, Managed Stop Loss, Managed Take Profit и т.д.
Bir Ticaret Sistemi bağlamında, Hedef Oran (Target Rate), Hedef Boyut (Target Size), Yönetilen Zarar Durdur (Managed Stop Loss), Yönetilen Kâr Al (Managed Take Profit) vb. gibi çeşitli özelliklerin değerlerini belirlemek için formüller kullanılır.
Im Zusammenhang mit einem Handelssystem werden Formeln verwendet, um die Werte für verschiedene Eigenschaften zu bestimmen, wie z. B. Zielkurs (Target Rate), Zielgröße (Target Size), Managed Stop Loss, Managed Take Profit, usw.
Formulas may use indicators and Trading Engine properties. The main difference between writing a Formula and writing a Condition is that while conditions must evaluate to
true
or false
, formulas must evaluate to a number. Формулы могут использовать индикаторы и свойства торгового механизма. Основное различие между написанием формулы Formula и написанием условия Condition заключается в том, что, хотя условия должны оцениваться как истинные (
true
) или ложные (false
), результатом вычисления формулы должно быть числом. Formüller, göstergeleri ve Trading Engine özelliklerini kullanabilir. Formül yazma ile Koşul yazma arasındaki temel fark, koşulların doğru (
true
) veya yanlış (false
) olarak değerlendirilmesi gerekirken, formüllerin bir sayı olarak değerlendirilmesi gerektiğidir. Formeln können Indikatoren und Trading-Engine-Eigenschaften verwenden. Der Hauptunterschied zwischen dem Schreiben einer Formel und dem Schreiben einer Bedingung besteht darin, dass Bedingungen als wahr oder falsch ausgewertet werden müssen, während Formeln eine Zahl auswerten müssen.
Foundations->Node->Formula->Examples
A simple math example
Простой математический пример
Basit bir matematik örneği
Ein einfaches mathematisches Beispiel
This simple formula may be used to define an initial take profit target 3% above the rate at which the position was taken.
Эта простая формула может использоваться для определения первоначальной цели тейк-профита на 3% выше ставки, по которой была открыта позиция.
Bu basit formül, pozisyonun alındığı fiyatın %3 üzerinde bir ilk kâr alma hedefi tanımlamak için kullanılabilir.
Diese einfache Formel kann verwendet werden, um ein anfängliches Gewinnmitnahmeziel zu definieren, das 3 % über dem Kurs liegt, zu dem die Position eingegangen wurde.
tradingEngine.tradingCurrent.position.entryTargetRate.value * 1.03
Note: You may use any variable made available by the trading engine, as explained on the accessing runtime data page.
Note: Вы можете использовать любую переменную, доступную в торговой системе, как описано на странице с данными времени выполнения Accessing Runtime Data.
Note: İşlem zamanı verileri sayfasında açıklandığı gibi, işlem motoru tarafından sağlanan herhangi bir değişkeni kullanabilirsiniz.
Note: Sie können jede Variable verwenden, die von der Trading Engine zur Verfügung gestellt wird, wie auf der Seite "accessing runtime data" erläutert.
A simple JavaScript example
Простой пример JavaScript
Basit bir JavaScript örneği
Ein einfaches JavaScript-Beispiel
A bit of very basic JavaScript, introducing conditional statements, allows more intelligence. For example, in this case, we ask if the proposed formula results in a number greater than the current stop loss value; if it does, then the proposed formula is used; if not, then the current stop loss value is left as is.
Например, в этом случае мы спрашиваем, дает ли предложенная формула число больше, чем текущее значение стоп-лосса; если да, то используется предложенная формула; если нет, то текущее значение стоп-лосса остается как есть.
Koşullu ifadeleri tanıtan çok basit bir JavaScript, daha fazla zekaya izin verir.Örneğin, bu durumda, önerilen formülün mevcut stop loss değerinden daha büyük bir sayı ile sonuçlanıp sonuçlanmadığını sorarız; eğer öyleyse, önerilen formül kullanılır; değilse, mevcut stop loss değeri olduğu gibi bırakılır.
Ein wenig grundlegendes JavaScript, das bedingte Anweisungen einführt, ermöglicht mehr Intelligenz. In diesem Fall fragen wir zum Beispiel, ob die vorgeschlagene Formel eine Zahl ergibt, die größer ist als der aktuelle Stop-Loss-Wert; wenn ja, wird die vorgeschlagene Formel verwendet; wenn nicht, wird der aktuelle Stop-Loss-Wert beibehalten.
This is—basically—a trailing stop loss 2% below the Bollinger Bands moving average that may go higher if the moving average goes up, but it may never come down—thanks to the use of the IF / ELSE clause.
Это - в основном - скользящий стоп-лосс на 2% ниже скользящей средней полосы Боллинджера, который может увеличиваться, если скользящая средняя растет, но может никогда не снизиться - благодаря использованию конструкции IF / ELSE.
Bu, temel olarak, Bollinger Bantları hareketli ortalamasının %2 altında bir ttrailing stop loss'tur ve hareketli ortalama yükselirse daha yükseğe çıkabilir, ancak IF / ELSE yan tümcesinin kullanımı sayesinde asla düşmeyebilir.
Im Grunde handelt es sich hierbei um einen nachlaufenden Stop-Loss-Wert, der 2 % unter dem gleitenden Durchschnitt der Bollinger-Bänder liegt und der höher ausfallen kann, wenn der gleitende Durchschnitt steigt, aber er darf niemals fallen - dank der Verwendung der IF/ELSE-Klausel.
if (chart.at01hs.bollingerBand.movingAverage * 0.98 >
tradingEngine.tradingCurrent.position.stopLoss.value)
{chart.at01hs.bollingerBand.movingAverage * 0.98}
else
{tradingEngine.tradingCurrent.position.stopLoss.value}
For developers
Для разработчиков
Geliştiriciler için
Für Entwickler
To build more complex logic within a formula, create a function that implements the logic and returns a numerical value—and then call the function:
Чтобы построить более сложную логику в формуле, создайте функцию, которая реализует логику и возвращает числовое значение, а затем вызовите функцию:
Bir formül içinde daha karmaşık mantık oluşturmak için, mantığı uygulayan ve sayısal bir değer döndüren bir işlev oluşturun ve ardından işlevi çağırın:
Um eine komplexere Logik in eine Formel einzubauen, erstellen Sie eine Funktion, die die Logik implementiert und einen numerischen Wert zurückgibt - und rufen dann die Funktion auf:
function orderRate() {
const ORDER_STEP_NUMBER = 1 // Secuential step number, starting with 1 from the closest to the price.
const BUY_SELL_SIGN = -1 // 1 for buy orders, -1 for sell orders.
const STEP_SEPARATION = 0.15 // % of separation of stair steps between them.
const BASE_FACTOR = 0.2 // % above or below bollinger band without bias.
const BIAS_FACTOR = 0.3 // % to move the whole stair of orders up or down depending on the bias.
const BAND_RATE = chart.at01min.bollingerBand.lowerBand // Upper Bollinger Band for sell orders, and Lower for buy orders.
let inbalance = tradingEngine.tradingCurrent.tradingEpisode.episodeBaseAsset.beginBalance.value - tradingEngine.tradingCurrent.tradingEpisode.episodeBaseAsset.balance.value
let BIAS_SIGN
if (inbalance === 0) {
BIAS_SIGN = 0
}
if (inbalance < 0) {
BIAS_SIGN = + 1
}
if (inbalance > 0) {
BIAS_SIGN = - 1
}
let rate = BAND_RATE + BUY_SELL_SIGN BAND_RATE (BASE_FACTOR + ORDER_STEP_NUMBER STEP_SEPARATION + BIAS_SIGN BIAS_FACTOR) / 100
return rate
}
orderRate()
Next
Syntax Overview
Syntax Overview
Trading Logic — TOC
You just read page 1 in the topic.
1. Situations, Conditions, and Formulas
4. Accessing Trading System Definitions and Session Parameters