記事"6つのステップでトレーディング自動装置を作りましょう!"についてのディスカッション - ページ 2

 
bivmail:

私は興奮していたが、私はこれを回避することはできません(通勤 - 私はメモリアドレス転送について読んだが、それはそのようにも動作しませんでした):

コンパイラーは 'm_MethodFast' - 定数式が必要、' m_MethodSlow' - 定数式が必要というエラーを返します。

もちろん、これはド素人のための質問だ。このような質問は、記事を詰まらせないように、別のスレッドで聞くべきかな?


ENUM_MA_METHOD l_array1_select_method[2];
l_array1_select_method[0]=MethodFast();
l_array1_select_method[1]=MethodSlow();
 

そうだね。つ目の方法もうまくいかなかった:

それはつまずく

1) '=' - l-値が必要 //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - EnumToStringのパラメータは列挙型でなければならない //...EnumToString(l_array1_select_method_n2.At(i_array1_n2));

式が真偽値でない

#include <Arrays\ArrayInt.mqh>
   CArrayInt l_array1_select_method_n2;
   l_array1_select_method_n2.Add(m_MethodFast);
   l_array1_select_method_n2.Add(m_MethodSlow);
   //int total_array1_n2=l_array1_select_method_n2.Total()-1;// ArraySize(l_array1_select_method_n2);

   CArrayInt l_array2_enum_ma_method_n2;
   l_array2_enum_ma_method_n2.Add(MODE_SMA);
   l_array2_enum_ma_method_n2.Add(MODE_EMA);
   l_array2_enum_ma_method_n2.Add(MODE_SMMA);
   l_array2_enum_ma_method_n2.Add(MODE_LWMA);

   bool YesErrorsFlag_n2=false;
   for(int i_array1_n2=0;i_array1_n2<l_array1_select_method_n2.Total()-1;i_array1_n2++)
     {
      if(l_array2_enum_ma_method_n2.Search(l_array1_select_method_n2.At(i_array1_n2))=-1)
        {
         YesErrorsFlag_n2=true;
         PrintFormat("無効なスムージング・タイプ %s 移動平均!",EnumToString(l_array1_select_method_n2.At(i_array1_n2)));
        }
     }

   if(YesErrorsFlag_n2)
     {
      return(false);
     }

さて、これは実用的ではない。この例のままにしておこう。

 
bivmail:

そうだね。つ目の方法もうまくいかなかった:

それはつまずく

1) '=' - l-値が必要 //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - EnumToStringのパラメータは列挙型でなければならない //...EnumToString(l_array1_select_method_n2.At(i_array1_n2));

式が真偽値でない

さて、これは実用的ではない。例のままにしておきましょう。

コンパイルに適したコードを添付しよう(テレパスは面倒なので)。
 

こんにちは。

私は最後まで説明書に従ってすべてのステップを行いました。EAをコンパイルし、テストしてみましたが、テスト期間中トレードが発生せず、エラー - 遺伝子パス(nn, シーケンス番号)をテストしましたが、エラー "cannot initialise expert "が表示されました。

記事に付属のma_cross.mqhシグナルからExpert Advisorをコンパイルしてみましたが、同じエラーが出ました。最後に、記事に付属していた既製のExpert Advisorを試してみましたが、やはり同じエラーでした!何が問題なのでしょうか?


 
提供されているカスタムインジケータ「Custom Moving Average.mq5」を再コンパイルしてみてください。Custom Moving Average.ex5ファイルのバージョンがコンパイラの現在のバージョンと一致しない場合、生成されたExpert Advisorの初期化時にインジケータハンドルが作成されません。このケースのようです。
Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

再コンパイルしましたが、問題は残っています。また、メタトレーダーは1週間前にメタトレーダーの公式サイトからダウンロードしたもので、まだ古くなっていないことをお断りしておきます。

さらに、このExpert Advisorを2つの異なるコンピューターからテストしてみました。

 
danielalmaty:

再コンパイルしましたが、問題は残っています。また、メタトレーダーは1週間前にメタトレーダーの公式サイトからダウンロードしたもので、まだ古くなっていないことをお断りしておきます。

さらに、私はこのExpert Advisorを2つの異なるコンピュータからテストしようとしました。

最適化ではなく)単独でテストしてみてください。ログにはExpert Advisorが初期化されない原因についてのより詳細な情報が含まれています。
 

最適化なしでテストを1回実行してみたが、エラーはなく、すべて順調に進んだ。

 
danielalmaty:

最適化なしでテストを1回実行してみましたが、エラーもなく、すべてスムーズに進みました。

Expert Advisorの設定を表示し、どの取引サーバーでテストを実行した のか教えてください。アクティブな口座はありますか?
 

MIGBank-Demoサーバーでテスト開始

Expert Advisorの設定はこのようになっている。

//+------------------------------------------------------------------+
//| 入力|
//+------------------------------------------------------------------+
//--- 専門家のための入力
input string         Expert_Title             ="ssssa";  // 文書名
ulong                Expert_MagicNumber       =847;      // 
bool                 Expert_EveryTick         =false;    // 
//--- メイン信号用入力
input int            Signal_ThresholdOpen     =10;       // オープンする信号のしきい値 [0...100]
input int            Signal_ThresholdClose    =10;       // クローズするシグナルのしきい値 [0...100]
input double         Signal_PriceLevel        =0.0;      // 取引を実行する価格水準
input double         Signal_StopLevel         =50.0;     // ストップロス・レベル(ポイント)
input double         Signal_TakeLevel         =50.0;     // 利益確定レベル(ポイント)
input int            Signal_Expiration        =4;        // 未決注文の有効期限(バー単位)
input int            Signal_MaCross_FastPeriod=13;       // My_MA_Cross(13,MODE_SMA,21,...) 高速MAの期間
input ENUM_MA_METHOD Signal_MaCross_FastMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) 高速MAの方法
input int            Signal_MaCross_SlowPeriod=21;       // My_MA_Cross(13,MODE_SMA,21,...) 低速MAの期間
input ENUM_MA_METHOD Signal_MaCross_SlowMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) 低速MAの方法
input double         Signal_MaCross_Weight    =1.0;      // My_MA_Cross(13,MODE_SMA,21,...)ウエイト [0...1.0].
//--- お金のためのインプット
input double         Money_FixLot_Percent     =10.0;     // パーセント。
input double         Money_FixLot_Lots        =0.1;      // 固定ボリューム

やはり、記事付属のExpert Advisorを動かしてみましたが、同じ結果になりました。ということで、記事のファイルをダウンロードするだけで設定が確認できます。