エラー、バグ、質問 - ページ 422

 
テスターでビルド468にアップグレードした後、[取引不可]と診断された取引が処理されなくなる。チャンピオンシップ アカウント2010で テスト中。
Automated Trading Championship 2010
  • championship.mql5.com
Automated Trading Championship 2010
 

フォーラムの皆さん、こんにちは。

よろしくお願いします。なぜかインジケーターがチャートに表示されないのですが、どこでエラーになっているのでしょうか?

一般的には、このようにチャート上に表示されるはずです。

ただ、このインジケーターのウィンドウには何も表示されません。MT4です。

以下は、インジケーターのコードです。コードか何かに間違いがあるのでしょうか?

//+------------------------------------------------------------------+
//|                                                        Bands.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Blue
#property indicator_color2 Yellow
#property indicator_color3 Red
//---- indicator parameters
extern int    BandsPeriod=50;
extern int    BandsShift=0;
extern double BandsDeviations=2.0;
extern int    TrendBars = 10;
extern bool EnableTextDisplay = true;
//---- buffers
double MovingBuffer[];
double UpperBuffer[];
double LowerBuffer[];
double HighTrend[];
double LowTrend[];
double MidTrend[];

//bool DisplayText = false;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MovingBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,UpperBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,LowerBuffer);
   SetIndexBuffer(3,HighTrend);
   SetIndexBuffer(4,LowTrend);
   SetIndexBuffer(5,MidTrend);
   
//----
   SetIndexDrawBegin(0,BandsPeriod+BandsShift);
   SetIndexDrawBegin(1,BandsPeriod+BandsShift);
   SetIndexDrawBegin(2,BandsPeriod+BandsShift);
//----
   if(EnableTextDisplay)
   {
      DisplayLabel_1();
      DisplayLabel_2();
      DisplayLabel_3();
   }
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Bollinger Bands                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int    i,k,counted_bars=IndicatorCounted();
   double deviation;
   double sum,oldval,newres;
//----
   if(Bars<=BandsPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=BandsPeriod;i++)
        {
         MovingBuffer[Bars-i]=EMPTY_VALUE;
         UpperBuffer[Bars-i]=EMPTY_VALUE;
         LowerBuffer[Bars-i]=EMPTY_VALUE;
        }
//----
   int limit=Bars-counted_bars;
   if(counted_bars>0) limit++;
   for(i=0; i<limit; i++)
      MovingBuffer[i]=iMA(NULL,0,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i);
//----
   i=Bars-BandsPeriod+1;
   if(counted_bars>BandsPeriod-1) i=Bars-counted_bars-1;
   while(i>=0)
     {
      sum=0.0;
      k=i+BandsPeriod-1;
      oldval=MovingBuffer[i];
      while(k>=i)
        {
         newres=Close[k]-oldval;
         sum+=newres*newres;
         k--;
        }
      deviation=BandsDeviations*MathSqrt(sum/BandsPeriod);
      UpperBuffer[i]=oldval+deviation;
      LowerBuffer[i]=oldval-deviation;
      i--;
     }
//----

   double TestVal1 = 0;
   double TrendValueHigh = 0;
   for(i=0;i<TrendBars;i++)
   {
         TestVal1 = UpperBuffer[i] - UpperBuffer[1+1];
         TrendValueHigh = TrendValueHigh - TestVal1;

   }
   double TrendValueLow = 0;
   for(i=0;i<TrendBars;i++)
   {
         TestVal1 = LowerBuffer[i] - LowerBuffer[1+1];
         TrendValueLow = TrendValueLow - TestVal1;

   }   
   double TrendValueMid = 0;
   for(i=0;i<TrendBars;i++)
   {
         TestVal1 = MovingBuffer[i] - MovingBuffer[1+1];
         TrendValueMid = TrendValueMid - TestVal1;

   }  
   
   
   MidTrend[0] = TrendValueMid * 1000;
   HighTrend[0] = TrendValueHigh * 1000;
   LowTrend[0] = TrendValueLow * 1000;


   if(EnableTextDisplay)
   {
      ObjectSetText("Label_Message1","High " + DoubleToStr(HighTrend[0], 2),14,"Arial",Yellow);
      ObjectSetText("Label_Message2","Mid " + DoubleToStr(MidTrend[0], 2),14,"Arial",Yellow);
      ObjectSetText("Label_Message3","Low " + DoubleToStr(LowTrend[0], 2),14,"Arial",Yellow);
   }


   return(0);
  }
  
  int  DisplayLabel_1()  
{
   ObjectCreate("Label_Message1", OBJ_LABEL, 0, 0, 0);// Creating obj.
   ObjectSet("Label_Message1", OBJPROP_CORNER, 1);    // Reference corner
   ObjectSet("Label_Message1", OBJPROP_XDISTANCE, 10);// X coordinate
   ObjectSet("Label_Message1", OBJPROP_YDISTANCE, 15);// Y coordinate

   ObjectSetText("Label_Message1","",14,"Arial",White);
   
   return(0);      
}
int  DisplayLabel_2()  
{
   ObjectCreate("Label_Message2", OBJ_LABEL, 0, 0, 0);// Creating obj.
   ObjectSet("Label_Message2", OBJPROP_CORNER, 1);    // Reference corner
   ObjectSet("Label_Message2", OBJPROP_XDISTANCE, 10);// X coordinate
   ObjectSet("Label_Message2", OBJPROP_YDISTANCE, 35);// Y coordinate

   ObjectSetText("Label_Message2","",14,"Arial",White);
   
   return(0);      
}
int  DisplayLabel_3()  
{
   ObjectCreate("Label_Message3", OBJ_LABEL, 0, 0, 0);// Creating obj.
   ObjectSet("Label_Message3", OBJPROP_CORNER, 1);    // Reference corner
   ObjectSet("Label_Message3", OBJPROP_XDISTANCE, 10);// X coordinate
   ObjectSet("Label_Message3", OBJPROP_YDISTANCE, 55);// Y coordinate

   ObjectSetText("Label_Message3","",14,"Arial",White);
   
   return(0);      
}

//+------------------------------------------------------------------+
 

申し訳ありませんが、MT4のホームページをご覧ください。

http://forum.mql4.com/ru/


MT5です。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


どなたか、binファイルの 最大許容サイズを教えてください。

25mで3,000万円なので、読書用にアドバイザーが開けるかもしれません。

25メートル、300万個の数値は読み取れないが、500.000個の数値は読み取れるということでしょうか。

MQL4: форум по механическим торговым системам и тестированию стратегий
  • www.mql5.com
MQL4: форум по механическим торговым системам и тестированию стратегий
 
Im_hungry:

申し訳ありませんが、MT4のホームページをご覧ください。

https://www.mql5.com/ru/forum


MT5です。

ありがとう、行ってみるよ。
 
Im_hungry:

どなたか、許容されるbinファイルサイズの最大値を教えてください。

を読み取るためにExpert Advisorで開くことができるため、25mで3mln.

が開こうとしないが、50万値で開く?

開発者の皆様へ。ドキュメントには、ファイルサイズの 制限に関する記述はありません。
 
Im_hungry:


どなたか、許容されるbinファイルサイズの最大値を教えてください。

を読み取るためにExpert Advisorで開くことができるため、25mで3mln.

が開こうとしないのですが、50万値で開くのでしょうか?

ファイルが配列に読み込まれるのでしょう?- ほとんどの場合、RAMが足りないだけです。
 
文字列


Print((int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR)," ",(int)ChartGetInteger(0,CHART_VISIBLE_BARS));

ほとんど同じ値(差は1本だけ)が返ってくるのですが、どうしてでしょうか?

2011.06.18 00:03:45     CHFJPY (CHFJPY,M15)     384 385

考え方としては、一方の関数は現在のチャートに表示するバーの数(例えば5000本)を返し、もう一方は画面に収まる数(私の場合は380本強)だけを返せばよいのです。

ビルド466、フル7 x64

 
olyakish:
ライン


ほとんど同じ値(差は1本だけ)が返ってくるのですが、どうしてでしょうか?

考え方としては、一方の関数は現在のチャートで表示するバーの総数(例えば5000本)を返し、もう一方は画面に収まる数(私の場合は380本強)だけを返せばよいのです。

Build 466、Fortock OS 7 x64。

そうなんです。表示されているバーの 数。
ChartGetInteger(0,CHART_VISIBLE_BARS)

は、常に最初の(左側の)可視バーの数より1多い。

ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR)

最後のバー(右)は0番です。

グラフがスクロールされない限り。チャートが「スクロール」している場合、<最初に見えるバーの数> = <見えるバーの数> + <バー単位でのチャートの移動量>-1 となります。

そして、あなたが書くもの。

...現在のチャートに表示するバーの数(例:5000本)...

はちょっと違いますね。

TerminalInfoInteger(TERMINAL_MAXBARS);   // Максимальное количество баров на графике
 

ファイルサイズが 開かないことについて、2010年と2009年の2008年は開きたくありません。

このコードで作成したファイルを開こうとすると、エラーメッセージが表示され続けます。

2 значения - первое целое (хранит время в секундах)

второе дробное (цену или еще что),


Когда время (т.е. секунды) в файле совпадает с временем, текущим, используем второе значение

и выводим его. Все это я реализовал следующим образом - работает без косяков - пока :-)


double proverka()
{
 handle= FileOpen("kor.bin", FILE_BIN|FILE_READ);
 if(handle<0) Print("-----Неоткрывается :-)");
 ulong file=FileSize(handle);
 ulong N = 0.0;
 double kor = 0.0;
 datetime bar[1];
 CopyTime(Symbol_1,NULL,0,1,bar);
 ulong New = (ulong) bar[0];
 while (N < file)
  {
   kor=FileReadDouble(handle); 
   N = FileTell(handle);
   if (kor == New) 
    {
     double ss = FileReadDouble(handle);
     FileClose(handle);
     return (ss);
     break;
    }
  } 
 FileClose(handle);
 return (kor);
}

2011, 01, 01以外の時間間隔では開きません。

どのような問題ですか?

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
uncleVic:

は少し違います。


それじゃダメだと思うんです。

TerminalInfoInteger(TERMINAL_MAXBARS); 

例えば、設定で50000本にチェックを入れているのに、実際には11375本が読み込まれています。


その方法

PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,);


そして、ここでどの数字を使うか。

ZS ここで、Initの内容を説明します。

   SetIndexBuffer(0,CHF,INDICATOR_DATA);
   PlotIndexSetString(0,PLOT_LABEL,"CHF");
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrMagenta);
   ArraySetAsSeries(CHF,true);
   ArrayInitialize(CHF,EMPTY_VALUE);
   //PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,);

そして、歴史の中のゴミが片付かない...。