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

 
Tapochun:
ありがとうございます。とにかくOnTrade()とOnTradeTransaction()は使えないという理解でよろしいでしょうか?
ちゃんと理解しているんですね。無理でしょう。
 

1.ある端末で言語を変更すると、他の端末を再起動するとすべて変更されるのはなぜですか?

詳細:10台のMT4/765端末を稼働させ、そのうちの1台の言語をロシア語から英語に変更し、再起動させました。他の端末を再起動すると、その端末の言語も変わります

2.インジケータ、Expert Advisor、チャートの設定など、プロファイルを変更しても自動的に記憶されないのはなぜですか?

具体的には、昨日、プロファイルを設定し、その上で取引したところ、今日、ブラックアウトしてしまい、端末を再起動したところ、変更が保存されておらず、変更前のものだけがダウンロードされました。
10分ごと、1時間ごとなど、一定時間が経過すると自動的にプロファイルを記憶するようにするとよいでしょう。

 
Novikov:

2.インジケータ設定、Expert Advisor、チャートなど、プロファイルに変更が加えられたときに、プロファイルが自動的に記憶されないのはなぜですか?

プロファイルは、アプリケーションを通常終了するときに保存されます。
保存する必要がある場合は、ターミナルを閉じてから再度開くと、幸せになれますよ :)
 
fyords:
プロファイルは、アプリケーションを通常終了するときに保存されます。
保存する必要がある場合は、ターミナルを閉じてから再度開くと、幸せになれますよ :)

「あなたなしでどうすればいいのか」:)

3.見積もりはどこに行くのですか?

RENCOチャートを作成するためにm1クォートをダウンロードすると、ターミナルの不正なシャットダウン(停電)の後、クォートを再読み込みする必要があります。

 
アンドロイド携帯から他の人のプロフィールにアクセスしたとき、メッセージを書くボタンがないのはなぜですか? メッセージのうち、新しい通信相手のユーザー名を入力しなければならないのですが.これは非常に不便だ...
 
Novikov:

「あなたなしでどうすればいいのか」:)

3.見積もりはどこに行くのですか?

RENCOのチャートを作るためにm1の気配値をダウンロードするのですが、端末が不正終了(停電)した後、気配値を再読み込みしなければならないのです

すべての変更が正しいシャットダウンで保存されるとのことですが・・・。ダウンロードした見積書を含む
 

構造体メンバは、例えばこのようにインジケータバッファとして使用できないことは理解しています。

struct Buffers
{
    double buffer [];
};

が、では数十個のバッファが必要な場合はどうするかというと、こうはいかないのです。

struct Buffers
{
    double buffer [];
};

Buffers IndBuff;

void Func()
{
  IndBuff[0].buffer[0]=3.1415926;
}
 
paladin800:
ああ、この機能は私も偶然見つけたんだ。外部パラメータの変数の1つを午前4時、もう1つを午後5時にして、TimeGMT()の結果をそれと比較するだけの方法がわかりません。

しばらく覗いてない。

午前4時は04:00
5PMは17:00

 
joo:

私の理解では、構造体メンバを インジケータバッファとして使用することはできません。

可能
 
joo:

構造体メンバは、例えばこのようにインジケータバッファとして使用できないことは理解しています。

しかし、数十個のバッファが必要で、このように動作しない場合はどうすればよいのでしょうか。

このような例を、著者は不明だが、見つけた。)

//+------------------------------------------------------------------+
//|                                                  EMA_Rainbow.mq5 |
//|                                       Copyright 2012, MetaDriver |
//|                                            MetaDriver@rambler.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaDriver"
#property link      "MetaDriver@rambler.ru"
#property version   "1.00"
//---
#define  CountLine  50
//---
#property indicator_chart_window
#property indicator_buffers CountLine
#property indicator_plots   CountLine

//--- Внешние параметры
input int   FastPeriod   =5;
input int   PeriodStep   =5;
input color FastColor    =clrAqua;
input color MiddleColor  =clrDodgerBlue;
input color SlowColor    =clrBlue;
input color LFastColor   =clrYellow;
input color LMiddleColor =clrOrange;
input color LSlowColor   =clrOrangeRed;
//--- 
struct SBuffer
  {
   double            B[];
  };
//--- indicator buffers
SBuffer       EmaBuffer[CountLine];
//---
color Colors[CountLine];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   InitColors();
//---
   for(int i=0; i<CountLine; i++)
      InitBuffers(i);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total,
                const int    prev_calculated,
                const int    begin,
                const double &price[])
  {
//---
   int limit=rates_total-prev_calculated;
//---
   if(limit==1)
      limit++;
//---
   if(prev_calculated==0)
     {
      limit-=begin+1;
      for(int i=0; i<CountLine; i++)
         EmaBuffer[i].B[limit]=price[limit];
     }
//---
   if(limit!=0)
     {
      for(int i=0; i<CountLine; i++)
        {
         double p=2./(FastPeriod+PeriodStep*(CountLine-i)+1);
         //---
         for(int j=limit-1; j>=0; j--)
            EmaBuffer[i].B[j]=price[j]*p+EmaBuffer[i].B[j+1]*(1.-p);
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Инициализация цветных буферов                                    |
//+------------------------------------------------------------------+
void InitColors()
  {
   int Half=CountLine/2;
//---
   for(int i=0; i<Half; i++)
     {
      if(i%4==3)
         Colors[i]=MixColor(LSlowColor,LMiddleColor,i*1.0/Half);
      else
         Colors[i]=MixColor(SlowColor,MiddleColor,i*1.0/Half);
     }
//---
   for(int i=Half; i<CountLine; i++)
     {
      if(i%4==3)
         Colors[i]=MixColor(LMiddleColor,LFastColor,(i-Half)*1.0/Half);
      else
         Colors[i]=MixColor(MiddleColor,FastColor,(i-Half)*1.0/Half);
     }
  }
//+------------------------------------------------------------------+
//| Определение цвета                                                |
//+------------------------------------------------------------------+
color MixColor(color A,color B,double mix)
  {
   int r = (int)MathRound((B     & 0xFF) * mix + (A     & 0xFF) * (1. - mix));
   int g = (int)MathRound((B>>8  & 0xFF) * mix + (A>>8  & 0xFF) * (1. - mix));
   int b = (int)MathRound((B>>16 & 0xFF) * mix + (A>>16 & 0xFF) * (1. - mix));
   return color(r|g<<8|b<<16);
  }
//+------------------------------------------------------------------+
//| Инициализация индикаторных буферов                               |
//+------------------------------------------------------------------+
void InitBuffers(int index)
  {
   SetIndexBuffer(index,EmaBuffer[index].B,INDICATOR_DATA);
   PlotIndexSetInteger(index,PLOT_DRAW_TYPE,DRAW_LINE);
   PlotIndexSetInteger(index,PLOT_LINE_COLOR,Colors[index]);
   PlotIndexSetDouble(index,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---
   if(index%8==7) PlotIndexSetInteger(index,PLOT_LINE_WIDTH,1);
  }
//+------------------------------------------------------------------+