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」を使ってプログラミングしました。

VTトレーダー関数一覧に戻る