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

 
こんにちは!アリゲーター+EMA(233)+ストキャスティクスで動くロボットはありますか?また、その戦略についてどのようにお考えですか?
 
Lizaku:
こんにちは!そこにワニ+ EMA(233)+ストキャスティックインジケータに基づいて ロボットはありますか? あなたは私にリンクを与えることができれば.また、その戦略についてどのようにお考えですか?

Alligatorはすでに3つの移動平均から構成されているため、ここでは移動平均は明らかに不要です。残るはAlligator+Stochasticです。

アリゲーター+ストキャスティック

 
スクリプト/アドバイザーでインジケータ計算 終了の事実を確認するには、どれ を呼び出せばよいのでしょうか?今まではSleep()を入れていたのですが、なぜバッファの値が0になるのかがわからず半日を費やしてしまいました...。
 
いつも真夜中です。
 
Aleksey Vyazmikin:
インジケーターの計算が 終わったかどうか、どれが呼ばれたかを スクリプト/アドバイザーで確認するにはどうしたらいいですか?今まではSleep()を入れていたのですが、なぜバッファの値が0になるのかがわからず半日を費やしてしまいました...。

私は以下のサイクルで使用しています。

 int n = 0;
    do
     {
      // Пытаемся получить нужное значение;
      if(значение не получено)
       {
        n++;
        Sleep(100);
       }
     }
    while(значение не получено && n < 7 && !IsStopped());
 
Alexey Viktorov:

こんなサイクルで使っています。

ありがとうございます。このための標準的なツールがあればいいなと思ったのですが、バッファをゼロで埋めて、そこに計算値を入れるというのは理解できません。バッファのコピーエラーが出るので、それでいいのですが...。

 
Aleksey Vyazmikin:

ありがとうございます。バッファをゼロで埋めて、そこに計算値を入れるというのは、なぜなんでしょう。バッファコピーエラーになるし、それはそれでいいんですが...。

内部ツールは持っています。かつて、それを理解しようとしたことがありますが、無駄でした。ドキュメントのどのセクションに記載されているのか、今となっては思い出せないくらいです。私の記憶が正しければ、同期に関係する何かです。

 

5バンドのボリンジャーラインをベースにしたインジケーターを作っているのですが、最終段階としてインジケーターラインに 関連したパターン形成の条件を書き始めたのですが、テスト中に2つのバリエーションが出てきました。以下はその断片である。

ここで、修正できることがあれば、教えていただけますか?

int OnCalculate (const int rates_total,      // размер входных таймсерий 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const datetime& time[],     // Time
                 const double& open[],       // Open 
                 const double& high[],       // High 
                 const double& low[],        // Low 
                 const double& close[],      // Close 
                 const long& tick_volume[],  // Tick Volume 
                 const long& volume[],       // Real Volume 
                 const int& spread[])         // Spread 
 {
 
//----     
//--- переменные
   int pos; // позиция
   static datetime prevtime = 0;
   int shift1;
   int shift2;
   int shift3;
   string pattern, period;
   int setPattern = 0;
   int alert = 0;
   double O, O1, O2, C, C1, C2, L, L1, L2, H, H1, H2;   
  
//----

//----   
//--- check for bars count - проверка колчества баров
   if(rates_total<ExtPlotBegin)
      return(0);
//--- начало вычисления
   if(prev_calculated>1) pos=prev_calculated-1;
   else pos=0;
//--- главный цикл
   for(int i = pos ; i < rates_total;i++)
    {
      int shift = 0;
      shift1 = shift + 1;
      shift2 = shift + 2;
      shift3 = shift + 3;      
      O = open[shift1];
      O1 = open[shift2];
      O2 = open[shift3];
      H = high[shift1];
      H1 = high[shift2];
      H2 = high[shift3];
      L = low[shift1];
      L1 = low[shift2];
      L2 = low[shift3];
      C = close[shift1];
      C1 = close[shift2];
      C2 = close[shift3]; 
      //--- middle line
      ExtMLBuffer[i]=SimpleMA(i,ExtBandsPeriod,close);
      //--- calculate and write down StdDev
      ExtStdDevBuffer[i]=StdDev_Func(i,close,ExtMLBuffer,ExtBandsPeriod);
      //--- upper line
      ExtTLBuffer[i]=ExtMLBuffer[i]+ExtBandsDeviations*ExtStdDevBuffer[i];
      //--- mediumH line
      ExtMDHBuffer[i]=ExtMLBuffer[i]+ExtBandsDeviationsM*ExtStdDevBuffer[i];
      //--- mediumL line
      ExtMDLBuffer[i]=ExtMLBuffer[i]-ExtBandsDeviationsM*ExtStdDevBuffer[i];  
      //--- lower line
      ExtBLBuffer[i]=ExtMLBuffer[i]-ExtBandsDeviations*ExtStdDevBuffer[i];
     
      // Импульсная свеча от нижней границы Боллинджера
        if(((O <= H) && (H <= ExtMDLBuffer[i])) && ((L >= C) && (C <= ExtBLBuffer[i])))
        {
            Alert("Pin up!");
            PlaySound ("UpperBandAlert.wav"); 
         }
            Sleep(5000);
    }                  
//---- OnCalculate done. Return new prev_calculated. Расчет закончен, возврат к новым предыдущим барам
   return(rates_total);
  }
//+-
 

こんにちは。

最初のポジションのボリューム =0.1, 最後のポジション =0.2, どうすれば最後のポジション =0.2 のボリュームを得る ことができますか?

ヘッジ会計ではこのようになります。

double Lot_pos_b()
  {
   int total=0;
   double lot=0;
   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               lot=m_position.Volume();
              }
//---
   return(lot);
  }
ネッティング口座では、どのようにロットを取得するのですか?この関数は、0.2の代わりに0.3を返します。
 
lil_lil:

こんにちは。

最初のポジションのボリューム =0.1, 最後のポジション =0.2, どうすれば最後のポジション =0.2 のボリュームを得ることができますか?

ヘッジ口座では、このようになります。

ネッティング口座で、ロット数量を求めるにはどうしたらよいですか?この関数は、0.2ではなく0.3を返します。

ポジションに属する取引を表示し、その取引量を確認することができます。

あるポジション(各ポジションのプロパティ)の見つかったトレードをすべて印刷する - そこで何を検索する必要があるかを把握する。