22 4月 2016
22 4月 2016
ネッティングシステム
この計算システムは、アカウント上では一度に1つのシンボルにつき1つのポジションのみ開くことができるということを念頭に置いています。
この時、どのようなアクションの結果、反対方向に取引が行われるかや、市場の注文や指値注文の実行の結果は重要ではありません。
以下に、0.5ロットのボリュームでのEURUSDの二つの買い取引の実行例を引用しました。
これらの取引の実行結果は、1ロットのボリュームの1つの共通ポジションになりました。
ヘッジングシステム
この計算システムはアカウントに、同じシンボルに対し反対方向のものを含む、複数の取引ポジションを持つことを可能にします。
取引シンボルに開いているポジションがあり、トレーダーが新しい取引を実行する(または指値注文が作動する)場合、新しいポジションが開かれます。既存のポジションは変化しません。
以下に、0.5ロットのボリュームでのEURUSDの二つの買い取引の実行例を引用しました。
これらの取引が実行された結果、2つの別個のポジションが開かれました。
新しい取引操作タイプ Close By
ヘッ
ジングポジション計算のアカウントの為に、反対のポジションを閉じる新しいタイプの取引操作が追加されました。この操作によって、同じシンボルでの反対方
向の2つのポジションを同時に閉じることができます。もし相対するポジションが様々なロット数を持っている場合、2つのうちの1つの注文のみが開いたまま
残ります。このボリュームは、2つのクローズポジションのロット差と等しくなり、ポジションの方向とオープン価格は、クローズポジションのうちの(ボ
リューム的に)大きい方と等しくなります。
2つのポジションの単一のクローズと比較すると、相対クローズでは、トレーダーは1つのスプレッドを節約することができます。
相対ポジションのクローズ時に、『close by』のタイプの注文が設定されます。閉じられるポジションのチケットが、コメントで指定されます。相対ポジションのペアのクローズは、『out by』タイプの2つの取引によって行われます。両方のポジションのクローズの結果によって得られる取引の利益/損失のサイズは、1つの取引でのみ指定され ます。
class CAnimal { public: CAnimal(); // 構造 virtual void Sound() = 0; // 純粋仮想関数 private: double m_legs_count; // 足数 };ここでのSound()関数は、純粋仮想関数PURE(=0)の指定子で宣言されている為、純粋仮想となります。
class CAnimal { public: virtual void Sound()=NULL; // PUREメソッドは派生クラスでオーバーライドする必要があり、CAnimalクラス自体は抽象クラスになり、作成されません }; //--- 抽象クラスからの子孫 class CCat : public CAnimal { public: virtual void Sound() { Print("Myau"); } // PUREは再定義され、CCatクラスは抽象ではなく作成されません }; //--- 誤用例 new CAnimal; // エラー『CAnimal』-コンパイラはエラー"cannot instantiate abstract class"を出します CAnimal some_animal; // エラー『CAnimal』- コンパイラはエラー『cannot instantiate abstract class』を出します //--- 正しい使用例 new CCat; // エラーはありません。CCatクラスは抽象ではありません CCat cat; // エラーはありません。CCatクラスは抽象ではありません抽象クラス使用の制限
//+------------------------------------------------------------------+ //| 抽象基底クラス | //+------------------------------------------------------------------+ class CAnimal { public: //--- 純粋仮想関数 virtual void Sound(void)=NULL; //--- 関数 void CallSound(void) { Sound(); } //--- コンストラクタ CAnimal() { //--- 仮想メソッドの明示的呼び出し Sound(); //--- 暗黙的呼び出し(第三関数を介して) CallSound(); //--- コンストラクタまたはデストラクタでは、常に自分の関数が呼び出されます //--- 仮想性や子孫を呼び出す関数に関わりません //--- もし呼び出される関数が純粋仮想である場合、 //--- 呼び出しは重大な実行エラー"pure virtual function call"をもたらします } };しかしながら、抽象クラスのコンストラクタとデストラクタは、他のメンバー関数を呼び出すことができます。
typedef int (*TFunc)(int,int);これで、TFuncがタイプとなり、変数の関数ポインターを宣言することができます。
TFunc func_ptr;func_ptr変数に、以後の呼び出しの為に、関数のアドレスを保存することができます。
int sub(int x,int y) { return(x-y); } int add(int x,int y) { return(x+y); } int neg(int x) { return(~x); } func_ptr=sub; Print(func_ptr(10,5)); func_ptr=add; Print(func_ptr(10,5)); func_ptr=neg; // エラー: negはint (int,int)型を持っていません Print(func_ptr(10)); // エラー: 二つのパラメータが存在する必要があります関数のポインターを保存し、パラメータとして引き渡すことができます。クラスの非静的メソッドにポインターを取得することはできません。
ulong PositionGetTicket( int index // ポジションリスト内の番号 );
bool PositionSelectByTicket(
ulong ticket // ポジションのチケット
);