記事"ユニバーサルEA:戦略トレードモード(その1)"についてのディスカッション

 

新しい記事 ユニバーサルEA:戦略トレードモード(その1) はパブリッシュされました:

EAの開発者は、プログラミングのスキルに関係なく、信頼性の高い取引プロセスを整理するため、同じタスクとアルゴリズムの問題に直面しています。この記事では、これらのタスクの解決に着手し、トレードアイデアを記述するための便利なCStrategyエンジンの可能性を説明します。

この記事で提供される方法を理解するため、短期移動平均と長期移動平均線の、古典的な取引システムを説明します。このように、平均化周期の大きな移 動平均は、小さい周期の移動平均よりも遅くなります。取引ルールは単純です。:移動平均が上向きにクロスした場合EAは買いエントリーします。逆に、下向 きにクロスした場合売りエントリーです。以下に模式的に戦略を表示します。

図1。2つの移動平均値に基づいた取引システムのチャート

作者: Vasiliy Sokolov

 

論理的で面白い...しかし、エキスパートアドバイザーに不必要な機能(スケジュール、ニュース、その他の外部的なもの)は、ずいぶん前にあきらめた。

ターミナル変数を使ってエキスパートアドバイザーのモードを 設定する方が便利だ。Expert Advisorのパラメータにいくつかの変数名を指定し、その値を使って自分自身を方向付ける。

 
Maxim Kuznetsov:

論理的で面白い...しかし、エキスパートアドバイザーに不必要な機能(スケジュール、ニュース、その他の外部的なもの)は、ずいぶん前にあきらめた。

ターミナル変数を使ってエキスパートアドバイザーのモードを設定する方が便利だ。Expert Advisorのパラメータにはいくつかの変数名が与えられており、その値を使って自身の方向性を決定する。

これらのトリックを補助モジュール内に隠すというアイデアです。ユーザーはTSの正式な記述を行い、トレーディング・エンジンがそれ以外のすべてを行う。

ところで、「取引モード」はEAロジックの構成案の結果に過ぎません。EAの取引ロジックを4つのアクションで記述すれば、取引モードは自ずと現れます。この4つのアクションを使ってTSの書き方を学べば、Expert Advisorを 書くスピードは数倍になり、エラーの数はゼロになる傾向があります。

 
Vasiliy Sokolov:

このアイデアは、これらのトリックを補助モジュール内に隠すことである。ユーザーはTSを形式的に記述し、トレーディングエンジンが残りを代行する。

ところで、「取引モード」はEAロジックの構成案の結果に過ぎません。4つのアクションを使ってEAの取引ロジックを記述すれば、取引モードは自ずと現れます。この4つのアクションの助けを借りてTSの書き方を学べば、EAの記述 スピードは数倍になり、エラーの数はゼロになる傾向があります。

取引モードが表示されることは否定できません。しかし、これらのモードは外部から、一般的には外部手段によって設定する方がよい。この方法では、EAはどのように見ても不必要なコードを「残し」、リソース(計算、開発、サポートなど)を食います。しかし、EAの代わりに、1つのリモコンから複数のフクロウをコントロールできる、一種の「ショッピングモール」を手に入れることができるのです。
 
Maxim Kuznetsov:
トレードモードが現れることは否定できない。しかし、これらのモードは外部から、外部手段で設定した方が良い。この方法では、EAはどう見ても不要なコードを「残し」、リソース(計算、開発、サポートなど)を食います。しかし、EAの代わりに、1つのリモコンから複数のフクロウをコントロールできる、一種の「ショッピングモール」を手に入れることができる。

まあ、一般的には、外部から設定することになる。例えば、取引モードを視覚的に作成することができます。Win32でも可能です。また、取引モードをパラメータとして配置することも可能です。エンジン自体には取引モードはありません。このおかげで、アドオンや拡張機能からストラテジーを独立させる ことができます。アドオンや拡張 機能は使っても使わなくてもよく、シンプルに記述されており、必要に応じて使うことができます。

 
このアイデアはとても興味深い。記事をありがとう。
 
Maxim Kuznetsov:
トレードモードが現れることは否定できない。しかし、これらのモードは外部から、外部手段で設定した方が良い。この方法では、EAはどう見ても不必要なコードを「残し」、リソース(計算、開発、サポートなど)を食います。しかし、EAの代わりに、1つのリモコンから複数のフクロウをコントロールできる、一種の「トレーディング・コンプレックス」を手に入れることができる。

なぜそれが良いと思うのですか?あなたのやり方は最低です!あなたがどれほど現実的で、テスターを使っていないのか、もっと教えてください。

EAの動作結果を決定する機能はたくさんありますが、テスターではチェックできません。

EAの動作を変更するものはすべて、EAのプロパティウィンドウを通して規制されるべきです。

 

素晴らしい記事だ。早く翻訳してくれ!


 

理解し始めたばかりだ。XML戦略の説明が欲しい。そして、少なくともXMLファイルが欲しい。IMHOのアーカイブにはありません。

ありがとうございました。

 
Yuriy Asaulenko:

理解し始めたばかりだ。XML戦略の説明が欲しい。そして、少なくともXMLファイルが欲しい。IMHOのアーカイブにはありません。

ありがとうございました。

ストラテジーのXMLシリアライズの例:

<Global>
        <Strategies>
                <Strategy Name="MovingAverage" Magic="100" Timeframe="PERIOD_M1" Symbol="Si">
                        <TradeStateStart> Stop</TradeStateStart>
                        <Params>
                                <FastMA> 1</FastMA>
                                <SlowMA> 3</SlowMA>
                                <Shift> 0</Shift>
                                <Method> MODE_SMA</Method>
                                <AppliedPrice> PRICE_CLOSE</AppliedPrice>
                        </Params>
                </Strategy>
                <Strategy Name="MovingAverage" Magic="101" Timeframe="PERIOD_M5" Symbol="SBRF">
                        <TradeStateStart> BuyOnly</TradeStateStart>
                        <Params>
                                <FastMA> 15</FastMA>
                                <SlowMA> 21</SlowMA>
                                <Shift> 0</Shift>
                                <Method> MODE_SMA</Method>
                                <AppliedPrice> PRICE_CLOSE</AppliedPrice>
                        </Params>
                </Strategy>
                <Strategy Name="BollingerBands" Magic="102" Timeframe="PERIOD_M15" Symbol="GAZR">
                        <TradeStateStart> BuyAndSell</TradeStateStart>
                        <Params>
                                <Period> 30</Period>
                                <StdDev> 1.5</StdDev>
                        </Params>
                </Strategy>
                <Strategy Name="BollingerBands" Magic="103" Timeframe="PERIOD_M30" Symbol="ED">
                        <TradeStateStart> BuyAndSell</TradeStateStart>
                        <Params>
                                <Period> 20</Period>
                                <StdDev> 2.0</StdDev>
                        </Params>
                </Strategy>
        </Strategies>
</Global>

ストラテジーのシリアライズの問題は、次の部分で扱われています。この例はそこにあります。

 

こんにちは、

記事のソースコードがコンパイルできません。
返されたエラーは次のとおりです:

cannot cast 'DoubleValue' to 'ULongValue' Dictionary.mqh 210 14

     lValue=(ULongValue)dValue;


ご協力ありがとうございました。
Pierre8r