31 3月 2016
31 3月 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; // 足の数 };<t0>ここでの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』エラーは、コンパイラは「抽象クラスをインスタンス化できません」というエラーを出します CAnimal some_animal; // CAnimal』エラーは、コンパイラは「抽象クラスをインスタンス化できません」というエラーを出します //--- 正しい使用例 new CCat; // エラーはなく、CCatクラスは抽象クラスではありません CCat cat; // エラーはなく、CCatクラスは抽象クラスではありません抽象クラスの使用の制限
//+------------------------------------------------------------------+ //| 抽象基底クラス | //+------------------------------------------------------------------+ class CAnimal { public: //--- 純粋仮想関数 virtual void Sound(void)=NULL; //--- 関数 void CallSound(void) { Sound(); } //--- コンストラクタ CAnimal() { //--- 仮想メソッドの明示的な呼び出し Sound(); //--- 明示的ではない呼び出し(第三の関数を介した) CallSound(); //--- コンストラクタまたはデストラクタは常に自分の関数を呼び出す //--- 派生クラスでの呼び出された関数によるオーバーライドや仮想性に関わらず //--- もし、呼び出される関数が純粋仮想の場合、 //--- 呼び出しは重大なランタイムエラーをもたらします:『純粋仮想関数呼び出し』 } };しかしながら、抽象クラスのコンストラクタとデストラクタは、他のメンバー関数を呼び出すことができます。
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 // ポジションのチケット
);