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

 
yiduwi:

ありがとうございます。

イゴール・マカヌ:...は、条件を満たしたところだけに矢印を つけるべき...。

ただし、2本目のバー上に置く。


インジケーターバッファの インデックス方向を確認してください。

 
Artyom Trishkin:

インジケーターバッファの インデックス方向を確認してください。

このコードでは、どのバーに矢印を表示させればよいのでしょうか?

 {
//---
   int limit=rates_total-prev_calculated;
   if(limit>1 || prev_calculated==0)
     {
      limit=rates_total-2;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--)
     {
      if(fabs(high[i+1]-high[i])<=_Point*(double)Pips) BufferDN[i]=high[i]; else BufferDN[i]=EMPTY_VALUE;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
yiduwi:

このコードでは、どのバーに矢印を表示させればよいのでしょうか?

BufferUPとBufferDN インデックスとは何ですか?

Документация по MQL5: Операции с массивами / ArraySetAsSeries
Документация по MQL5: Операции с массивами / ArraySetAsSeries
  • www.mql5.com
//| Custom indicator initialization function                         | //| Custom indicator iteration function                              |
 
Artyom Trishkin:

BufferUPとBufferDN インデックスとは何ですか?

逆をやった。

 for(int i=0;i<limit;i++) 

は、やはり2本目のバー上に置かれる。

 
yiduwi:

逆をやった。

は、やはり2本目のバー上に置かれる。

配列はすべて同じ方向でなければならない

 
Artyom Trishkin:

配列はすべて同じ方向でなければならない

では、最初の選択肢は正しいとして、何が問題なのでしょうか?

 
yiduwi:

では、最初の選択肢は正しいとして、何が問題なのでしょうか?

問題は、インジケーターの全リストを見ることができないことです

 
yiduwi:

これにより、最初のバーにはこのように表示されますが、矢印はリアルタイムでは表示されず、thefを切り替えた後に表示されます。どうしたんですか?

OnInit() では BufferUP と BufferDN をArraySetAsSeries() で、OnCalculate() では - High と Low を ArraySetAsSeries() で指定します。

if(limit>1)

{

}

prev_calculated==0の場合は不要です。

 
Artyom Trishkin:

OnInit() では BufferUP と BufferDN を ArraySetAsSeries() で、OnCalculate() では High と Low を ArraySetAsSeries() で処理します。

ありがとうございます。

 

コードのどこが悪いんだ?テスト終了後のキャッチボールに挑戦

void MyHistory()
  {
//--- select history for access
//HistorySelect(0,TimeCurrent());
   HistorySelect(0,TimeTradeServer());
//---
   int    orders=HistoryDealsTotal();  // total history deals
   int    losses=0;                    // number of losses orders without a break

   for(int i=orders-1;i>=0;i--)
     {
      ulong ticket=HistoryDealGetTicket(i);
      if(ticket==0)
        {
         Print("HistoryDealGetTicket failed, no trade history");
         break;
        }
      //--- check symbol
      if(HistoryDealGetString(ticket,DEAL_SYMBOL)==_Symbol)
         continue;
      //--- check profit
      string   deal_comment=HistoryDealGetString(ticket,DEAL_COMMENT);

      if(deal_comment=="end of test")
        {
         Print("!!!!!!!!!!!!!!!  END TEST !!!!!!!!!!!!!!!!");
         break;
        }
/*
         if(deal_comment!="end of test")
            {
            return;
            }
            */
     }
//---

   return;

  }