[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 361

 
vilard:
異なるタイムフレームの指標をテスターで考慮させる方法、またそれは可能でしょうか?
ストラテジーテスターでインジケーターを検討するとはどういうことですか?(1)可視化中に別のタイムフレームのインジケータを表示する必要があるのではないか、(2)EAコードで、インジケータ関数で、別のタイムフレームの値を計算する必要があるのではないか?
 
vilard:
異なるタイムフレームの指標をテスターで考慮させる方法、またそれは可能でしょうか?

possible:https://docs.mql4.com/ru/indicators/icustom

https://docs.mql4.com/ru/constants/timeframes

 

このEAは、インデックス1と2のバーでシグナルを生成するように設計されています(つまり、新しいバーの開始時にオープンオーダーとクローズオーダーを行う)。

テスターでは、OrderCloseで138と 4051(ticketに悪態をついているようです)のエラーが交互に発生します。

この問題を解決するためにご協力をお願いします。

   if(Mas_Ord_New[0][0]!=0)
    {
     if(Signal==2)
      {
        for(i=0; i<=Mas_Ord_New[0][0]; i++)
         {
           ticket=Mas_Ord_New[i][4];
           lts=Mas_Ord_New[i][5];
           Ans=OrderClose(ticket,lts,Bid,5);
           if(Ans==false) 
           Alert("Закрыть BUY ",ticket, " не удалось. Ошибка: ", GetLastError());
         }
      }
     if(Signal==3)
      {
        for(i=0; i<=Mas_Ord_New[0][0]; i++)
         {
           ticket=Mas_Ord_New[i][4];
           lts=Mas_Ord_New[i][5];            
           Ans=OrderClose(ticket,lts,Ask,5);
           if(Ans==false) 
            Alert("Закрыть SELL ",ticket, " не удалось. Ошибка: ", GetLastError());
         }       
      }
    }

 // Функция из учебника

int Terminal()
 {
   int Qnt=0;
   
   ArrayCopy(Mas_Ord_Old, Mas_Ord_New); // Сохранение информации
   Qnt=0; // Обнуление счетчика
   ArrayInitialize(Mas_Ord_New,0);  // Обнуление массива
   ArrayInitialize(Mas_Tip,0);  // Обнуление массива
   
   for (int n=0; n<=OrdersTotal(); n++)
    {
      if ((OrderSelect(n,SELECT_BY_POS)==true) &&
          (OrderSymbol()==Symbol()) && (OrderMagicNumber()==Magic))
       {
         Qnt++;
         Mas_Ord_New[Qnt][1]=OrderOpenPrice();
         Mas_Ord_New[Qnt][2]=OrderStopLoss();
         Mas_Ord_New[Qnt][3]=OrderTakeProfit();
         Mas_Ord_New[Qnt][4]=OrderTicket();
         Mas_Ord_New[Qnt][5]=OrderLots();
         Mas_Tip[OrderType()]++;
         Mas_Ord_New[Qnt][6]=OrderType();
         Mas_Ord_New[Qnt][7]=OrderMagicNumber();
         if (OrderComment()=="")
            Mas_Ord_New[Qnt][8]=0;
         else
            Mas_Ord_New[Qnt][8]=1;
       }
    }
   Mas_Ord_New[0][0]=Qnt;
   return;
 }
 
silhouette:

このEAは、インデックス1と2のバーでシグナルを生成するように設計されています(つまり、新しいバーが開いたときにオープンオーダーとクローズオーダーを出すということです)。

テスターでは、OrderCloseで138と4051(ticketに悪態をついているようです)のエラーが交互に発生します。

この問題の解決にご協力をお願いします。

ポジションを 閉じるには、次のような構造を試してみてください。

int err;
// ---
if (...) // условие закрытия позиции
{  if (OrdersTotal()>0)
   {  for (int i=OrdersTotal()-1; i>=0; i--)
      {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {  // фильтрация позиции по текущему символу:
            if (OrderSymbol()!=Symbol()) continue;
            // фильтрация позиции по магик-номеру:
            if (OrderMagicNumber()!=MagNum) continue;
            // ... можно и другие фильтры поставить.
            // --- закрытие позиции Buy.
            if (OrderType()==OP_BUY)
            // перед открытием или закрытием позиции
            // обновляйте котировки с помощью RefreshRates()
            // дабы избежать устаревание запрошенной цены,
            // возможной причины ошибки 138
            {  RefreshRates(); 
               OrderClose(OrderTicket(),OrderLots(),Bid,30);
               err=GetLastError();
               if (err>0)  Alert("Ошибка при закрытии позиции Buy (",err,").");
               if (err==0) Alert("Позиция Buy закрыта успешно.");
               err=0; return(0);
            }
            // --- закрытие позиции Sell.
      else  if (OrderType()==OP_SELL)
            {  RefreshRates();
               OrderClose(OrderTicket(),OrderLots(),Ask,30);
               err=GetLastError();
               if (err>0)  Alert("Ошибка при закрытии позиции Sell (",err,").");
               if (err==0) Alert("Позиция Sell закрыта успешно.");
               err=0; return(0);
            }
   }  }  }
}
 
chief2000:
米ドル円


しゃい
 
Roman.:


0.01 -NDDセントアカウント。TRとSL=0。

どこもかしこも同じです。

4日、通貨ペアで、間違いなくすべてがアルゴリズムに従ってテストされます。

アルプスで - ゴールド - アルゴリズムに従ってテストされました。

4thで動作して いるGRAALに金属を追加したいのですが、今のところ通貨のみです。


では、通貨には問題がないのですか?
 
Vinin:

では、通貨に関する問題はないのでしょうか?


はい、特に問題はありません。

Victor Ivanovichさん、心の底からありがとうございます!あなたの誘導尋問でわかりましたよ。

4のNDDには 金属はなく、通貨のみです。そのため、テスト中にエラー#131が投げ出されます - 誤ったボリューム。それは意識していませんでした。

金と銀については、すでにアルプスでパラメーターの最適化を始めています。

 
paladin80:

ポジションを閉じるには、このような構図を試してみてください。


ありがとうございます!うまくいきました
 

例えばバナー用のHTMLコードを挿入する方法を教えてください。

 
どこに入れるの?
理由: