初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 71

 
xyz999: 2) 例えば、最適化(バックテスト)を10ヶ月間実施し、1/4フォワードテストオプションを選択した場合、どのように理解すればよいでしょうか。
クライアントターミナル / ストラテジーテスター / バックテスト/ フォワードテスト
 

ありがとうございます。

はい、このリンクから。

http://www.metatrader5.com/ru/terminal/help/tester/tester_using/forward_testing

2つ目の疑問の答えが見つかりました。しかし、1つ目と3つ目の質問には答えがありません。

私も欲しいです。

他のトレーダーの成績や比率を知りたい。私の結果が非常に憂慮すべきものであるように。私は、自動制御と非定常過程のモデリングの分野の科学者で、市場の値動きのグラフも含んでいます。私は長年にわたり非定常過程のモデル化を行ってきましたが、テスターの動作は私の長年の経験とは全く相容れないものです。ここがおかしい私がテスターの使い方を間違えているのか、それとも正常に動作していないのか、どちらかだと思います。一緒に探してみましょう。

最適化期間を厳密に追ったバックテストでは、同じパラメータで最適化時の200%の利益を示しています。しかし、他の最適化パラメータを選択し、最適化期間中にテストを行うと、数倍の利益を得ることができます。そんなことはないはずです。そのため、いくつか質問があります。

 
xyz999: 2つ目の疑問に対する答えが見つかりました。しかし、1つ目と3つ目の質問には答えがありません。私も欲しいです。

まあ、「できることは何でも」(C)と言われるように、自分次第ではありません。 話題そのものからかけ離れています。フォーラムを検索してみると、もしかしたらフォワードテストについてすでに議論されているところがあるかもしれません。また、そのトピックが非常に重要だと思う場合は、新しいテーマ別ブランチを作成します。そうでないと、質問が一般的なブランチに紛れてしまうからです。

xyz999 : はい、このリンクhttps://www.metatrader5.com/ru/terminal/help/algotrading/testing に、私の2番目の質問の答えがありました。

端末内には参考資料もあります。F1.

 
mario065:

非常に間抜けなことをした。

Custom Moving Averageインジケーターの本体を取り出し、中にMFIバッファを入れました。

価格を変更しました。

専門家として、ただの指標と確認するためのコメントとして、やってみました。

留守電にせず、ありがとうございました。残念ながら、テスターは他の指標の平滑化を拒否したままです。私のEAでは、MFIとDEMAという2つの指標の値を同時に使用しています。私は自分のEAにMFIであなたのアルゴリズムを実装しました - 無駄に - 私はグローバル 変数の最適化のためにそれを実行することができませんでした。

また、メッセージをありがとうございました。
 
EA https://www.mql5.com/ru/articles/100 の記事には、ポジションを建てる 条件は書いてありますが、決済する条件は書いてありません。


   bool Buy_opened=false;  // переменные, в которых будет храниться информация 
   bool Sell_opened=false; // о наличии соответствующих открытых позиций

   if(PositionSelect(_Symbol)==true) // есть открытая позиция
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         Buy_opened=true;  //это длинная позиция
        }
      else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         Sell_opened=true; // это короткая позиция
        }
     }    
             
   bool Buy_Condition_1=...
   bool Buy_Condition_2=...
   bool Buy_Condition_3=...

   
 if(Buy_Condition_1 || Buy_Condition_2)
     { 
       if(Buy_Condition_3)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if(Buy_opened)
           {
            Alert("Уже есть позиция на покупку!!!");
            return;    // не добавлять к открытой позиции на покупку
           }        
         mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
         mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // последняя цена ask
         mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
         mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
         mrequest.symbol = _Symbol;                                            // символ
         mrequest.volume = Lot;                                                // количество лотов для торговли
         mrequest.magic = EA_Magic;                                            // Magic Number
         mrequest.type = ORDER_TYPE_BUY;                                       // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK;                            // тип исполнения ордера - все или ничего
         mrequest.deviation=10;                                               // проскальзывание от текущей цены
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {
            Alert("Ордер Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера Buy не выполнен - код ошибки:",GetLastError());
            return;
           }
        }
      }
 
 bool Buy_Close_1=....
 bool Buy_Close_2=...
 bool Buy_Close_3=...
 
 if(Buy_Close_1 || Buy_Close_2)
     {
      if(Buy_Close_3)
        {
        // есть ли в данный момент открытая позиция на покупку?
         if(????)
         {
           Alert("Позицию на покупку закрываю!!!");
            return;    // закрыл
         }        
         mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
         mrequest.price = NormalizeDouble(latest_price.bid,_Digits);           // последняя цена bid
         mrequest.sl = 0;
         mrequest.tp = 0;
         mrequest.symbol = _Symbol;                                            // символ
         mrequest.volume = Lot;                                                // количество лотов для торговли
         mrequest.magic = EA_Magic;                                            // Magic Number
         mrequest.type = ORDER_TYPE_SELL; // ордер на продажу                                     // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK;                            // тип исполнения ордера - все или ничего
         mrequest.deviation=10;                                               // проскальзывание от текущей цены
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);

クエスチョンマークの代わりに、PositionSelect(_Symbol)の値をtrueにしました。 これは役に立ちませんでした。


質問です。クローズ条件を設定できるようにするために、最低限変えられることは何ですか?
Пошаговое руководство по написанию MQL5-советников для начинающих
Пошаговое руководство по написанию MQL5-советников для начинающих
  • 2010.06.09
  • Samuel
  • www.mql5.com
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
 
Lester:
Expert Advisor https://www.mql5.com/ru/articles/100 の記事では、ポジションを開く際の 条件については言及されていますが、ポジションを閉じる際の条件については言及されていません。


クエスチョンマークの代わりに、PositionSelect(_Symbol)の値をtrueにしました。 これは役に立ちませんでした。


質問です。クロージング条件を設定できるようにするには、最低限何を変更すればよいのでしょうか?

Alertの後にリターンがあるんですね。ポジションはおそらく、このリターンのために閉じているわけではありません。一度取り上げて、再度お試しください。

// есть ли в данный момент открытая позиция на покупку?
         if(????)
         {
           Alert("Позицию на покупку закрываю!!!");
           return;    // закрыл
         }  


 
答えはとてもシンプルで、近くにあると感じたので、ありがとうございます。
しかし、クエスチョンマークの部分には別の疑問が生じた。

アルゴリズムについて

適切な条件+ポジションがない 場合-ポジションを開き、その他の条件+オープンポジション がある場合-オープンポジションを閉じます。

私が間違っていなければ - すなわちBuy_openedの 位置の存在

if(Buy_Condition_1 || Buy_Condition_2)
     { 
       if(Buy_Condition_3)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if(Buy_opened)
           {
            Alert("Уже есть позиция на покупку!!!");
            return;    // не добавлять к открытой позиции на покупку
           }        

1の場合、アラートとリターン(最初に戻る)が発生し、0の場合、買い注文が開始されます。

質問です。EAがポジションを建てないようにするために、クエスチョンマークの代わりに何を書けばいいのでしょうか?(私の場合、売り注文 を立てています

 bool Buy_Close_1=....
 bool Buy_Close_2=...
 bool Buy_Close_3=...
 
 if(Buy_Close_1 || Buy_Close_2)
     {
      if(Buy_Close_3)
        {
        // есть ли в данный момент открытая позиция на покупку?
         if(????)
         {
           Alert("Позицию на покупку закрываю!!!");
            return;    // закрыл
         }        
         mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
         mrequest.price = NormalizeDouble(latest_price.bid,_Digits);           // последняя цена bid
         mrequest.sl = 0;
         mrequest.tp = 0;

この定義の条件はPositionSelect(_Symbol)に関連しているので、現時点ではBuy_openedも定義しています。

考えられる全ての論理的な選択肢を素早く試してテストすることが可能なので、質問に意味がないことは理解していますが、問題はテスターのバグでこれができないことで、実際にリアル取引モードのM1で診断する機会があります。

 
Lester:
...

論理的に考えられる選択肢をすべて手早く試してテストできるので、質問に意味がないことは理解していますが、問題はテスターのバグでそれができないことで、実際にリアルトレードモードでM1で診断する機会があります。

質問の意味がよくわからないのですが。

また、テストを実行できないテスターのバグを発見したのでしょうか?

 
tol64:

質問の意味がよくわからないのですが。

テストを実行できないテスターのバグは何ですか?

先ほど、あるいはIndicatorのブランチで説明しました。MFIインジケータのハンドルを参照しているDEMAがMFIウィンドウに表示されないため、テスターは動作しないが、Expert Advisorは動作する。MA、AMAと同じ...!?

質問についてエキスパートアドバイザーにオープンポジションが あることを理解させ、注文を出さないようにするには、疑問符の代わりに何を書けばよいのでしょうか?

bool Buy_Close_1=....
 bool Buy_Close_2=...
 bool Buy_Close_3=...
 
 if(Buy_Close_1 || Buy_Close_2)
     {
      if(Buy_Close_3)
        {
        // есть ли в данный момент открытая позиция на покупку?
         if(????)
         {
           Alert("Позицию на покупку закрываю!!!");
           // Return убрал благодаря форуму ))
         }        
 
Lester:
先に記述した、またはインジケーターブランチに記述した。MFIインジケータのハンドルを参照するDEMAがMFIウィンドウに表示されないため、Expert Advisorが動作しない。MA、AMAも同様です。質問についてクエスチョンマークの代わりに何を書けば、EAが

オープンポジションが あることを「認識」して、注文を出さないようにできるでしょうか!

ポジションがあり(PositionSelect(_Symbol))、他の条件をすべて満たした場合、ポジションをクローズします。例題のreturnが削除されない場合、条件は以下のようになるはずです。

if(!PositionSelect(_Symbol))
  {
   return;
  }

というのは、ポジションがなければ終了するという意味です。終了しない場合、プログラムはこのブロックの後に来るコードを実行します。

しかし、私ならクロージングコンディションチェックの前に、ポジションの有無のチェックを入れます。

理由: