プログラムに権限を与える
C#自体はプログラミング言語なので当然なんでもできてしまうのですが、cBotやインジケーターが自由に動ける範囲は基本的にcTraderの中だけです。勝手にPC内のファイル読み込んだり、どっかのサーバーにデータ送ったりとかはできません。
これができてしまうと素性の知れない人が作ったcBotなんて怖くて使えませんよね。なのでこういう設定になってます。MT4でも初期状態ではEAからのDLLインポートができなくなってるのと同じです。
(ちなみにMT4もDLLインポートを許可すれば原理的にはなんでもできます。許可しないと動かないEAが多いので常に許可してる方が多いと思いますが、得体のしれないEAには注意しましょう。)
でも、これってプログラム作る方からすると不便なんですよね。他のサイトから指標データもってきたりとか、ファイルにトレード記録残したりとかcBotからしたくなることもあります。
そんなときに使うのがAccessRightsです。本体クラス宣言の前の行、Robot属性のプロパティでAccessRights型で指定することで、プログラムに権限を付与することができます。
デフォルトではcTrader外には触れられないAccessRight.Noneが設定されてますが、ファイルを読み書きするならAccessRight.FileSystem、Web上から情報を持ってくるならAccessRight.Internetと権限を制限して付与することが可能です。
AccessRights 列挙型
プログラムの内容に応じて必要な権限を指定します。権限を越えた処理を行おうとすると例外が発生します。基本的には必要最低限の権限を付与するようにします。なお、権限を付与すると起動時に警告がでるようになります。
None | デフォルトです。cTraderの外側のことはできません。 |
FileSystem | PC内のファイルの読み書きができる権限を与えます。 |
Internet | ネットワークアクセスができるようになります。 |
Registry | レジストリにアクセスできるようになります。 |
FullAccess | なんでもできるようになります。 |