OnStart

この関数はStartイベントの発生時にスクリプトとサービスで呼び出されます。この関数は、プログラムに実装されているアクションの1回限りの実行を目的としています。関数には2種類あります。

結果を返すバージョン

int  OnStart(void);

戻り値

操作ログタブで表示されるint型の値。

スクリプトの実行が完成すると「script script_name removed (result code N)」というエントリがターミナルの操作ログに作成されます。ここで、NはOnStart()関数によって返される値です。

サービスの実行が完了すると、エントリ「service service_name stopped (result code N)」がターミナル操作ログに作成されます。ここで、NはOnStart()関数によって返される値です。

実行結果を返すOnStart()の呼び出しは、スクリプトまたはサービスの実行を許可するだけでなく、プログラムの実行結果を分析するためのエラーコードまたはその他の有用なデータも返すため、使用をお勧めします。

結果を返さないバージョンは古いコードとの相互性の為のみに残されています。使用は推奨されません。

void  OnStart(void);

注意事項

OnStart()はスクリプトおよびサービス内のイベントを処理するための唯一の関数です。これらのプログラムに他のイベントは送信されません。その結果、StartイベントはEAおよびカスタム指標には渡されません。

スクリプトの例:

//--- 色を使うためのマクロ
#define XRGB(r,g,b)    (0xFF000000|(uchar(r)<<16)|(uchar(g)<<8)|uchar(b))
#define GETRGB(clr)    ((clr)&0xFFFFFF)
//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数                                          |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- 下降ローソク足の色を設定する
  Comment("Set a downward candle color");
  ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,GetRandomColor());
  ChartRedraw(); // 新しいティックを待たずにチャートをすぐに更新する
  Sleep(1000);   // すべての変更を表示するために1秒間一時停止する
//--- 上昇ローソク足の色を設定する
  Comment("Set an upward candle color");
  ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,GetRandomColor());
  ChartRedraw();
  Sleep(1000);  
//--- 背景色を設定する
  Comment("Set the background color");
  ChartSetInteger(0,CHART_COLOR_BACKGROUND,GetRandomColor());
  ChartRedraw();
  Sleep(1000);  
//--- 買値線の色を設定する 
  Comment("Set color of Ask line");
  ChartSetInteger(0,CHART_COLOR_ASK,GetRandomColor());
  ChartRedraw();
  Sleep(1000);  
//--- 売値線の色を設定する 
  Comment("Set color of Bid line");
  ChartSetInteger(0,CHART_COLOR_BID,GetRandomColor());
  ChartRedraw();
  Sleep(1000);    
//--- 下向きバーと下向きローソク足フレームの色を設定する
  Comment("Set color of a downward bar and a downward candle frame");
  ChartSetInteger(0,CHART_COLOR_CHART_DOWN,GetRandomColor());
  ChartRedraw();
  Sleep(1000);  
//--- チャートの線と同時ローソク足の色を設定する
  Comment("Set color of a chart line and Doji candlesticks");
  ChartSetInteger(0,CHART_COLOR_CHART_LINE,GetRandomColor());
  ChartRedraw();
  Sleep(1000);  
//--- 上向きバーと上向きローソク足フレームの色を設定する  
  Comment("Set color of an upward bar and an upward candle frame");
  ChartSetInteger(0,CHART_COLOR_CHART_UP,GetRandomColor());
  ChartRedraw();
  Sleep(1000);  
//--- 軸、スケール、OHLCラインの色を設定する
  Comment("Set color of axes, scale and OHLC line");
  ChartSetInteger(0,CHART_COLOR_FOREGROUND,GetRandomColor());
  ChartRedraw();
  Sleep(1000);  
//--- グリッドの色を設定する
  Comment("Set a grid color");
  ChartSetInteger(0,CHART_COLOR_GRID,GetRandomColor());
  ChartRedraw();
  Sleep(1000);  
//--- 直近値の色を設定する
  Comment("Set Last price color");
  ChartSetInteger(0,CHART_COLOR_LAST,GetRandomColor());
  ChartRedraw();
  Sleep(1000);  
//--- ストップロスおよびテイクプロフィット注文値の色を設定する
  Comment("Set color of Stop Loss and Take Profit order levels");
  ChartSetInteger(0,CHART_COLOR_STOP_LEVEL,GetRandomColor());
  ChartRedraw();
  Sleep(1000);  
//--- ボリュームとマーケットエントリーレベルの色を設定する
  Comment("Set color of volumes and market entry levels");
  ChartSetInteger(0,CHART_COLOR_VOLUME,GetRandomColor());
  ChartRedraw();
 }
//+------------------------------------------------------------------+
//| ランダムに生成された色を返す                                             |
//+------------------------------------------------------------------+
color GetRandomColor()
 {
  color clr=(color)GETRGB(XRGB(rand()%255,rand()%255,rand()%255));
  return clr;
 }

参照

Event handling functionsProgram runningClient terminal events