関数は基本的に比較や計算に使用される定義済みの計算式です。各関数には特定の名前がつけられ、また式により決められた処理を行い、結果を算出します。これから、それぞれの関数を使った結果を画像に落としながら実際にプログラミングを組んで記載していきます。

インディケーターでは出力するフレームが一つなのでトレーディングシステムで作成しています。
ここでのルールをAbsolute Value関数を使って説明します。

先ずは「trading Systems Builder」を選択して「新(新しい、新しく、新たな)しい)」をクリックしてスタートです。

「一般」のタブの「名前」「別名」「ラベルマスク」「メモ」をAbsoluteValueとします。
AbsoluteValueA

次にタブの「変数を出力」を「新(新しい、新しく、新たな)しい)」をクリックして「_AbsoluteValue」の出力を設定します。
AbsoluteValueB

名前の中にある「変数名」、「名前」、「詳細」を説明するプログラミング言語の前にアンダーバーを入れ、AbsoluteValueの場合「_AbsoluteValue」としています。

そして、インディケーター出力にチェックしてください。
チェックすると出力されます。 

AbsoluteValueC

次に「インディケーター出力」にある「線の色」、「線幅」、「線種」、「表示位置」を設定し、「OK」をクリックします。
ここでは下記のように設定しています。

AbsoluteValueD

「公式」を選択してプログラミングを書き込みます。
書き込んだら、「保存」をしてください。
そうすると、トレーディングシステムに保存されます。

基本的に説明の中に「公式:」がありますので、こちらを入れると出来るようにしました。
※「変数を出力」で設定していると「公式」で出力が緑色になっています。
AbsoluteValueF

設定の仕方はチャート上で右クリックして「トレーディングシステムを追加」で作成した「AbsoluteValue」を選択するとチャート上に表示されます。

AbsoluteValue2


AbsoluteValue

プログラミングをダウンロードする方法

Absolute Valueを使って説明します。
Absolute Valueで右クリックして「名前を付けてリンク先を保存」をクリックして「AbsoluteValue.vttrs」を保存して下さい。
AbsoluteValueDL
VTを起動して「Technical Analysis」の「Trading Systems Builder」を選択し、「インポート」で 保存した「AbsoluteValue.vttrs」をインポートして下さい。
inport
設定するには、チャート上で右クリックして「トレーディングシステムを追加」をクリックして、インポートした「
AbsoluteValueを選択し、「追加」をするとチャートに表示されます。

AbsoluteValue2

AbsoluteValue

VTの関数一覧

Absolute Value

書式:abs(DATA ARRAY)

丸カッコ内の絶対値を算出します。

例: abs(-12)の結果は+12、abs(12)の結果も+12となります。

公式:_AbsoluteValue:=abs(-12); 
AbsoluteValue
DL:AbsoluteValue

Account Status

書式:AccountStatus()
この関数は正式にサポートしておりません。PositionCount(), BuyPositionCount(),SellPositionCount()のいずれかをご利用いただくことをおすすめいたします。

この関数は、No_Position_Active, Buy_Position_Active, Sell_Position_Active, Both_Position_Activeからなり、価格が更新される度(価格が提示される度)に値を返します。AccountStatus()は"always in the market"(i.e. ドテン売買)で稼働しているトレーディングシステムでは、ご利用いただけません。

No_Position_Active
買いポジションまたは売りポジションがトレーディングシステムを追加した通貨ペアにないとき。

Buy_Position_Active
1つ以上の買いポジションがトレーディングシステムを追加した通貨ペアにあるとき。

Sell_Position_Active
1つ以上の売りポジションがトレーディングシステムを追加した通貨ペアにあるとき。

Both_Position_Active
1つ以上の買いポジションまたは売りポジションがトレーディングシステムを追加した通貨ペアにあるとき。 OpenBuy:= AccountStatus()=No_Position_Active AND cross(C,mov(C,10,S))
CloseBuy:= AccountStatus()=Buy_Position_Active AND cross(mov(C,10,S),C)

Commodity Channel Index (CCI) Reversal Systemの「公式」で下記の部分を変更して使います。

{Auto-Trading Functionality; Used in Auto-Trade Mode Only}

OpenBuy:= BuyPositionCount()=0 AND LongEntrySignal=1;
CloseBuy:= BuyPositionCount()>0 AND LongExitSignal=1;

OpenSell:= SellPositionCount()=0 AND ShortEntrySignal=1;
CloseSell:= SellPositionCount()>0 AND ShortExitSignal=1;

↓に変更

{Auto-Trading Functionality; Used in Auto-Trade Mode Only}

OpenBuy:= AccountStatus()=No_Position_Active AND LongEntrySignal=1;
CloseBuy:= AccountStatus()=Buy_Position_Active  AND LongExitSignal=1;

OpenSell:= AccountStatus()=No_Position_Active AND ShortEntrySignal=1;
CloseSell:= AccountStatus()=Sell_Position_Active AND ShortExitSignal=1;
 
DL:Commodity Channel Index (CCI) Reversal System (1)


応用編:
CCIのシグナルを反対にする。

「公式」下記の部分を変更
{Basic Entry/Exit Conditions}

LongEntrySetup:= Cross(CCIndex,CCIOSLevel);

LongExitCond1:= Cross(CCIOSLevel,CCIndex);
LongExitCond2:= Cross(CCIOBLevel,CCIndex);
LongExitSetup:= LongExitCond1=1 OR LongExitCond2=1;

ShortEntrySetup:= Cross(CCIOBLevel,CCIndex);

ShortExitCond1:= Cross(CCIndex,CCIOBLevel);
ShortExitCond2:= Cross(CCIndex,CCIOSLevel);
ShortExitSetup:= ShortExitCond1=1 OR ShortExitCond2=1;

↓に変更

{Basic Entry/Exit Conditions}

LongEntrySetup:= Cross(CCIOBLevel,CCIndex);

LongExitCond1:= Cross(CCIndex,CCIOBLevel);
LongExitCond2:= Cross(CCIndex,CCIOSLevel);
LongExitSetup:= LongExitCond1=1 OR LongExitCond2=1;

ShortEntrySetup:= Cross(CCIndex,CCIOSLevel);

ShortExitCond1:= Cross(CCIOSLevel,CCIndex);
ShortExitCond2:= Cross(CCIOBLevel,CCIndex);
ShortExitSetup:= ShortExitCond1=1 OR ShortExitCond2=1; 
 
DL:Commodity Channel Index (CCI) Reversal System (2)

Arc Tangent

書式1:atan(Y DATA ARRAY, X DATA ARRAY)
Y/Xの逆正接を算出します。
値は0から359.9度の範囲で返されます。

公式:_Atan:= atan(1,1);
Atan
DL:Atan

書式2:atan(DATA ARRAY)
丸カッコ内の逆正接を算出します。
DL:Atan2

-Pi/2とPi/2の間のラジアンで返されます。
-90から+90の範囲の度数に変換する時は、_AtanB:= ATAN(DATA ARRAY)*180/Pi;を使用します。
(Piはグローバル定数3.1415926535897932385)

DL:Atan3

応用:Refを使って12本前のクローズと現在のクローズをアークタンジェントを使って求める。
_AtanB:= atan(Ref(C,-12),C);

45度を基準線を引く。
Zero:=45;

公式:_AtanB:= atan(Ref(C,-12),C);
    Zero:=45;

変数を出力: _AtanBとZeroを設定しています。
Atan2
DL:Atan4 

Aroon Down

書式1:AroonDown(DATA ARRAY, PERIODS)
AroonインディケーターのAroonDownを計算します。
データ配列の設定は必要ないが、安値以外のデータ配列の使用を希望する場合は必要となります。
安値を使用する場合は下記の様にデータ配列の記載は必要ありません。

公式:_AroonDown:=AroonDown(C,14);
AroonDown
DL:AroonDown

書式2:AroonDown(PERIODS)
AroonDown(DATA ARRAY, PERIODS)は下記の式により、AroonインディケーターのAroonDownを計算します。

AroonDown := ((PERIODS - LLVBars(DATA ARRAY,PERIODS+1)) / PERIODS) * 100;
DL:AroonDown2

例: AroonDown (Low,14)は期間14を使用し、AroonインディケーターのAroonDownを計算します。
DL:AroonDown3

Aroon UP

書式1:AroonUp (DATA ARRAY, PERIODS)
AroonインディケーターのAroon Upを計算します。
データ配列の設定は必要ないが、高値以外のデータ配列の使用を希望する場合は必要となります。
高値を使用する場合は下記の様にデータ配列の記載は必要ありません。

公式:_AroonUP:=AroonUP(C,14);
AroonUP
DL:AroonUP

書式2:AroonUp(PERIODS)
AroonUp(DATA ARRAY, PERIODS)は下記の式により、AroonインディケーターのAroonUpを計算します。

AroonUp := ((PERIODS - HHVBars(DATA ARRAY,PERIODS+1)) / PERIODS) * 100;
DL:AroonUP2

例:
AroonUp (High,14)は期間14を使用し、AroonインディケーターのAroonUpを計算します。
DL:AroonUP3

Average True Range

書式:atr (PERIODS)
この関数は既に定義されているAverage True Range(ATR)インディケーターを計算します。
ATR(PERIODS)は下記よりAverage True Range(ATR)インディケーターを計算します。
TH:= If(Ref(Close,-1) > High, Ref(Close,-1), High);
TL:= If(Ref(Close,-1) < Low, Ref(Close,-1), Low);
TR:= TH-TL; _ATR:= mov(TR, PERIODS, S);

例:atr(20)は20本の期間を使用し、Average True Range (ATR)インディケーターを計算します。

公式:_AverageTrueRange:=atr(20);
ATR
DL: AverageTrueRange

Bar Count

書式:BarCount()

この関数は現在のバーとそれ以前のバーの総数を返します。
※最左のバーを1とし、それ以前のバーを2,3,4…の様に番号がふられます。
 

例: Out:= BarCount();

Out:= cum(1);
とも書けます。
 

しかし、インディケーターやトレーディングシステムに使用されている場合、関数BarCount()のほうがcum(1)に比べより早く処理されます。

公式:_BarCount:=BarCount();
BarCount
DL:BarCount

Bar Index

BarIndex () はゼロベースのバー数を返します。
この関数は現在のバーとそれ以前のバーの総数を返します。
※最左のバーを0とし、それ以前のバーを1、2,3,4…の様に番号がふられます。


例:
Out:= BarIndex();

Out:= cum(1) - 1;
または
Out:= if(prev(null)=null,0,ref(BarCount(),-1));
とも書けます。

しかし、インディケーターやトレーディングシステムに使用されている場合、関数BarIndex ()のほうがcum(1)-1に比べより早く処理されます。

公式:_BarIndex:=BarIndex();
BarIndex
 DL:BarIndex

Bars Since

書式:BarsSince (DATA ARRAY)

データ配列がTrueになってから過ぎたバーの数を計算します。
 

式:BarsSince(RSI(14)>50)は期間14を使用したRSIが50より大きかったバーの数を出します。その値は、チャートに取り込まれた全データを使用し計算します。

公式:_BarsSince:=BarsSince(RSI(14)>50):
BarsSince
DL:BarsSince

Bollinger Bands (Bottom Band)

書式:BBandBot (DATA ARRAY, PERIODS, METHOD, DEVIATIONS)

METHOD、-n DEVIATIONS(標準偏差)、PERIODS期間のデータ配列を使用し、ボリンジャーバンドインディケーターのBottom Bollinger Bands(ボトムボリンジャーバンド(下弦))を計算する関数です。
有効なMETHODS:SIMPLE(S/単純)、WEIGHTED(W/加重), EXPONENTIAL(E/指数平滑), SINE WEIGHTED(SW/正弦加重), TRIANGLE(TRI/三角),END POINT(EP/時系列), とVOLUME-ADJUSTED(VOL/出来高加重)
 

例:BBandBot (close, 20, S, 2) はSIMPLE METHOD(S/単純)の-2偏差を使用し、20期間の終値のBottom Bollinger Bandを計算します。

公式:_BBandBot:=BBandBot (close,20,S,2);
BBandBot
 DL:BBandBot

Bollinger Bands (Top Band)

書式:BBandBot (DATA ARRAY, PERIODS, METHOD, DEVIATIONS)

METHOD、+n DEVIATIONS(標準偏差) 、PERIODS期間のデータ配列を使用し、ボリンジャーバンドインディケーターのTop Bollinger Bands(トップボリンジャーバンド(上弦))を計算する関数です。 有効なMETHODS(移動平均線の種類):SIMPLE(S/単純)、WEIGHTED(W/加重), EXPONENTIAL(E/指数平滑), SINE WEIGHTED(SW/正弦加重), TRIANGLE(TRI/三角),END POINT(EP/時系列), とVOLUME-ADJUSTED(VOL/出来高加重)
 

例: BBandTop(close, 20, S, 2)はSIMPLE METHOD(S/単純)の+2偏差を使用し、20期間の終値のTop Bollinger Bandを計算します。

公式:_BBandTop:=BBandTop (close,20,S,2);
BBandTop
 DL:BBandTop

Bollinger Bands

書式:BBands (DATA_ARRAY, PERIODS, METHOD, DEVIATIONS, SWITCH)

SWITCHに基づき、METHOD、±n DEVIATIONS(標準偏差) 、PERIODS期間のデータ配列を使用し、ボリンジャーバンドインディケーターのBottom Bollinger BandとTop Bollinger Bandを計算する関数です。(SWITCHでBottomもしくはTopを決められます。)


有効なMETHODS:SIMPLE(S/単純)、WEIGHTED(W/加重), EXPONENTIAL(E/指数平滑), SINE WEIGHTED(SW/正弦加重), TRIANGLE(TRI/三角),END POINT(EP/時系列), とVOLUME-ADJUSTED(VOL/出来高加重)
 

SWITCH=0 でTop Bollinger Bandを計算、SWITCH=1でBottom Bollinger Bandを計算します。
 

例:BBands(DATA_ARRAY, PERIODS, METHOD, DEVIATIONS, 0)ではボリンジャーバンドインディケーターのTop Bollinger Bandを計算します。 TopBollingerBand:= BBands(DATA_ARRAY, PERIODS, METHOD, DEVIATIONS, 0);

関数:BBands(DATA_ARRAY, PERIODS, METHOD, DEVIATIONS, 1) ではボリンジャーバンドインディケーターのBottom Bollinger Bandを計算します。 BottomBollingerBand:= BBands(DATA_ARRAY, PERIODS, METHOD, DEVIATIONS, 1);
 

式:BBandTop(close, 20, S, 2)はSIMPLE METHOD(S/単純)の+2偏差を使用し、20期間の終値のTop Bollinger Bandを計算します。
 

式:BBands(Close, 20, S, 2, 1)はSimple Method(S/単純)の-2偏差を使用し、20の期間の終値でBottom Bollinger Bandを計算しています。

公式:_BBands:=BBands(close,20,S,2,0);
BBands
DL:BBands
 

Top及びBottom Bollinger Bandsは関数BBands()を使用し、下記の様に計算できます:
 

{Middle bandはn期間の単純移動平均です。}
MiddleBollingerBand:= mov(Close, PERIODS, S);

{Bottom Bollinger BandとTop Bollinger Bandを計算します。}
TopBollingerBand:= BBands(Close, 20, S, 2, 0);
BottomBollingerBand:= BBands(Close, 20, S, 2, 1);

また、関数stdev()を使用し、計算することもできます。

{ Middle bandはn期間の単純移動平均です。}
MiddleBollingerBand:= mov(Close, PERIODS, S);

{ Bottom Bollinger BandとTop Bollinger Bandを計算します。}
TopBollingerBand:= MiddleBollingerBand + ( 2 * stdev(Close,PERIODS));
BottomBollingerBand:= MiddleBollingerBand - ( 2 * stdev(Close,PERIODS));

Buy Position Count

書式:BuyPositionCount()

トレーディングシステムを追加したアカウントの「買いポジション」の保有数を返します。 値がアップデートされるのは、価格が更新されたときとなります。

BuyPositionCount
DL:trsys_BBandsBreakout_1
トレーディングシステムをセットしたら。手動で買いポジションを持って下さい。そうすると、フレームにポジションを持っていることを示す「1」が出てきます。

Ceiling

書式:ceiling (DATA ARRAY)

データ配列より大きくて、最も小さい整数を計算します。


例:
ceiling(9.2)は10を返します。
ceiling(-9.2)は-9を返します。

公式:_Ceiling:=Ceiling(9.2);
Ceiling
DL:Ceiling

応用編:Ceilingに移動平均線を使って表示させてみました。

公式:_Ceiling:=Ceiling(mov(C,10,S));
Ceiling2
 DL:Ceiling2

 

Commodity Channel Index

書式:CCI (DATA ARRAY, PERIODS)

データ配列のPERIODS Commodity Channel Index (CCI)を計算します。Donald Lambert独自のロジックをベースに定義済みのCCIインディケーターを計算する関数です。データ配列の設定は必要ないが、Typical Price(TP()/(高値+安値+終値) / 3)以外のデータ配列の使用を希望する場合は必要となります。

公式:_CommodityChannelIndex:=CCI(C,14);
CCI
DL:CommodityChannelIndex

Typical Priceを使用する場合は下記の様にデータ配列の記載は必要ありません。
書式:CCI (PERIODS)


関数:CCI(DATA ARRAY, PERIODS)は下記の式により、期間20を使用したCCIインディケーターを計算します。
 

{ Typical Price }
vTp := (H + L + C) / 3;
 

{ Typical Priceの単純移動平均  }
vTpma := Mov(vTP, 20, S);
 

{VTトレーダーのプログラミング言語にはループ構造が備わっていないため、Mean Deviation(平均偏差)を算出するためのループ文を書きだす必要があります。}
 

{ Mean Deviation }
vMd20 := (Abs(vTpma - vTp)
+ Abs(vTpma - Ref(vTp, -1))
+ Abs(vTpma - Ref(vTp, -2))
+ Abs(vTpma - Ref(vTp, -3))
+ Abs(vTpma - Ref(vTp, -4))
+ Abs(vTpma - Ref(vTp, -5))
+ Abs(vTpma - Ref(vTp, -6))
+ Abs(vTpma - Ref(vTp, -7))
+ Abs(vTpma - Ref(vTp, -8))
+ Abs(vTpma - Ref(vTp, -9))
+ Abs(vTpma - Ref(vTp, -10))
+ Abs(vTpma - Ref(vTp, -11))
+ Abs(vTpma - Ref(vTp, -12))
+ Abs(vTpma - Ref(vTp, -13))
+ Abs(vTpma - Ref(vTp, -14))
+ Abs(vTpma - Ref(vTp, -15))
+ Abs(vTpma - Ref(vTp, -16))
+ Abs(vTpma - Ref(vTp, -17))
+ Abs(vTpma - Ref(vTp, -18))
+ Abs(vTpma - Ref(vTp, -19))) / 20;
 

{ CCI の値とチャート上へのCCI出力 }
vCCI := (vTp - vTpma) / (0.015 * vMd20);

Cosine

書式:cos (DATA ARRAY)

データ配列のCosine(余弦)を計算します。 また、データ配列は度数と仮定します。


例:
cos(0)は1を返します。 cos(Close)は終値のCosineを度数で返します。

公式:_Cos:=Cos(Close);
Cos
 DL:Cos

Cross

書式1:cross (DATA_ARRAY_1, DATA_ARRAY_2)

データ配列1(DATA_ARRAY_1)がデータ配列2(DATA_ARRAY_2)を上抜けた時に+1を返します。その他の時は0(ゼロ)が返されます。データ配列1がデータ配列2を下抜けた時を知るには下記の式を使用ください。


書式2:cross (DATA_ARRAY_2, DATA_ARRAY_1)

式:cross(Close,mov(Close,9,S)は終値が移動平均を上抜けたバーでのみ+1を返します。その他のバーでは同方向に抜けない限り、cross(Close,mov(Close,9,S)は0(ゼロ)を返します。

  Cross

終値が移動平均を下回る時をモニターする場合はcross(mov(Close,9,S),Close)を使用します。 上記の式では終値が移動平均を下抜けたバーでのみ+1を返します。 その他のバーでは次に同方向へ抜けない限りcross(mov(Close,9,S),Close)は0(ゼロ)を返します。

関数Cross()と関係演算子(>や<等)の主な違いは関係演算子を使用した場合、「True」の時は必ず+1が返されることです。


例:
Close > mov(Close,9,S) (下記では青い太線で表示)はTrueで+1を返します。その他のバーでもTrueが続く限り+1が返されます。Falseの場合は0(ゼロ)が返されます。 

公式:_MA:=mov(C,9,S);

_Cross:=Cross(C,_MA);

変数を出力: _MAを価格帯に、_Crossをフレーム1に表示しています。

Cross

DL:Cross


Cumulate

書式:cum (DATA ARRAY)
チャートの最初のPERIOD(期間)からのデータ配列の累計を計算します。

例:関数:cum(1)はチャート開始から各バーで1ポイント上昇したインディケーターを計算します。
関数:cum(Close)はチャートの開始からすべての終値の累計を計算します。
Cumulate
DL:Cumulate

Day Of Month

書式:DayOfMonth ()
日付「日」を返します。

例:8月13日の場合は13を返します。

公式: _DayOfMonth:= DayOfMonth ();
DayOfMonth
 DL:DayOfMonth

Day Of Week

書式:DayOfWeek ()
曜日を返します。

1 = 月曜日
2 = 火曜日
3 = 水曜日
4 = 木曜日
5 = 金曜日
6 = 土曜日
7 = 日曜日
※各曜日は東部標準時間の00:00時(24時)に始まります。

例:木曜日の場合は4を返します。

公式: _DayOfWeek:= DayOfWeek ()=4;
DayOfWeek
 DL:DayOfWeek

例:
木曜日に表示されたバーについては+1を返す簡単なインディケーターを作成する場合
_DayOfWeek:= DayOfWeek()=4;
DL:DayOfWeek2
 
または
_DayOfWeek:= if(DayOfWeek()=4,1,0);
※注意: 条件が必ずtrue(1)もしくはfalse(0)で返される場合はIf()関数を使用する必要はありません。
DL:DayOfWeek3

Detrended Price Oscillator

書式:dpo (PERIODS)
定義済みのDetrended Price オシレータを計算します。

dpo(PERIODS)は下記の式よりDetrended Priceオシレータを計算します。
DPO:= Close - ref(mov(Close,PERIODS,S),-(PERIODS/2+1));

公式:_DetrendedPriceOscillator:=dpo(14);
DetrendedPriceOscillator
DL:DetrendedPriceOscillator

Error

書式:error ( CONDITION, ' MESSAGE ' )
プログラムを即時に停止させる関数です。条件が一致した場合(Trueの時)ポップアップ画面にてMESSAGE(引用符の中のメッセージ)を表示します。インディケーターラベルにもエラーが発生している条件の横に赤い丸や感嘆符アイコンを表示させます。

公式:下記の式により、簡単なインディケーターを作成します。
Error:= error(1<3,'1 is less than 3');
上記の式を使用したインディケーターをチャートに表示させようとした場合、下記のメッセージが表示されます。
error
error2
DL:Error
error(1<3,'1 is less than 3');太文字にしたところはエラーのときに表示されます。

Event Count

書式:EventCount ('Logical Variable')
トレーディングシステムが稼働されてから停止されるまでに何度Logical VariableのTrueのステートメントが返されたかを数えます。

関数:EventCount()は主にユーザーが稼働中のトレーディングシステムが使用しているLogical Variableに対しどのくらい自動で売買されたかを管理しやすくする目的で使用されます。

Logical Variableはトレーディングシステムの出力変数を指します。(トレーディングシステム編集→出力内の変数でトレーディング可とされているもの)
Logical Variableには2つの状態True(1)/False(2)しかありません。

例:Logical Variable’A’のある特定の状態を下記の様に計算するとします。
A:= cross(Close,mov(Close,13,S);
この場合、EventCount('A')はトレーディングシステムが稼働後、終値が移動平均を何回上抜けたかを計算します。

注意:(1)トレーディングシステムの稼働が停止された場合、EventCount ('Logical Variable')はは0(ゼロ)にリセットされます。
(2)VTトレーダーが一時的に切断され、再接続した場合はEventCount ('Logical Variable')の値は保存され、切断される前の値から始められます。
(3)VTトレーダーが突然停電、パソコンのクラッシュや再起動等によりシャットダウンされ、VTトレーダーが閉じられなかった場合はEventCount ('Logical Variable')の値はVTトレーダーが再起動し、チャート上にトレーディングシステムが設定され稼働した時に0(ゼロ)にリセットされます。

実際にEventCount ('Logical Variable')を使用し、機能をチェックしてみましょう。

下記の画像では2つの条件が指定されています。
Long:= cross(Close,mov(Close,13,S)); {青い矢印で表示}
Short:= cross(mov(Close,13,S),Close); {赤い矢印で表示}
* (関数 cross() をご参照ください。)

Event Count


次に、買いの新規成行注文/決済成行注文を決めるLogical Variablesの定義について説明します。
※各Logical Variableについてはトレーディングシステム編集を確認してください。
OpenBuy:新規買い注文
CloseBuy:買い決済注文
OpenSell:新規売り注文
CloseSell:売り決済注文

OpenBuy:= Long and (EventCount('OpenBuy') = EventCount('CloseBuy'));
CloseBuy:= Short and (EventCount('OpenBuy') > EventCount('CloseBuy'));

OpenBuyは買いポジションを保有するための買いの成行注文、
CloseBuyはOpenBuyで建てられたポジションの決済注文の売り成行注文とします。
トレーディングシステムが稼働され始めた時はEventCount('OpenBuy') と EventCount('CloseBuy')の値は0(ゼロ)です。

Longの変数がTrueであり、またOpenBuyの条件のEventCount('OpenBuy') のアクションとCloseBuyの条件のEvenCount(‘CloseBuy’)のアクションが等しかった場合、Logical Variable’OpenBuy’は+1になります。

Shortの変数がTrueであり、またOpenBuyの条件のEventCount('OpenBuy') のアクションがCloseBuyの条件のEvenCount(‘CloseBuy’)のアクションより大きい場合、Logical Variable’CloseBuy’は+1になります。また、EventCount(‘OpenBuy’)の値がEventCount(‘CloseBuy’)の値より大きい場合、買いの取引がOpenBuyにより発注され、現在保有する買い取引を決済するために売り成行注文が必要と見なされます。

売り新規/決済の成行注文を決めるLogical Variablesの定義について説明します。
※各Logical Variableについてはトレーディングシステム編集を確認してください。

OpenSell:= Short and (EventCount('OpenSell') = EventCount('CloseSell'));
CloseSell:= Long and (EventCount('OpenSell') > EventCount('CloseSell'));

OpenSellは売りポジションを保有するための売りの成行注文、CloseSellはOpenSellにより建てられた保有している売りポジションの決済注文の買いの成行注文とします。
トレーディングシステムが稼働され始めた時はEventCount('OpenSell') と EventCount('CloseSell')の値は0(ゼロ)です。

Shortの変数がTrueであり、またOpenSellの条件のEventCount('OpenSell') のアクションとCloseSellの条件のEvenCount(‘CloseSell’)のアクションが等しかった場合、Logical Variable’CloseSell’は+1になります。
Longの変数がTrueであり、またOpenSellの条件のEventCount('OpenSell') のアクションがCloseSellの条件のEvenCount(‘CloseSell’)のアクションより大きい場合、Logical Variable’CloseSell’は+1になります。また、EventCount(‘OpenSell’)の値がEventCount(‘CloseSell’)の値より大きい場合、売りの取引がOpenSellにより発注され、現在保有する買い取引を決済するために売りの成行注文が必要と見なされます。

Logical Variablesをトレーディングシステムの作成に使用する場合、簡単なトレーディングシステムテンプレートを推奨します。

{トレーディングシステムテンプレート サンプル}

{トレーディングシステムの試算...
使用するインディケーター等を含みます。}
{ここでは2つの移動平均線を作成します。}

Output1:= close;
Output2:= mov(close,13,S);

{買い(Long)と売り(Short)のシグナルの条件を定義します。}
{サンプルの出力変数を使用し、簡単な価格と移動平均の交差システムを作成します。}

Long:= Cross(Output1,Output2);
Short:= Cross(Output2,Output1);

{トレーディングシステムの稼働機能のため、出力変数を定義します。}
{OpenBuyとCloseBuy で買いの新規/決済をコントロールします。}

OpenBuy:= Long and (EventCount('OpenBuy') = EventCount('CloseBuy'));
CloseBuy:= Short and (EventCount('OpenBuy') > EventCount('CloseBuy'));

{OpenSell とCloseSell で売りの新規/決済をコントロールします。}

OpenSell:= Short and (EventCount('OpenSell') = EventCount('CloseSell'));
CloseSell:= Long and (EventCount('OpenSell') > EventCount('CloseSell'));

{トレーディングシステムテンプレート サンプルはここまで}
EventCount
DL:EventCount

注意:トレーディングシステムを開始させてポジションを持つとカウントしますが、トレーディングシステムを稼働中に 手動で決済されてもカウントは変わらないので、この変数を使ったトレーディングシステムでは、稼働中に手動で取引すると誤動作することになります。

Exponent

書式:Exp(DATA ARRAY)
eのデータ配列乗を計算します。
ExponentとはExponential Function o=ex です。
定数eは自然対数です。数学で最も重要な定数がeになります。(時折例外もあります)

実際のeの値は= 2.718281828459045235360287471352662497757 ...ですが、VTトレーダーでは繰り上げ、e = 2.7183を使用しています。

例:Exp(1)は2.7183を返します。
Exp(5)は148.4132を返します。

公式: _Exponent:=exp(X);
Exponent
DL:Exponent

FAMA

書式:Fama(DATA ARRAY, ALPHA MAXIMUM LIMIT, ALPHA MINIMUM LIMIT)
John Ehlers氏より定義済みのデータ配列のFollowing Adaptive Moving Averageを計算します。John Ehlers氏の論文によると、FAMAのアルファ値は最大値から最小値まで変動できると発表しています。

推奨されるALPHA MAXIMUM LIMIT(アルファ値最大限度)は0.5、またALPHA MINIMUM LIMIT(アルファ値最小限度)は0.05とされています。

Following Adaptive Moving AverageはMESA Adaptive Moving Average(MAMA)のアルファ値の1/2を使用し、計算されたMAMAです。これにより、Following Adaptive Moving AverageはMESA Adaptive Moving Average(MAMA)と時刻同期するのにステップが必要となりますが、上下移動は軽減されます。

例:Fama(Close,0.5,0.05)は推奨されるFollowing Adaptive Moving Averageのデフォルト値を使用し終値に適用されます。

公式: _Fama:=Fama(Close,0.5,0.05);
Fama
DL:Fama
 
Floor

書式:Floor(DATA ARRAY)
データ配列より小さく、最も大きい整数を計算します。

例:Floor(17.8)は17を返します。
Floor(-17.8)は17を返します。

公式:_Floor:=floor(17.8);
Floor
DL:Floor

Fraction

書式:Frac(DATA ARRAY)
データ配列の整数部分を省き、小数部分を返します。

例:frac(12.7)は0.7を返します。
frac(-12.7)は-0.7を返します。

公式:_Frac:=Frac(12.7);
Frac
 DL:Frac

Gap Down

書式:GapDown ()
値がGap Downしたバーでは+1を返します。その他のバーでは0(ゼロ)を返します。

Gap Downはひとつ前の安値が現在のバーの高値より高い場合に起こります。

公式:_GapDown:=GapDown();
Gap Down
DL:GapDown

Gap Up

書式:GapUp ()
値がGap Upしたバーでは+1を返します。その他のバーでは0(ゼロ)を返します。

Gap Upはひとつ前の高値が現在のバーの安値より低い場合に起こります。

公式:_GapUp:=GapUp();
Gap Up
DL:GapUp

Highest

書式:Highest (DATA ARRAY)
最初の値がチャートに読み込まれてから最も高いデータ配列を計算します。

例:Highest(Close)はチャートに読み込まれた終値で最も高い値を返します。

公式: _Highest:=Highest(Close);
Highest
DL:Highest
注意:バーの本数が多いと読み込みに時間がかかります。

Highest Bars Ago

書式:HighestBars (DATA ARRAY)
最も高い値のデータ配列後に、経過した期間を計算します。※チャートに読み込まれたすべてのデータを含みます。

例:HighestBars(Close)は最も高い終値より経過した期間を返します。

公式:_HighestBars:=HighestBars(Close); 
HighestBars
DL:HighestBars

Highest High Value

書式:hhv (DATA ARRAY, PERIODS)
現在のバーより以前の最も高いデータ配列を計算します。(現在のバーを含みます。)

例:hhv(Close,5)は現在のバーを含むそれ以前の5期間での最も高い終値を返します。

公式: _HighestHighValue:=HHV(Close,5);
HighestHighValue
DL:HighestHighValue

価格のチャンネルブレイクアウトを判断するために多く使用されます。hhv()は現在のバーの値も計算に含むため、チャンネルを作成する現在より前のn期間を使用し、チャンネルブレイクアウトを判断する場合は関数ref()を使用します。ref()では現在のデータ配列値とn期間前のデータ配列を比較することが可能になります。今回のケースでは1バー前まで振り返ります。

例:
終値が価格チャンネルを上抜いた時に+1を返す、10期間の高値チャンネルと簡単なインディケーターを作成します。

{現在のバーより前の10バーを使用し、価格チャンネルを作成します。}
HighPriceChannelLevel:= ref(hhv(High,10),-1);
DL:HighestHighValue2


{現在のバーの終値がHighPriceChannelLevelを上抜く時の条件を定義します。}
ChannelBreakOutUp:= Cross(Close,HighPriceChannelLevel);
DL:HighestHighValue3

{結果は下記の画面コピーを参照ください。10期間の高値チャンネルは価格フレームの青い太線、そしてその条件の結果のChannelBreakOutUp変数は価格フレーム下のAdditional Frameで確認できます。価格フレームではブレイクアウトが起こった所に青い矢印を表示しています。

Highest High Value

Highest High Value Bars Ago

書式:hhvbars (DATA ARRAY, PERIODS)
データ配列がPERIODS期間のピークに達してから経過した期間(バー)数を計算します。

例:hhvbars(Close,55)は終値が55期間でピークに達してから経過した期間(バー)数を返します。

公式:_HighestHighValueBarsAgo:=hhvbars(Close,55);
HighestHighValueBarsAgo
DL:HighestHighValueBarsAgo

Highest Since

書式:HighestSince (Nth, EXPRESSION, DATA ARRAY)
現在よりN番目(回目)に式がTrueであった時の最も高いデータ配列を返します。
※チャートに読み込まれたすべてのデータを含みます。

例:HighestSince(2, Cross(Close,mov(Close,13,S)), Close)では現在より数えて2回目に13期間の単純移動平均線が終値を上抜いた時の最も高い終値を返します。

公式:_HighestSince:=HighestSince(2, Cross(Close,mov(Close,13,S)), Close);
HighestSince
DL:HighestSince

Highest Since Bars Ago

書式:HighestSinceBars(Nth,EXPRESSION, DATA ARRAY)
直近から後ろに数えてNthのEXPRESSIONがtrueとなり、そのtrueからDATA ARRAYの最も高い値から順番に数字を返します。

例:HighestSinceBars(2, Cross(Close,mov(Close,13,S)), Close)は、直近で13-SMAと終値が交差したときから2番目に交差したとき間のロウソク足を参照し、直近でtrueになったときの終値の値の高い順番から、次にtrueになるまでの数値(ロウソク足の本数)を返します。

公式: _HighestSinceBars:=HighestSinceBars(2, Cross(Close,mov(Close,13,S)), Close);
HighestSinceBars
DL:HighestSinceBars

Hour

書式:Hour()
この関数は、時間の数値を返します。

例:現在の時刻が10:27:27であれば、10を返します。

公式: _Hour:=hour();
Hour
DL:Hour
※各日は東部標準時間の00:00(12:00 A.M)に始まります。

IF()

書式:if (DATA ARRAY > >= < <= <> = DATA ARRAY, THEN DATA ARRAY, ELSE DATA ARRAY)
If()は1つ目のパラメータで定義された条件式がTrueの場合、2つ目パラメータ(THEN)を返す条件付き関数です。
もし1つ目の関数がFalseだった場合は、3つ目のパラメータ(ELSE)が返されます。

式:if(1 < 2, 3, 5)では必ず値3を返します。(ELSE)

例:
if(Close > mov(Close,9,S), 1, 0)がTrue(下記では青い太線で表示)の場合、その後Trueであり続ける限り、+1を返します。 Close > mov(Close,9,S)条件がFalseの場合0(ゼロ)が返されます。

if

公式:_If:=if(Close>mov(Close,9,S),1,0);
If
DL:If

もし、True(1) もしくはFalse(2)の結果のみが想定される場合、
Variable:= if(Close > mov(Close,9,S), 1, 0);
Variable:= Close > mov(Close,9,S);
とも書くことができます。
ただし、Variableは0もしくは1のみとなります。

Inside

書式:inside ()
Inside期間が発生した時に必ず+1を返します。その後、Rally, Reaction, またはOutside期間が起こらない限り、+1を返し続けます。
Inside()が+1でない場合は0(ゼロ)を返します。

Inside期間の高値が1つ前のRallyもしくはReactionの高値と等しいもしくは低い、また、現在の安値が1つ前のRallyもしくはReactionの安値より等しいもしくは高い場合に発生します。
レンジは最初のInside値により決められ、Rally, ReactionもしくはOutside値によりのみブレイクされます。

公式:_Inside:=Inside();
Inside
DL:Inside

Integer

書式:int (DATA ARRAY)
データ配列の小数部分を省き、整数を返します。

例:int(12.7)は12を返します。
int(-17.8)は-17を返します。

公式:_Integer:=Int(12.7);
Integer
 DL:Integer

IsDefined

書式:IsDefined (DATA ARRAY)
データ配列を計算するためのデータがすべて揃っている場合は1を返します、そうでなければ0(ゼロ)を返します。

IsDefined(MA)は下記の様にOut変数で定義されます。

MA:= mov(C,10,S);
_IsDefined:= IsDefined(MA);

チャートの読み込まれた最初の19本のバーでは0(ゼロ)を返し、10本目以降のバーからは1を返します。
※チャートを一番左にしてください。

公式:MA:= mov(C,10,S);
_IsDefined:=IsUndefined(MA);
IsDefined
DL:IsDefined

IsUndefined

書式:IsUndefined (DATA ARRAY)
データ配列を計算するためのデータがすべて揃っている場合は0(ゼロ)を返します、そうでなければ1を返します。

IsUndefined(MA)は下記の様にOut変数で定義されます。

MA:= mov(C,20,S);
_IsUndefined:= IsUndefined(MA);

チャートの読み込まれた最初の19本のバーでは1を返し、20本目以降のバーからは0(ゼロ)を返します。
※チャートを一番左にしてください。

公式:MA:= mov(C,10,S);
_IsUndefined:=IsUndefined(MA);
IsUndefined
DL:IsUndefined
 

Linear Regression Indicator

書式:linreg (DATA ARRAY, PERIODS)
定義済みのLinear Regression インディケーターを計算します。

関数:LinReg(DATA ARRAY, PERIODS)は下記の式でLinear Regressionインディケーターを計算します。

_LinReg:= (PERIODS * Sum(Cum(1)*DATA ARRAY,PERIODS) -
Sum(Cum(1),PERIODS) * Sum(DATA ARRAY,PERIODS)) /
(PERIODS * Sum(Power(Cum(1),2),PERIODS) - Power(Sum(Cum(1),PERIODS),2)) * Cum(1) +
(Mov(DATA ARRAY,PERIODS,S) - Mov(Cum(1),PERIODS,S) * (PERIODS*Sum(Cum(1)*DATA ARRAY,PERIODS) -
Sum(Cum(1),PERIODS) * Sum(DATA ARRAY,PERIODS)) / (PERIODS * Sum(Power(Cum(1),2),PERIODS) -
Power(Sum(Cum(1),PERIODS),2)));

例:Linreg(Close,50)は50期間のLinear Regressionインディケーターの終値を返します。

公式: _Linreg:=Linreg(Close,50);
Linreg
DL:Linreg

Linear Regression Slope

書式:linregslope (DATA ARRAY, PERIODS)
定義済みのLinear Regression Slopeインディケーターを計算します。

例:LinRegSlope(Close,50)は50期間のLinear Regression Slopeの終値を返します。

公式: _LinRegSlope:=LinRegSlope(Close,50);
LinRegSlope
DL:LinRegSlope

Logarithm

書式:log (DATA ARRAY)
データ配列の自然対数を計算します。

例:log(1)は0(ゼロ)を返します。
log(12)は2.4849を返します。

公式:_Logarithm:=Log(1);
Logarithm
DL:Logarithm

Lowest

書式: Lowest(DATA ARRAY)
チャートに読み込まれた最初の値から最安値のデータ配列を計算します。

例:Lowest(Close)は最初にチャートに読み込まれた値から最も低い終値を返します。

公式: _Lowest:=lowest(Close);
Lowest
DL:Lowest

Lowest Bars Ago

書式:LowestBars (DATA ARRAY)
最も低い値のデータ配列後に、経過した期間を計算します。※チャートに読み込まれたすべてのデータを含みます。

例:LowestBars(Close)は最も低い終値より経過した期間を返します。

公式: _LowestBars:=LowestBars(Close);
LowestBars
DL:LowestBars

Lowest Low Value

書式:Llv (DATA ARRAY, PERIODS)
現在のバーより以前の最も低いデータ配列を計算します。(現在のバーを含みます。)

例:llv(Close,5)は現在のバーを含むそれ以前の5の期間での最も低い終値を返します。
 
公式:_LowestLowValue:=Llv(Close,5);
LowestLowValue
DL:LowestLowValue

価格のチャンネルブレイクアウトを判断するために多く使用されます。llv()は現在のバーの値も計算に含むため、チャンネルを作成する現在より前のn期間を使用し、チャンネルブレイクアウトを判断する場合は関数ref()を使用します。
ref()では現在のデータ配列値とn期間前のデータ配列を比較することが可能になります。今回のケースでは1バー前まで振り返ります。


例:
終値が価格チャンネルを下抜いた時に+1を返す、10期間の安値チャンネルと簡単なインディケーターを作成します。

{現在を含まない、10個前までのバーを使用し、価格チャンネルを作成します。}
LowPriceChannelLevel:= ref(llv(Low,10),-1);

{現在のバーの終値がHighPriceChannelLevelを上抜く時の条件を定義します。}
ChannelBreakOutDown:= Cross(LowPriceChannelLevel,Close);

{結果は下記の画面コピーを参照ください。10期間の安値チャンネルは価格フレームの赤い太線、そしてその条件の結果のChannelBreakOutDown変数は価格フレーム下のAdditional Frameで確認できます。価格フレームではブレイクアウトが起こった所に赤い矢印を表示しています。

Lowest Low Value Bars Ago

書式:llvbars(DATA ARRAY, PERIODS)
DATA ARRAYがそのPERIODS期間中の底値に到達した以降の順序を計算する関数です。

例:llvbars(close,55)は、55本のロウソク足(バー)の底値に達してからの順序を計算します。

公式:_LowestLowValueBarsAgo:=llvbars(Close,55);
LowestLowValueBarsAgo
DL:LowestLowValueBarsAgo

Lowest Since

書式:LowestSince (Nth, EXPRESSION, DATA ARRAY)
現在よりN番目(回目)に式がTrueであった時の最も低いデータ配列を返します。
※チャートに読み込まれたすべてのデータを含みます。

例:LowestSince(2, Cross(Close,mov(Close,13,S)), Close)では現在より数えて2回目に13期間の単純移動平均線が終値を下抜いた時の最も低い終値を返します。

公式:_LowestSince:=LowestSince(2,Cross(Close,mov(Close,13,S)),Close);  

Lowest Since Bars Ago

書式:LowestSinceBars(Nth, EXPRESSION, DATA ARRAY)
直近から後ろのNthのEXPRESSIONがtrueとなり、そのtrueから、DATA ARRAYの低い値から順に数字を返します。

例:LowestSinceBars(2, Cross(Close,mov(Close,13,S)), Close)は、直近で13-SMAと終値が交差したときから2番目に交差した間のロウソク足を参照し、直近でtrueになったときの終値の低い順番から、次にtrueになるまでの数値(ロウソク足の本数)を返します。

公式:_LowestSinceBars:=LowestSinceBars(2,Cross(Close,mov(Close,13,S)),Close);  

MACD
書式1:MACD (DATA_ARRAY)

公式:_MACD:=MACD(C);
MACD
DL:MACD

書式2:MACD (DATA_ARRAY, FAST_EMA_PERIODS, SLOW_EMA_PERIODS, SIGNAL_EMA_PERIODS)

Moving Average Convergence/ Divergence(MACD)インディケーターのヒストグラム部分を返します。すべてのパラメータの設定は任意のため、設定されていないパラメータはデフォルト値にて計算されます。
関数MACD()のパラメータのデフォルト値は下記の通りです。

DATA_ARRAY = Close
FAST_EMA_PERIODS = 12
SLOW_EMA_PERIODS = 26
SIGNAL_EMA_PERIODS = 9

DL:MACD2 

MAMA

書式:Mama (DATA ARRAY, ALPHA MAXIMUM LIMIT, ALPHA MINIMUM LIMIT)
John Ehlers氏によって発案されたデータ配列の定義済みMESA Adaptive Moving Averageです。
John Ehlers氏によると、MAMAのアルファ値は最高値と最小値の間に位置できます。推奨されるアルファ値の最大限度は0.5、最小限度は0.05です。

例:mama(Close,0.5,0.05)はデフォルト値を使用したMESA Adaptive Moving Averageを終値に適用し計算します。

公式:_Mama:=Mama(Close,0.5,0.05); 
Mama
 DL:Mama

Maximum

書式:max (DATA_ARRAY_1, DATA_ARRAY_2)
2つのパラメータ(DATA_ARRAY_1 and DATA_ARRAY_2)の最大値を返します。

例:max(Close,mov(Close,13,E)は終値と13期間の指数移動平均を比べ、どちらか大きいほうを返します。
max(-17,13)は必ず13を返します。

公式:_Maximum:=Max(Close,mov(Close,13,E)); 
Max
DL:Maximum
 
Median Price

書式:mp ()
定義済みのMedian Priceインディケーターを計算します。
Median Priceは高値と安値を加算し、2で割って平均値を計算します。
関数mp()は下記の式でMedian Priceを計算します。
MedianPrice:= (High + Low) / 2;

公式:_MedianPrice:=MP;  
MP
DL:MedianPrice

Midpoint

書式:Mid (DATA ARRAY, PERIODS)
指定されたPERIODS(期間)のデータ配列のMidpoint(中間値)を返します。
Midpointとは指定された期間のデータ配列の最高値と最小値の中間地点です。

関数Mid(DATA ARRAY, PERIODS)は下記の式よりmidpointを計算します。
_Midpoint:= Llv(DATA ARRAY,PERIODS) + ((Hhv(DATA ARRAY,PERIODS) - Llv(DATA ARRAY,PERIODS)) / 2);

例:Mid(Close,7)はLlv(Close,7) + ((Hhv(Close,7) - Llv(Close,7)) / 2)と同じ意味を持ちます。

公式:_Midpoint:=Mid(Close,7);  
Mid
DL:Midpoint

Minimum

書式:Min (DATA_ARRAY_1, DATA_ARRAY_2)
2つのパラメータ(DATA_ARRAY_1 and DATA_ARRAY_2)の最小値を返します。

例:Min(Close,Mov(Close,13,E)は終値と13期間の指数移動平均を比べ、どちらか小さいほうを返します。
Min(-17,13)は必ず-17を返します。

公式: _Minimum:=Min(Close,mov(Close,13,E)); 
Min
DL:Minimum

Minute

書式:Minute ()
時間の「分」を2ケタで返します。

例:バーの日付/タイムスタンプが02/17/2006, 13:44:00 (東部標準時間2006年2月17日, 1:44 PM) だった場合、関数Minute()は44を返します。

公式: _Minute:=Minute(); 
Minute
DL:Minute

Modulus

書式:Mod (DATA ARRAY_1, DATA ARRAY_2)
DATA ARRAY_1 /DATA ARRAY_2の小数点以下を返します。
0(ゼロ)で割った場合はNULL(空値)を返します。

例:Mod(10,3)は1.0を返します。

公式: _Modulus:=Mod(10,3);
Modulus
DL:Modulus
 
Mod(-10.7,3)は-1.7を返します。(-10.7 - (Int(-10.7 / 3) * 3)とも書けます。)

関数Mod(DATA_ARRAY_1,DATA_ARRAY_2)は下記の式より計算されます。
_Mod := DATA_ARRAY_1  - (int(DATA_ARRAY_1 / DATA_ARRAY_2) * DATA_ARRAY_2);


Month

書式:month ()
日付の「月」を返します。

例:バーの日付/タイムスタンプが08/17/2015, 13:44:00 (東部標準時間2015年8月17日, 1:44 PM)だった場合、month()は08を返します。
 
公式:_Month:=Month(); 
Month
DL:Month
 
Moving Average

書式:mov (DATA ARRAY, PERIODS, METHOD)
METHODの計算方法を使用し、データ配列のPERIODS移動平均を計算します。

有効なMETHODSは以下の通りです。
S = Simple(単純)
W = Weighted(加重)
E = Exponential(指数)
SW = Sine Weighted(正弦加重)
TRI = Triangular(三角)
EP = End Point(時系列)
VOL = Volume-Adjusted(出来高加重)

例:mov(Close,25,E)は終値の25期間の指数移動平均の値を返します。

公式: _MovingAverage:=mov(Close,25,E);

Negative

書式:neg (DATA ARRAY)
正負を反対にします。
 
例:neg(10)は-10を返します。
neg(-17)は+17を返します。

公式:_Negative:=neg(10);
Negative
 DL:Negative

Outside

書式:outside ()
Outside期間が発生した時に+1を返します。
Rally, Reaction,またはInside期間が発生するまで+1を返し続けます。
また、Outside()が+1にならない時は0(ゼロ)を返します。

Outside期間は現時点の高値が前回のRally またはReactionの高値より大きく、また、現在の安値が前回のRally またはReactionの安値より低い時に発生します。レンジは初めのOutside価格によって決定され、Rally, ReactionまたはInside価格によってのみブレークされます。
公式:_Outside:=Outside();
Outside
DL:Outside

Parabolic SAR

書式1:sar (STEP, MAXIMUM)
定義済みのParabolic SARインディケーターを計算します。
ユーザーはParabolic SARで使用するデータ配列を任意で設定できます。ユーザーがPrice(価格)以外のデータ系列でParabolic SARを構成する時に役立ちます。

公式: _ParabolicSAR:=Sar(0.02,0.2);
ParabolicSAR
DL:ParabolicSAR

関数を拡張した場合は、下記の様に書かれます。

書式2:sar (DATA ARRAY, DATA ARRAY HIGH, DATA ARRAY LOW, STEP, MAXIMUM)
注意:拡張したsar()を使用する場合はユーザーは3つすべてのデータ配列を指定するか、もしくは何も指定しないかになります。

STEP:価格が新しい高値もしくは安値に達するとParabolic SARもSTEPサイズによって上昇もしくは下降します。例えば価格が3つのバーで連続して新しい高値を更新した場合、SAR Stepは各バーで0.02ずつ上昇します。(0.02から0.04、0.04から0.06等)

MAXIMUM:Maximum valueはSAR STEPが達する最大の値です。ほとんどの場合0.2のSAR Maximumが推奨されています。

例:SAR(0.02,0.20)はSTEPが0.02、MAXIMUMが0.2のParabolic SARインディケーターを計算します。
SAR(0.02,0.20)は、SAR(Close, High, Low, 0.02,0.20)を意味します。
DL:ParabolicSAR2

Peak Bars

書式:PeakBars (Nth, DATA ARRAY, % MINIMUM CHANGE)
N回目のピークから何本バーが経過しているかを返します。N=1の場合、直近のピークから何本バーが経過しているかを返します。N=1は直近から1個目のピークより何本バーが経過しているかを返します。

例:PeakBars(1, Rsi(14), 10)はRsi(14)の直近から1個目のピークより何本バーが経過しているかを返します。ただし前回のピークの値より10%の上昇が必要となります。

公式: _PeakBars:=PeakBars(1,Rsi(14),10);
PeakBars
 DL:PeakBars

Peak Value

書式:peak (Nth, DATA ARRAY, % MINIMUM CHANGE)
N個前のピークのデータ配列の値を返します。N=1の場合、直近のピークの値を返します。N=2の場合、直近より2個目のピークの値を返します。
パラメータ% MINIMUM CHANGEは前回のpeak()の値と比較し、新しいpeakが新しいpeak値を返すのにどのくらい大きくないといけないかを判断します。

例:Peak(1, Rsi(14), 10)はRsi(14)の直近のpeak()値を返します。ただし前回のpeak値より10%の上昇が必要となります。

公式:_PeakValue:=Peak(1,Rsi(14),10);
Peak
 DL: PeakValue

Position Count

書式:PositionCount()
トレーディングシステムを追加したアカウントで保有した、「買いポジション及び売りポジション」の数を返します。値がアップデートされるのは、価格が更新されたときとなります。そのため、PositionCount()は"always in the market"(i.e. ドテン売買)で稼働しているトレーディングシステムでは、ご利用いただけません。
 

Power

書式:power (DATA ARRAY, POWER)
データ配列のPOWER乗が計算されます。
データ配列の値が負の非整数乗の場合はNULLが返されます。

例:
power(10,3)は1000を返します。
power(-10,3)は-1000を返します。
power(-10,3.5)はNULLを返します。

公式:_Power:=power(10,3);
Power

DL:Power

Precision

書式:prec (DATA ARRAY, PRECISION)
データ配列の小数点以下をPRECISION桁に切り捨てます。

例:
prec(10.56789, 1)は10.6を返します。
prec(10.56789, 2)は10.57
prec(10.56789, 3)は10.568

2進法での切り捨てにより小さな誤差が生じる場合があります。

公式: _Precision:=prec(10.56789,1);
Precision
DL:Precision

Prev

書式:Prev
書式:Prev()
書式:prev (DATA ARRAY)
Prevは式より前回のバーの計算に振り返ることができます。Prevは定数PrevもしくはPrev()としてもしくは関数Prev(DATA ARRAY)として使用できます。使用する際はPREV, PREV(0),及びPREV(DATA ARRAY)の特性を知っておく必要があります。

Prev及びPrev()は現在の計算している変数の前回のバーでの計算を返します。また、前回のデータが定義されていないもしくはない場合はNULLを返します。この関数の出力はref(DATA ARRAY,-1)と同じ結果を出します。

Prev(DATA ARRAY)は現在の計算している変数の前回のバーでの計算を返します。また、前回のデータが定義されていないもしくはない場合はデータ配列の値を返します。

注意:複雑な計算内のPrev, Prev(), およびPrev(DATA ARRAY)の使用はインディケーターの計算を大きく遅らせることがあります。そのため、使用を避けることを推奨します。

例:On Balance Volumeインディケーターの計算で定数PREVを使用した式
_OBV:= (If(C>Ref(C,-1), 1, If(C<Ref(C,-1), -1, 0)) * VOLUME) + PREV;

On Balance VolumeインディケーターはPREVを使用せずにcum(DATA ARRAY)の関数を使用しても下記のように計算できます。
FactorOBV:= If(C>Ref(C,-1), 1, If(C<Ref(C,-1), -1, 0)) * VOLUME;
_OBV:= cum(FactorOBV);

下記の式では(High + Low + Close)を3で割り、そして1つ前のバーで計算された((High + Low + Close) / 3)の値と加算します。
OUT:= ((High + Low + Close) / 3) + PREV(0);

次の例ではPrev, Prev()とPrev(NULL)の類推点を説明します。ただしこの例では主にNULLの特徴を取り上げています。
Prev 及びPrev()がの値がない場合は、NULL(空値)を返します、そのためNULLが返された場合はその後の演算は意味を持ちません。
掛け算や加算等の算術演算でもどこかの時点でNULLが返された場合は、結果はすべてNULLになります。

下記の例をご確認ください。
OUT:= ((High + Low + Close) / 3) + PREV;
OUT:= ((High + Low + Close) / 3) + PREV();

上記の式を最初のバーで使用した場合、
OUT {チャートに読み込まれた最初のバーで}:= ((High + Low + Close) / 3) + NULL {=NULL};
また次も
OUT:= NULL + NULL {=NULL};
となり、インディケーターがあっても、すべての値がNULLになります。そのため、値はチャート上には表示されません。

Rally

書式:rally ()
Rally期間が発生した時に+1を返します。Reaction, Inside, またはOutside期間が発生するまで+1を返し続けます。Rally()が+1にならない時は0(ゼロ)を返します。

Rally期間は現在の高値が前回のRallyまたはReactionの高値より大きい場合、また現在の安値が前回のRallyまたはReactionの安値と同等もしくはそれ以上の場合に発生します。

公式:_Rally:=Rally();
Rally
DL:Rally

Random

書式:Random (DATA ARRAY)
X>=0及びX<1の間のレンジでランダムな値を返します。

公式:_Random:=Random();
Random
DL:Random

Rate of Change

書式:roc (DATA ARRAY, PERIODS, DIFF_METHODS)
DIFF_METHODで表されたデータ配列のPERIODSのRate of Change(ROC)を計算します。
有効なDIFF_METHODSはPERCENTとPOINTSになります。

例:roc(Close, 12, PERCENT)は終値の12期間Percent Rate of Changeを返します。

公式:_RateofChange:=roc(Close, 12, PERCENT);
RateofChange
DL:RateofChange

roc(DATA ARRAY, PERIODS, PERCENT)はRate of Change(ROC)インディケーターを下記の式により計算します。
_ROC:= ((DATA ARRAY - ref(DATA ARRAY, - PERIODS)) / ref(DATA ARRAY, - PERIODS)) * 100;

関数roc(DATA ARRAY, PERIODS, POINTS) はRate of Change(ROC)インディケーターを下記の式により計算します。
_ROC:= DATA ARRAY - ref(DATA ARRAY, - PERIODS);

Reaction

書式:reaction ()
Reaction期間が発生した時に+1を返します。Rally, Inside, またはOutside期間が発生するまで+1を返し続けます。reaction()が+1にならない時は0(ゼロ)を返します。

Reaction期間は現在の高値が前回のRallyまたはReactionの高値と同等もしくはそれ以下の場合、また現在の安値が前回のRallyまたはReactionの安値と同等もしくはそれ以下の場合に発生します。
Reaction
DL:Reaction

Reference

書式1:ref (DATA ARRAY, PERIODS, DEFAULT VALUE)
データ配列の1つ前もしくは1つ後を参照します。ユーザーがチャートに読み込まれた最初のバー(最左)の計算で0(ゼロ)以外を使用する場合、DEFAULT VALUEのパラメータの使用が必要となります。0(ゼロ)を使用する場合は下記の様にDEFAULT VALUEは必要ありません。

公式:_Reference:=Ref(C,-1);
Reference
Reference

書式2:ref (DATA ARRAY, PERIODS)
PERIODSが負数の場合はN期間前を参照します。そのため、式ref(Close, -12)は12期間前の終値を返します。また、12期間Price Rate of Change(Pointsで)はClose-ref(Close,-12)とも書けます。その他にも関数ref()では例えばRelative Strength Index(RSI)インディケーターの計算されたデータ配列の前回の値を返すこともできます。式ref(RSI(14),-12)は14期間RSIの値の12期間前を返します。

計算する必要のないデータ配列(例えばraw price data: Close, Open, High, Low, haClose, haOpen, haHigh, and haLow)を使用しref()で次の値を出すことは可能ですが、計算する必要のあるデータ配列(RSIインディケーター等)ではref()を使用できません。そのため、式ref(RSI(14),+12)は使用できず、必ずNULLを返します。

しかし、価格を使用したデータ配列の場合、ref(RSI(14),+12)と同じ機能を働かせ結果を出せるように再コード化することができます。まず初めにraw price dataを使用し、ref()を計算し、N期間後を参照させます。

例:{通常の RSI Code}
rsi_r:= (Close - ref(Close,-1));
rsi_rs:= Wilders(if(rsi_r>0,rsi_r,0),tpr) / Wilders(if(rsi_r<0,Abs(rsi_r),0),tpr);
RSIndex:= 100-(100/(1+rsi_rs));

{チャートウィンドウ内でRSIを左にN期間移動することを可能にした再構成されたコード}
prc:= ref(Close,+12);
rsi_r:= (prc - ref(prc,-1));
rsi_rs:= Wilders(if(rsi_r>0,rsi_r,0),tpr) / Wilders(if(rsi_r<0,Abs(rsi_r),0),tpr);
RSIndex:= 100-(100/(1+rsi_rs));

新しいコードはref(RSIndex,+12)と同じ意味を持ちます。(VT1.7.6以降では機能します。)

Relative Strength Index

書式:rsi (DATA ARRAY, PERIODS)
定義済みのRelative Strength Index(RSI)インディケーターを計算します。データ配列を任意です。記載がない場合はrsi()はデフォルトで終値を使用します。注意:任意のパラメータは現在設定できません。

例:RSI(14)は14期間の終値を使用しRSIインディケーターを計算します。

公式:_RelativeStrengthIndex:=RSI(14);
RelativeStrengthIndex
DL:RelativeStrengthIndex

関数RSI (DATA ARRAY, PERIODS)は下記の式よりRSIインディケーターを計算します。
rsi_r:= (DATA ARRAY - ref(DATA ARRAY,-1));
rsi_rs:= Wilders(if(rsi_r>0,rsi_r,0),PERIODS) / Wilders(if(rsi_r<0,Abs(rsi_r),0),PERIODS);
_RSI:= 100-(100/(1+rsi_rs));

Round

書式:round (DATA ARRAY)
データ配列を整数へ四捨五入します。

例:round(+12.5)は+13を返します。
round(-12.5)は-13を返します。
round(-12.4)は-12を返します。

公式: _Round:=Round(+12.5);
Round
 DL:Round

Sell Position Count

書式:SellPositionCount()
トレーディングシステムを追加したアカウントで保有した、「売りポジション」の数を返します。値がアップデートされるのは、価格が更新されたときとなります。
SellPositionCount
DL:trsys_BBandsBreakout_1_1

トレーディングシステムをセットしたら。手動で買いポジションを持って下さい。そうすると、フレームにポジションを持っていることを示す「1」が出てきます。

Signal Flag

書式:SignalFlag (DATA_ARRAY_1, DATA_ARRAY_2)
データ配列1が初めて”True”になり、次にデータ配列2が初めて”True”になるまで1を返し、データ配列2がTrueになった時点で、0(ゼロ)へリセットされ、またデータ配列1が”True”になった時点で1を返し、その動作を繰り返します。
関数SignalFlag(DATA_ARRAY_1, DATA_ARRAY_2)はIf(DATA_ARRAY_1, 1, If(DATA_ARRAY_2, 0, PREV(0)))と同じ意味を持ちます。

しかし、SignalFlag()は内部機能のためインディケーターやトレーディングシステムで使用する際はIf(DATA_ARRAY_1, 1, If(DATA_ARRAY_2, 0, PREV(0)))より早くプロセスされます。

例:ユーザーが20期間単純移動平均の終値を使用し、買い取引のシグナルを出すと仮定します。また、ユーザーは模擬のストップロスレベルをチャートに表示させ、模擬の発注と終値がストップロスレベルを下抜いた時に決済のタイミングをアラートするシグナルを表示させるとします。

ロジックを下記に記載します。
StoplossValue:= 30; {ユーザが設定した入力変数}
{模擬の新規買い注文を作成します; ActiveBuyTradeは模擬の新規買い注文が発注されないようにチェックされています;
0 = 買い注文を保有していない, 1 = 買い注文を保有している}
{価格枠で青い矢印で表示}
Buy:= ActiveBuyTrade=0 and Cross(Close,mov(C,20,S));

{模擬の新規買い指値注文を作成します。これはろうそく足の終値を使用します。}
{価格枠に赤い点線で表示}
BuyPrice:= valuewhen(1,Buy,Close);

{模擬のストップロスレベルを作成します}
{価格枠に細い青い点線で表示}
BuyStop:= BuyPrice - (StoplossValue * SymbolPoint());

{模擬の買い決済注文を作成; ActiveBuyTradeは模擬注文が可能なことを確かにするためにチェックします;
0 = 買い注文を保有していない, 1 = 買い注文を保有している}
{価格枠に青いExitのマークで表示}
BuyExit:= ActiveBuyTrade=1 and Cross(BuyStop,Close);

{現在の模擬注文の条件を定義;
模擬のストップロスレベルが模擬の注文ポイントと正しく関連されているかをチェックします}
{ActiveBuyTrade は 0 もしくは 1; 買い条件がTrueの場合は1; 1 (true)
はBuyExit 条件が trueになるまで維持されます。
BuyExitがTrueになった時に0(ゼロ)にリセットされまた同じプロセスが開始されます。}
{ Additional Frame 1に太い黒線で表示}
ActiveBuyTrade:= SignalFlag(Buy,BuyExit);
ロジックの結果は下記の通りです。

Signal Flag

公式:_SignalFlag:=SignalFlag(LongSetup=1,ShortSetup=1);
SignalFlag
DL:trsys_BBandsBreakout_1_1_1
※わかりやすくするため「trsys_BBandsBreakout」を使ってプログラミングしました。

Signal Hold

書式:SignalHold (DATA ARRAY, PERIODS)
指定されたPERIODSのデータ配列の”True”の値を返します。”True”の値は指定されたPERIODSの間は“False”になった場合でも、必ず”True”を返します。注意:直近のデータ配列の”True”の値を使用し、関数をスタート(もしくはリセット)させます。

例:下記の画面コピーでは価格枠の下に2つの追加枠があります。価格枠には2つの移動平均線が表示されています。各追加枠は特定の条件を計算した出力変数が各自表示されています。各変数の値は条件ステートメントに基づいているため、出力変数は+1(true)もしくは0(false)のみとなります。

式は下記となります。

{10期間単純移動平均が30期間単純移動平均を上抜いたバーで+1を返します
,その他の場合では0(ゼロ)を返します}
{Additional Frame 1 –青線}
Buy:= Cross(Close,10,S),mov(Close,30,S));

{BuyがTrueになった最初バーで+1を返し、PERIODS(10バー)が経過するまで+1を返し続け、その後Buyが再度Trueになるまでは0(ゼロ)を返します。}
{Additional Frame 2 - 濃い青線}
BuySignalHold:= SignalHold(Buy,10);
ロジックの結果は下記の通りです。

Signal Hold

公式:_SignalHold:=SignalHold(LongSetup=1,ShortSetup=1);
SignalHold
DL:trsys_BBandsBreakout_1_1_1_1
※わかりやすくするため「trsys_BBandsBreakout」を使ってプログラミングしました。

Signal Remove

書式:SignalRemove (DATA_ARRAY_1, DATA_ARRAY_2)
この関数は重複する”True”値を取り除きます。
データ配列1が初めて”True”になり、次にデータ配列2が初めて”True”になるまで1を返し、データ配列2がTrueになった時点で、0(ゼロ)へリセットされます。(データ配列1が”True”を出し続けても0(ゼロ)を返します)

例:下記の画面コピーでは価格枠の下に4つの追加枠があります。価格枠には2つの移動平均線が表示されており2つの移動平均線が交差する箇所に黒い垂直線が表示されています。各追加枠は特定の条件を計算した出力変数が各自表示されています。各変数の値は条件ステートメントに基づいているため、出力変数は+1(true)もしくは0(false)のみとなります。

式は下記となります。

{10期間単純移動平均が30期間単純移動平均より高いバーで+1を返します
,その他の場合では0(ゼロ)を返します}
{Additional Frame 1 – 青線}
Buy:= mov(Close,10,S) > mov(Close,30,S);

{BuyがTrueになった最初のバーに+1を返し、SellがTrueなる後まで(最低1バー)0(ゼロ)を返します。またBuyがTrueになったバーより+1を返します。}
{Additional Frame 2 - 濃い青線}
RemoveBuySignals:= SignalRemove(Buy,Sell);

{SellがTrueになった最初のバーに+1を返し、BuyがTrueになる後まで(最低1バー)まで0(ゼロ)を返します。またSellがTrueになったバーより+1を返します}
{Additional Frame 4 - 濃い赤線}
RemoveSellSignals:= SignalRemove(Sell,Buy);

ロジックの結果は下記の通りです。

Signal Remove
公式:_SignalRemove:=SignalRemove(LongSetup=1,ShortSetup=1);
SignalRemove

DL:trsys_BBandsBreakout_1_1_1_1_1
※わかりやすくするため「trsys_BBandsBreakout」を使ってプログラミングしました。
 
Signal Remove Span

書式:SignalRemoveSpan (DATA ARRAY, PERIODS)
この関数は最初の”True“が返されてからPERIODSの間に重複する”True”値を取り除きます。最初に+1を返したバーに続く+1のバーPERIODS中の期間は無視されます(ゼロが返されます)。PERIODSの期間が経過した後は新しい”True”の値が返されるようになります。データ配列が初めて”True”になった場合に+1を返し、その後初めのシグナルよりPERIODSの間は0が返されます。

例:
下記の画面コピーでは価格枠の下に4つの追加枠があります。価格枠には2つの移動平均線が表示されています。各追加枠は特定の条件を計算した出力変数が各自表示されています。各変数の値は条件ステートメントに基づいているため、出力変数は+1(true)もしくは0(false)のみとなります。
式は下記となります。

{10期間単純移動平均が30期間単純移動平均より高いバーで+1を返します
,その他の場合では0(ゼロ)を返します}
{Additional Frame 1 – 青線}
Buy:= mov(Close,10,S) > mov(Close,30,S);

{10期間単純移動平均が30期間単純移動平均より低いバーで+1を返します
,その他の場合では0(ゼロ)を返します}
(Additional Frame 3 – 赤線}
Sell:= mov(Close,10,S) < mov(Close,30,S);

{ BuyがTrueになった最初のバーに+1を返し、その後PERIODが経過するまで0(ゼロ)を返します。またBuyがTrueになったバーより+1を返します。}
{Additional Frame 2 - 濃い青線}
RemoveBuySignals:= SignalRemoveSpan(Buy,10);

{ SellがTrueになった最初のバーに+1を返し、その後PERIODが経過するまで0(ゼロ)を返します。またSellがTrueになったバーより+1を返します}
{Additional Frame 4 – 濃い赤線}
RemoveSellSignals:= SignalRemoveSpan(Sell,10);

ロジックの結果は下記の通りです。

Signal Remove Span

公式:_SignalRemoveSpan:=SignalRemoveSpan(LongSetup=1,10);
SignalRemoveSpan

DL:trsys_BBandsBreakout_1_1_1_1_1_1
わかりやすくするため「trsys_BBandsBreakout」を使ってプログラミングしました。

Sine

書式:sin (DATA ARRAY)
データ配列のsine(正弦)を返します。
データ配列の値が度数と仮定します。

例:正弦波は式sin(cum(7)).で表示できます。式の数字を大きくすることによって、正弦波の振動数を増やせます。

公式: _Sine:=sin(Cum(7));
Sine
DL:Sine

Square Root

書式:sqrt (DATA ARRAY)
データ配列のSquare Root(平方根)を返します。
データ配列が負数の場合はNULLを返します。

例:sqrt(16)は4を返します。
sqrt(-16)はNULLを返します。
 
公式:_SquareRoot:=Sqrt(16);
SquareRoot
DL:SquareRoot

Standard Deviation

書式:Stdev (DATA ARRAY, PERIODS, TYPE, DATA ARRAY 2)
指定されたPERIODSのデータ配列の定義済みのStandard Deviationインディケーターを計算します。
TYPEとデータ配列2の設定は任意です。

有効なTYPEはSIMPLE(S/単純)、WEIGHTED(W/加重), EXPONENTIAL(E/指数平滑), SINE WEIGHTED(SW/正弦加重), TRIANGLE(TRI/三角),END POINT(EP/時系列), とVOLUME-ADJUSTED(VOL/出来高加重)になります。

例:Stdev (Close,4,S,Close) = Stdev (C,4)
Stdev (Close,4,S) = Stdev (C,4) {DATA ARRAY = DATA ARRAY2}

公式:_StandardDeviation:=Stdev(Close,4,S,Close);
StandardDeviation
DL:StandardDeviation

書式:Stdev (DATA ARRAY, PERIODS, TYPE, DATA ARRAY 2)は下記の式よりStandard Deviationを計算します。

4期間のStandard Deviationインディケーターはまず、4期間のSimple Moving Average(単純移動平均)を変数4PeriodMAで指定し、Moving AverageとClose Priceの差を4期間分だし、その結果の2乗根をすべて加算します。最後にトータルの平方根を計算します。

4PeriodMA:= Mov(Close,4,S);
_StDev:= Sqrt((Power(4PeriodMA-Close,2)+Power((4PeriodMA)-Ref(Close,-1),2) +
Power((4PeriodMA)-Ref(Close,-2),2)+Power((4PeriodMA)-Ref(Close,-3),2))/4);

Standard Error

書式:ste (DATA ARRAY, PERIODS)
指定されたPERIODSのデータ配列の定義済みStandard Error(標準誤差)を計算します。

例:Ste(Close,21)は21期間の終値のStandard Errorを計算します。

公式: _StandardError:=Ste(Close,21);
StandardError
DL:StandardError 

Stochastic Momentum Index

書式:Stochmomentum(PERIODS, SMOOTHING, DOUBLE SMOOTHING)は下記の式よりStochastic Momentum Indexを計算します。

_StochMomentum:= 100 * (Mov(Mov(Close - (0.5 * (hhv(High,PERIODS) + llv(Low,PERIODS))), SMOOTHING,E),DOUBLE SMOOTHING,E) / (0.5 * Mov(Mov(hhv(High,PERIODS) - llv(Low,PERIODS), SMOOTHING,E),DOUBLE SMOOTHING,E)));

下記は Stochmomentum(13,25,2) Stochastic Momentum Index を計算します:

_StochMomentum:= 100 * (Mov(Mov(Close - (0.5 * (hhv(High,13) + llv(Low,13))),25,E),2,E) / (0.5 * Mov(Mov(hhv(High,13) - llv(Low,13),25,E),2,E)));

公式: _StochasticMomentumIndex:=Stochmomentum(13,25,2);
StochasticMomentumIndex
DL:StochasticMomentumIndex

Stochastic Oscillator

書式:stoch (%K PERIODS, %K SLOWING)
定義済みStochastic Oscillator(ストキャスティック オシレータ)を計算します。

関数stoch(%K PERIODS,%K SLOWING)は下記の式より%K Stochastic Oscillatorを計算します。

_K_Stoch:= (sum(Close - llv(Low,%K PERIODS),%K SLOWING) / sum(hhv(High,%K PERIODS) - llv(Low,%K PERIODS),%K SLOWING)) * 100;

次の式では先行する式stoch(%K PERIODS,%K SLOWING)の%KのN期間%Dを計算します。

_D_Stoch:= Mov(sum(Close - llv(Low,%K PERIODS),%K SLOWING) / sum(hhv(High,%K PERIODS) - llv(Low,%K PERIODS),%K SLOWING)) * 100),%D PERIODS,S);

または
_D_Stoch:= Mov(stoch(%K PERIODS,%K SLOWING),%D PERIODS,S);

例:stoch(5,3)は5期間%K slowed3期間の値を返します。

公式:_StochasticOscillator:=Stoch(5,3);
StochasticOscillator
DL:StochasticOscillator

下記の式では3期間slowingの5期間% Stochastic Oscillatorを計算します。

_K_Stoch:= (Sum(Close - llv(Low,5),3) / sum(hhv(High,5) - llv(Low,5),3)) * 100;

次の式では先行する式の%Kの3期間%Dを計算します。
_D_Stoch:= Mov((Sum(Close - llv(Low,5),3) / sum(hhv(High,5) - llv(Low,5),3)) * 100),3,S);

または

_D_Stoch:= Mov(stoch(5,3),3,S);

Summation

書式:Sum (DATA ARRAY, PERIODS)
指定されたPERIODS(現在のも含む)のデータ配列のCumulative Sum(累計合計)を計算します。

例:Sum(Close,12)は次に来る12の終値の合計を出します。

公式:_Summation:=Sum(Close,12);
Summation
DL:Summation

※12期間単純移動平均は下記の様に書けます。
MA:= Sum(Close,12) / 12;

Symbol Digits

書式:SymbolDigits ()
現在表示されているシンボルに該当する数字の小数点より右へX桁いった数字を整数で返します。
通貨ペアの場合、例えばEURUSDの場合は小数点以下4桁あります、その場合はSymbolDigits()は4を返します。小数点以下が2桁の場合(USDJPY等)、SymbolDigits()は2を返します。

公式:_SymbolDigits:=SymbolDigits();
SymbolDigits
DL:SymbolDigits

Symbol Point

書式:SymbolPoint ()
現在チャート画面に読み込まれているシンボルのpoint(pip)値を返します。”pip”は通貨ペアの最小単位になります。

通貨ペアで小数点以下3桁ある場合は1pip=0.01となります。例:USDJPYでは100.010から100.020の変動は1pip(0.01)の動きとなります。

通貨ペアで小数点以下4桁ある場合は1pip=0.0001となります。例:EURUSDでは1.2231から1.2232の変動は1pip(0.0001)の動きとなります。

公式:_SymbolPoint:=SymbolPoint();
Trough Value

書式:trough (Nth, DATA ARRAY, % MINIMUM CHANGE)
データ配列のN底値前を返します。N=1の場合、直近の底値を返します。N=2の場合、直近を含む2個前の底値を返します。% MINIMUM CHANGEのパラメータは値を返す前に新しい底値が前回の底値に比べどのくらい大きくある必要があるかを決めます。

例:Trough(1, Rsi(14), 10)はRsi(14)の直近の底値を返します(前回の底値より10%の変化があった場合のみ)

公式:_TroughValue:=Trough(1,Rsi(14),10);
TroughValue
DL:TroughValue

Trough Bars

書式:TroughBars (Nth, DATA ARRAY, % MINIMUM CHANGE)
N個目の底値より経過したバーの本数を返します。N=1の場合、直近の底値より経過したバーの本数を返します。N=2の場合は直近を含む2個前の底値より経過したバーの本数を返します。

公式: _TroughBars:=TroughBars(1,Rsi(14),10);
TroughBars
 DL:TroughBars

Typical Price

書式:TP ()
定義済みのTypical Priceインディケーターを計算します。

関数tp()は下記の式よりTypical Priceを計算します。

TypicalPrice:= (High + Low + Close) / 3;

公式: _TypicalPrice:=TP();
TypicalPrice
DL:TypicalPrice 

Ultimate Oscillator

書式:Ult (CYCLE1, CYCLE2, CYCLE3)
パラメータに設定された3周期で定義済みUltimate Oscillatorインディケーターを計算します。

Ult(7,14,28)はデフォルトのUltimate Oscillatorインディケーターを計算します。
関数ult(CYCLE1,CYCLE2,CYCLE3)は下記の式よりUltimate Oscillatorインディケーターを計算します。

_Ult:= (((((Sum((Max((C-L),(C-Ref(L,-1)))),CYCLE1)) / (Sum((Max(Max((H-L),H-Ref(L,-1)),Max((Ref(H,-1)-L),(Ref(H,-1)-Ref(L,-1))))),CYCLE1)))*4)+(((Sum((Max((C-L),(C-Ref(L,-1)))), CYCLE2)) / (Sum((Max(Max((H-L),H-Ref(L,-1)),Max((Ref(H,-1)-L),(Ref(H,-1)-Ref(L,-1))))),CYCLE2)))*2)+((Sum((Max((C-L),(C-Ref(L,-1)))),CYCLE3)) / (Sum((Max(Max((H-L),H-Ref(L,-1)) ,Max((Ref(H,-1)-L),(Ref(H,-1)-Ref(L,-1))))),CYCLE3)))) / CYCLE1) * 100;

公式: _UltimateOscillator:=Ult(7,14,28);
UltimateOscillator
 DL:UltimateOscillator

Value When

書式:ValueWhen (Nth, EXPRESSION, DATA ARRAY)
直近よりN個目の式がTrueの場合、データ配列の値を返します。
チャートに読み込まれているすべてのデータを含みます。

例:ValueWhen(2, cross(close,mov(close,13,S)), rsi(14))は終値が直近より2回目に13期間移動平均を上抜いた時の14期間RSIの値を返します。

公式:_ValueWhen:= ValueWhen(2,cross(close,mov(close,13,S)),rsi(14));
ValueWhen
DL:ValueWhen 

Vertical Horizontal Filter

書式:vhf (DATA ARRAY, PERIODS)
指定されたPERIODSの間のデータ配列の定義済みVertical Horizontal Filterを計算します。

例:vhf(Close,28)は28期間のVertical Horizontal Filterの終値を返します。

公式: _VerticalHorizontalFilter:=vhf(Close,28);
VerticalHorizontalFilter
 DL:VerticalHorizontalFilter

Weighted Close

書式:WC ()
WC()は定義済みWeighted Closeインディケーターを計算します。
Weighted Closeインディケーターは終値を2で掛け、高値と安値を加算し、4で割り計算されます。
結果は終値にextra weightつけた平均値になります。
関数wc()は下記の式よりWeighted Closeインディケーターを計算します。

_WC:= ((Close * 2) + High + Low) / 4;

公式: _WeightedClose:=WC();
WeightedClose
DL:WeightedClose 

Wilder's Smoothing

書式:Wilders (DATA ARRAY, PERIODS)  
Wilders()は定義済みのWilder’s Smoothingを計算します。

関数Wilders(DATA ARRAY, PERIODS) は下記の式よりWilder's Smoothingを計算します。

_Wilders:= Mov(DATA ARRAY, (PERIODS * 2) - 1, E);

Wilders(Close,8)はMov(Close,8*2-1,E) または Mov(Close,15,E)と等しい意味を持ちます。

公式:_Wilders:=Wilders(Close,8);
Wilders
 DL:Wilders

Williams' %R

書式:willr (PERIODS)
定義済みのWilliams' %Rインディケーターを計算します。

関数willr()は下記の式よりWilliams' %Rインディケーターを計算します。

_Willr:= ((hhv(High,PERIODS) - Close) / (hhv(High, PERIODS) - llv(Low,PERIODS))) * -100;

注意:式は-100を掛け反転されています。Williams' %Rは最大値0(ゼロ)で最小値-100のスケールで表示されます。0(ゼロ)から-20%の値は買われすぎレベル、-80から-100%が買いすぎレベルを意味します。

公式:_Williams:=willr(14);
Williams
DL:Williams

Year

書式:Year ()
日付「年」を4桁で返します。

例:日付・タイムスタンプが02/17/2015, 13:44:00 (東部標準時間2015年2月17日,1:44 PM)の場合、Year()は2015を返します。

公式:_Year:=Year();
Year
DL:Year
 
Zli

書式:zli
GAIN LIMIT値(整数)を定義し、PERIODSで定義した期間のDATA ARRAYによって、zero-lag indicatorを計算します。"Zero-lag (Well Almost)"はJohn EhlersとRick Wayによって考案され、2010年11月版の「Technical Analysis of Stocks &Commodities magazine」によって発表されました。

公式:Zliの使い方
_Zli:=Zli(O,10,2);
Zli
 DL:Zli