どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 908

 
AlexeyVik:

すみません、失礼なことを言いました。なぜ、プログラミングをしようと思ったのですか?

しかし、ここには、何のために何があるのかを説明する代わりに、コードの断片を書き込む人がたくさんいるのです。私に譲ってください。

私は説明するのは好きですが、断片的に書くのは好きではありません。

了解!これでよしとする。ありがとうございます。

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Print(bar1); //1本目のバー
int MaxVol=0;
int i=0, n=0;
for (i=bar1; i>0; i--)
{
//if (i<bar);
//if (TimeMinute(Time[i])!=Minute())ブレーク。
if (iVolume(Symbol(),0,i)>MaxVol)とする。
{
MaxVol=iVolume(Symbol(),0,i)とする。
n=iです。
}
//Print(MaxVol," MaxVol ", n, " n");
}
datetime MaxVolT = iTime(NULL, PERIOD_M1, n);

 
sashasonik:

了解!それだけです。ありがとうございます。

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Print(bar1); //1本目のバー
int MaxVol=0;
int i=0,n=0;
for (i=bar1; i>0; i--)
{
//if (i<bar);
//if (TimeMinute(Time[i])!=Minute())ブレーク。
if (iVolume(Symbol(),0,i)>MaxVol)とする。
{
MaxVol=iVolume(Symbol(),0,i)とする。
n=iです。
}
//Print(MaxVol," MaxVol ", n, " n");
}
datetime MaxVolT = iTime(NULL, PERIOD_M1,n);

さて、ここでご紹介します。

これで、コードの削減と簡略化を考えることができます。

ここで、最初のバーを見つけました。つまり、これだけの数のバーを配列にコピーしなければならない。これにより、コードは3つの文字列に集約されます。

1.最初のバーを探す。

2. 最初の例のボリュームを配列にコピーします。

int  CopyTickVolume(
   string           symbol_name,      // имя символа
   ENUM_TIMEFRAMES  timeframe,        // период
   int              start_pos,        // откуда начнем (с нулевого или первого)
   int              count,            // сколько копируем(первым пунктом определили)
   long             volume_array[]    // массив для копирования тиковых объемов(предварительно объявляем массив глобального уровня или локального)
   );

3.ArrayMaximum(この配列から)


なぜ、n 変数を使うのかが不明です

 

名言集アーカイブをダウンロードしました。ここでは、あるエントリーの例を紹介します。
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
フィールドの見出しは以下の通り: lTid、cDealable、CurrencyPair、RateDateTime、RateBid、RateAsk
最初の2つのフィールドは何を意味するのでしょうか?

 
PostoronnimV:

名言集アーカイブをダウンロードしました。ここでは、あるエントリーの例を紹介します。
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
フィールドの見出しは以下の通り: lTid、cDealable、CurrencyPair、RateDateTime、RateBid、RateAsk
最初の2つのフィールドは何を意味するのでしょうか?

最初の3つの列は、MT4でクォートを作成するための実用的なアプリケーションではないので、安全に破棄することができます。
 

こんにちは。

Expert Advisorでは多くのブロックを使用しており、各ブロックには同じインジケータがあります。このインジケータをOnTick()で一度宣言しておけば、各ブロックで再度宣言する必要はないのでしょうか?

 
abeiks:

こんにちは。

Expert Advisorでは多くのブロックを使用しており、各ブロックには同じインジケータがあります。このインジケータをOnTick()で一度宣言しておけば、各ブロックで再度宣言する必要はないのでしょうか?

You can do it
 
具体例を挙げてください。
void OnTick()
{
double MA_High = iMA(NULL, 0, 9, 1, MODE_EMA, PRICE_LOW, cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
abeiks:
どうやって?例を示してください。
異なるコードレベルで宣言された変数の可視性については、マニュアルをお読みください。
double MA_High=0; 
void OnTick()
{
double  MA_High = iMA(NULL, 0, 9, 1, MODE_EMA, PRICE_LOW, cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
evillive:
異なるコードレベルで宣言された変数の可視性については、マニュアルをお読みください。
ありがとうございました。
 

こんにちは。

変数位置(intコマンドの後とメッセージの後)で、「文字列」から「数値」への暗黙の変換と「数値」から「文字列」への暗黙の変換という警告が出るのですが、同じ警告なのでしょうか? プログラムは苦手なのです。

また、もっと教えてほしいのですが、コードが動作しても警告が出るだけの場合は、ダメなのでしょうか?

そしてもう一つ、メッセージに現地時間を 入れるにはどうしたらいいのでしょうか?message= TimeLocal()+...と書いても、何も起こらない...。


コードスニペット

if(last_sell_1_price==0 || TimeCurrent()-last_sell_1_price>alarm_limit_notification*60)
                 {
                  Print("");
                  if(Session_Check())
                    {
            
//сооб sell

                     int sell1 = DoubleToStr( (Bid - Price_Line)/Point,0);
                     int sell2=DoubleToStr( (Bid - Price_Line2)/Point,0);
                     int rsi=DoubleToStr(ExtRSIBuffer[0] - Price_RSI_Line, 2);
                                  
                     message=
                     TimeCurrent()+"  (Level)"+"   \n"+
                     "\n"+
                     Symbol()+"  TF:"+TF_in_String()+"   \n"+
                     "Price: "+DoubleToStr(Bid,4)+"   \n"+
                     "sell_1: "+(sell1>0?"+":"")+sell1+"   \n"+
                     "sell_2: "+(sell2>0?"+":"")+sell2+"   \n"+
                     "RSI:  "+(rsi>0?"+":"")+rsi;
  
                     SendNotification(message);
                     Print(message);
                     if(mail_message==on)
                     SendMail(Symbol(),message);

                    }
                  last_sell_1_price=TimeCurrent();
                 }
              }