私たちのファンページに参加してください
- ビュー:
- 63
- 評価:
- パブリッシュ済み:
- アップデート済み:
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
このライブラリは、入力パラメータを扱う際のルーチン作業を軽減する。
。
使用例として、トレーディング・アドバイザーを取り上げてみましょう。トレーディングロジックを書くときにOOPアプローチを使うのは合理的です。なぜなら、より複雑なシステムにEAを組み込むのが簡単になるからです。
アーキテクチャ的には、テスター用のOOPアドバイザーは次のようになります。
class SYSTEM { public: virtual void OnTick() {} // 入力データは文字列として出力される。 virtual string ToString( void ) const = NULL; // 入力データは文字列で指定する。 virtual int FromString( const string Str ) = NULL; }; SYSTEM* System = NULL; void OnInit() { System = new SYSTEM; } void OnTick() { System.OnTick(); } void OnDeinit( const int ) { delete System; }
このEAは何もしません。しかし、取引ロジックではなく、入力パラメータを扱うだけになると、コードは深刻に成長し、可読性を悪化させ、エラーの確率を高めます。実際、あなたは不快なルーチンワークを実行する必要があります。
入力パラメータはすべて文字列で
。
コードで強調されている行に少し目を逸らしてみよう。
貿易実務によると、入力パラメーターを文字列形式で保存/読み込むと便利で、興味のある(見つけた)入力パラメーターのセットを素早く明確に見ることができる。
Amount = 1, Count = 2, Period = 3, Koef = 4.5, Log = 6.7, Flag = true Amount = 2, Count = 3, Period = 4, Koef = 4.56, Log = 7.89, Flag = false
例えば、上の文章には2組の入力パラメータがあります。
入力パラメーターを扱うOOPの基本。
input int inAmount = 1; input int inCount = 2; input int inPeriod = 3; input double inKoef = 4.56; input double inLog = 7.89; input bool inFlag = true; struct INPUT_STRUCT { int Amount; int Count; int Period; double Koef; double Log; bool Flag; string ToString( void ) const { string Str = NULL; #define TOSTRING(A) Str += (::StringLen(Str) ? ", " : NULL ) + #A + " = " + (string)(this.A); TOSTRING(Amount); TOSTRING(Count); TOSTRING(Period); TOSTRING(Koef); TOSTRING(Log); TOSTRING(Flag); #undef TOSTRING return(Str); } // 書き始めなかった。 int FromString( const string Str ) { return(0); } } inInputs = {inAmount, inCount, inPeriod, inKoef, inLog, inFlag}; #include <fxsaber\Input_Struct\Example_OnTick.mqh> void EXAMPLE::OnTick( void ) { // システム・コード // this.Inputsは入力パラメータを含む。 }
上の面倒なコードは、同じ空のEAだが、入力パラメーターを扱うという点だけが追加(強調表示)されている。このコードは、重要なINPUT_STRUCT::FromString メソッドを実装していないにもかかわらず、不愉快です。
入力パラメーターを1つ追加/削除したい場合、このコードの5か所に対応する変更を加えなければならない。そして、毎回そうなのだ!
。
#include <fxsaber\Input_Struct\Input_Struct.mqh> // 入力パラメータの構造。 INPUT_STRUCT inInputs; MACROS_INPUT(int, Amount, 1); MACROS_INPUT(int, Count, 2); MACROS_INPUT(int, Period, 3); MACROS_INPUT(double, Koef, 4.56); MACROS_INPUT(double, Log, 7.89); MACROS_INPUT(bool, Flag, true); #include <fxsaber\Input_Struct\Example_OnTick.mqh> void EXAMPLE::OnTick( void ) { // システム・コード // this.Inputsは入力パラメータを含む。 }
ハイライトされたテキストが明らかに少なくなっている。同時に、すべてのメソッドが実装されている。

。
- 入力パラメータのセットを変更する際に、最小限の時間とエラー確率。
- テクニカルな機能よりもトレードロジックに多くの時間を割く。
- 文字列による入力パラメータセットの保存/読み込み。
- 複雑なシステム(ポートフォリオなど)の記述を大幅に簡素化。
- カスタム最適化アルゴリズムの容易な接続。
OOPアプローチでは、上記の両方の例で行われているように、多くの繰り返しテキストをmqhファイルに隠すことができることに注意してください。OOPは簡潔にすることもできます。
特徴
- 提案されている入力パラメーター構造はシンプル であり、適用可能性を大きく広げている。
- "変更された "構造体は、代入演算子を介して互いに渡すことができる。また、常に同じサイズを持つ。
- このライブラリはクロスプラットフォームです。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/47932
Sec-WebSocket-Key Generator
Sec-WebSocket-Keyジェネレーター
シンプルな保留オーダー時間
エキスパートアドバイザーは、入力パラメータで指定された時間に従って、買いストップと売りストップの保留中の注文で動作します。
MA価格表示
このインジケーターは、フォーラムでのリクエストによって書かれたものだ。
Open Trade
この関数は、取引開始のメインロジックを実行します。 シンボル情報とユーザーによって提供されたパラメータに基づいて、開始価格、利食いレベル、損切りレベルを計算します。 シンボル、数量、注文タイプ、偏差、コメント、マジックナンバーなどの必要な情報を含む取引要求(MqlTradeRequest)を準備します。 OrderSend 関数を呼び出して操作要求を送信し、結果を取得します。 SetTypeFillingBySymbol 関数: シンボルのフィリングポリシーに基づいて、注文のフィリングタイプ(Fill または Kill、Immediate または Cancel、Return)を決定します。 GetMinTradeLevel 関数: フリーズレベルとシンボルのストップレベルに基づいて、最小操作レベルを計算します。 最小レベルが一定の範囲内に収まるように調整し、結果を返します。