まくまく投資ノート

更新:
作成:

ストキャスティクスの概要

  • オシレーター系のテクニカル指標。逆張りの指標。
  • %K%D の 2 つの線で構成されます。
    • %K … 終値の位置が一定の日数の価格レンジ(値動きした範囲)の中でどの位置にあるかを示す。
    • %D … %K を滑らかにしたもの。

売買のタイミング

  • 低い位置で %K%D を上抜けたら買い。
  • %K%D の 2 本のラインのクロスをサインにする(ファストキャスティクス
  • %D と %D の移動平均 (SD) を使ってサインの出方を緩やかにする方法(スローストキャスティクス

ストキャスティクスの考察

  • 全体的に取引回数が多くなりがち。
  • 勝率が20%など低くなりがち。
    • でもこれは、逆張りで相場の反転を狙う手法なので当然ともいえます。
  • 短期トレードになることが多いので、トレーリングストップとの併用はあまり有効ではない。

関連記事

更新:
作成:

EA(エキスパートアドバイザー)のプログラム内で、決まったシグネチャ(関数名やパラメーター構成)で関数を定義しておくと、特定のイベント発生時に自動的にその関数を呼び出してくれるようになります。

EA では次のようなイベントハンドラーを定義することができます。

OnInit 関数

int OnInit(void);

EA の OnInit() 関数は、Init イベントが発生したときに呼び出されます。 戻り値が void のバージョンもありますが、互換性のために残されているだけなので、int を返すバージョンを使ってください。

OnDeinit 関数

void OnDeinit(const int reason);

EA の OnDeinit() 関数は、Deinit イベントが発生したときに呼び出されます。

OnCalculate 関数

int  OnCalculate(
   const int rates_total,      // price[] array size
   const int prev_calculated,  // number of handled bars at the previous call
   const int begin,            // index number in the price[] array meaningful data starts from
   const double& price[]       // array of values for calculation
);

int OnCalculate(
    const int rates_total,      // size of input time series
    const int prev_calculated,  // bars handled in previous call
    const datetime& time[],     // Time
    const double& open[],       // Open
    const double& high[],       // High
    const double& low[],        // Low
    const double& close[],      // Close
    const long& tick_volume[],  // Tick Volume
    const long& volume[],       // Real Volume
    const int& spread[]         // Spread
);

EA の OnCalculate() 関数は、Calculate イベントが発生したとき(最新の価格が変化したとき)に呼び出されます。 EA を最初にチャートにアタッチしたときにも呼び出されます。

OnTimer 関数

void OnTimer(void);

EA の OnTimer() 関数は、Timer イベントが発生したときに呼び出されます。 EventSetTimer() 関数でセットした秒数ごとに Timer イベントが発生します。タイマーのセットは、通常 OnInit() 関数で行います。

OnChartEvent 関数

void OnChartEvent()
    const int id,          // event ID
    const long& lparam,    // long type event parameter
    const double& dparam,  // double type event parameter
    const string& sparam   // string type event parameter
);

EA の OnChartEvent() 関数は、ChartEvent イベントが発生したときに呼び出されます。 EventChartCustom() 関数を使うと、独自の ChartEvent イベントを発生させることができます。

OnBookEvent 関数

void OnBookEvent(const string& symbol);

EA の OnBookEvent() 関数は、BookEvent イベントが発生したときに呼び出されます。

OnTick 関数

void OnTick(void);

EA の OnTick() 関数は、NewTick イベントが発生したときに呼び出されます。 OnTick() は EA 専用のイベントハンドラです(インジケーターやスクリプトでは使用できません)。

NewTick イベントを OnTick() 関数で処理している最中に次の NewTick イベントが発生した場合、そのイベントはイベントキューに積まれないことに注意してください。 OnTick() 内の処理は短時間で終える必要があるため、Sleep() 関数や MessageBox() 関数の呼び出しは禁止されています。

EA による自動売買が許可されていない場合でも、OnTick() 関数は呼び出されます。

OnTrade 関数

void OnTrade(void);

EA の OnTrade() 関数は、Trade イベントが発生したときに呼び出されます。 OnTrade() は EA 専用のイベントハンドラです(インジケーターやスクリプトでは使用できません)。

OnTester 関数

double OnTester(void);

EA の OnTester() 関数は、Tester イベントが発生したときに呼び出されます。 OnTester() は EA 専用のイベントハンドラです(インジケーターやスクリプトでは使用できません)。

関連記事

更新:
作成:

MetaTrader のスクリプトでハンドル可能なイベントは、Start イベントのみです。

OnStart 関数

int OnStart(void);

スクリプトの OnStart() 関数は、Start イベントが発生したときに呼び出されます。 戻り値が void のバージョンもありますが、互換性のために残されているだけなので、int を返すバージョンを使ってください。

スクリプトは、チャートにアタッチした瞬間にロードされ、実行されます。 そして、その処理が完了され次第、自動的にアンロードされます。

☝️ インジケーターでは OnInit() や OnDeinit() は使えない カスタムインジケーターや EA では、OnInit()OnDeinit() が呼び出されるようになっていますが、スクリプトではこれらの関数は呼び出されません。 これらのイベントハンドラーは、チャートの内容(シンボルや時間足)が変更されたときのために用意されています。 それが必要なのは、カスタムインジケーターや EA のみです。 スクリプトには OnStart() だけあれば十分なのです。

関連記事

メニュー

まくまく投資ノート
サイトマップまくへのメッセージ