MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 690

 
こんばんは。
 if(count==0)comment+="No symbols for trading!";
      Comment(comment);
      MqlTick tick;
      tick.ask=SymbolInfoDouble(structPairs.name,SYMBOL_ASK);
      tick.bid=SymbolInfoDouble(structPairs.name,SYMBOL_BID);
      tick.time=TimeCurrent();
      Trade(false,structPairs, tick, Orders, inputs);
このコードには何が書かれているのでしょうか?いつ頃登場するのでしょうか?リスト内のすべてのペアが存在し、すべての履歴が読み込まれています。
 
Darirunu:
こんばんは。このコードには何が書いてあるのでしょうか?いつ頃登場するのでしょうか?すべてのペアがリストに表示され、すべての履歴が読み込まれます。

投資家パスワードは?

 
Darirunu:
こんばんは、このコードには何と書いてありますか?いつ頃登場するのでしょうか?リスト内のすべてのペアが存在し、すべての履歴が読み込まれています。
何らかのカウンタが0であった場合(前回の実行結果だと思われる)、コメントに一行が追加される
No symbols for trading!

あとはいつも通り...。

 
Taras Slobodyanik:

ありがとうございました。

2本目のバー上にオブジェクトが存在しないことを確認する

         for(int jj=i;jj<obj_total;jj++)
           {
            nameARs=ObjectName(jj);
            if(ObjectType(nameARs)!=OBJ_RECTANGLE) continue;
            if(StringFind(nameARs,"QUADRO",0)!=-1)
              {

               time_ars=ObjectGetInteger(0,nameARs,OBJPROP_TIME);//break;

              }
           }
         //===---===
         if(time_ars!=Time[i+2])
           {
           //....
           }
10本のバー上にオブジェクトがないことを確認するにはどうすればよいですか?
 

指標となる。

各バーについて、強気バーのサイズの合計と弱気バーのサイズの合計を計算します。

バッファには、これらの合計の差を書き込む。

ここで何が問題なのか?

int counted_bars=IndicatorCounted(),
       limit;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   double up_sum=0, down_sum=0;
   for(int i=0;i<limit;i++)
   {
      for(int f = 0; f < Period; f++){
         if(close[f] - open[f] > 0) up_sum += close[f] - open[f];
         if(close[f] - open[f] < 0) down_sum += MathAbs(close[f] - open[f]);
      }
      PVTBuffer[i]=up_sum-down_sum;
   }
 
Roman Sharanov:

指標となる。

各バーについて、強気バーのサイズの合計と弱気バーのサイズの合計を計算します。

バッファには、これらの合計の差を書き込む。

ここで何が問題なのか?

転送

double up_sum=0, down_sum=0;

第1サイクルの内側で、第2サイクルを発表する前に。

 
Roman Sharanov:

指標となる。

各バーについて、強気バーのサイズの合計と弱気バーのサイズの合計を計算します。

バッファには、これらの合計の差を書き込む。

ここで何が問題なのか?

変数up_sum=0, down_sum=0を リセットしてみてください

の前に、2番目の内部ループがあります。

int counted_bars=IndicatorCounted(),
       limit;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   double up_sum, down_sum;
   for(int i=0;i<limit;i++)
   {
    up_sum=0; 
    down_sum=0;
      for(int f = 0; f < Period; f++){
         if(close[f] - open[f] > 0) up_sum += close[f] - open[f];
         if(close[f] - open[f] < 0) down_sum += MathAbs(close[f] - open[f]);
      }
      PVTBuffer[i]=up_sum-down_sum;
   }

このように

 
Alekseu Fedotov:

up_sum=0、down_sum=0に リセットしてみてください

の前に、2番目の内部ループがあります。

このように

をしたところ、たしかに意味はあるのですが、今は全く表示されなくなりました

 
Ghabo:

ありがとうございました。

2本目のバー上にオブジェクトが存在しないことを確認する

10本のバー上にオブジェクトがないことを確認するにはどうすればよいですか?

オブジェクトの正確な名前を作る方法がわかっていれば、チャート上のすべてのオブジェクトを調べても意味がありません。
これらの(仮称)名称を調べれば十分である。

for(int i=0;i<10;i++)
   {
   if (ObjectFind(0,"QUADRO"+Time[i])<0)
      Print("Нет объекта на баре № ",IntegerToString(i));
   else
      Print("Найден oбъект на баре № ",IntegerToString(i));
   }
 
Roman Sharanov:

そうしたら、たしかに意味はあるのですが、今はまったく表示されなくなりました

はい、またこのように、修正します。

インナーループで

for(int f = 0+i; f < Period+i; f++)