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

 
vld:
私は端末のデータウィンドウについて話して いたのですが、他はだいたいわかります)

ローソク足の日時とインジケーターの読み取りを 確認したいわけですね。
 
AlexeyVik:

ローソク足やインジケーターの読み取り日時を確認したいわけですね。

ギミックだが、さあ)

キャンドルにカーソルを合わせると、そのまま日付と時刻が表示されるんです。私がいる時間間隔の境界のインジケーターの読み方

時間間隔のバーとその終了までの日数など(秒単位でカウントして表示されます)。

はい、そして私は引用符の日付によって持っていることTime[0]、Time[Bars-1]。

不要なジャークを避けるため)

 
vld:

ギミックだが、さあ)

キャンドルにカーソルを合わせると、そのまま日付と時刻が表示されるんです。私がいる時間間隔の境界のインジケーターの読み方。

時間間隔のバーとその終了までの日数など(秒単位でカウントして表示されます)。

はい、そして私は引用符の日付によって持っていることTime[0]、Time[Bars-1]。

不必要なジャークがないように)


ギャグではなく、理解不能の驚きなのだが。
 

start() 関数は、以前はint 型でした。現在はボイドタイプ です。そんなものがあるんですね。以前は、start()関数が失敗したら終了させるのが便利でした。しかし、今はそれほど便利ではありません。以前書いていた様子がわかる、古代のフクロウを1枚撮ってみました。

void OnTick()
{
//---
   if (gdt_lastBarTime != Time[0])      // Если открылся новый бар, отрабатываем требуемые действия
   {
      int signal = GetGeneralSignal();
   
      if (signal != SIGNAL_NO)
          if (!Trade(signal))
              return (0);
          
      // Блок управления позициями   
      for (int li_Ord = OrdersTotal()-1; li_Ord >= 0; li_Ord--)
      {
         if (!OrderSelect(li_Ord, SELECT_BY_POS)) continue;
         if (OrderMagicNumber() != ii_Magic) continue;
         if (OrderSymbol() != Symbol()) continue;
       
          SPos.gi_CurTicket = OrderTicket();
          SPos.gi_Type = OrderType();
       
          // Блок модификации ордеров       
          if (id_SL != 0 || id_TP != 0)
          {
             if (OrderStopLoss() == 0 && OrderTakeProfit() == 0)
             {
                OrdersModifyer (ticket);
             }
          }
          // Блок перевода ордеров в б.у.
          if (OrderStopLoss() <= gd_PriceBU)
          {
             if (OrderType() > 1) continue;
             MovingStopLossToBU();
          }
          // Блок траала открытых ордеров
          if (OrderStopLoss() > gd_PriceBU)
          {
             TrailingStop();
          }

          // Удаление просроченных отложенных ордеров
          if (OrderOpenPrice() < Time[0])
          {
             DeletePendingOrders();
          }
      }
      
      gdt_lastBarTime = Time[0];     // На текущем баре все необходимые действия..
                                     // .. успешно выполнены
   }
}

基本的には、gdt_LastBarTime 変数で、新しいバーの開始を制御しています。昔は違ったんです。こんな風に書きました。

if (gdt_lastBarTime == Time[0]) return (0)

それ以上の操作は省いていました。今、これを実装するとどう便利になるのでしょうか?値を返す可能性がないため。条件を入力すれば、そこで何が起ころうと、関数は最後まで行き、gdt_lastBarTime 変数が新しい値を取得することがわかりました。要は、ティックごとに 端末にリクエストを送るのはNGということです。そのため、このケースをより正確に限定する必要があります。また、例えばint関数やboolean関数のように、関数を終了できない場合は、とにかく動作することを意味します。

 
hoz:

start() 関数は、以前はint 型でした。現在はボイドタイプ です。そんなものがあるんですね。以前は、start()関数が失敗したら終了させるのが便利でした。しかし、今はそれほど便利ではありません。以前書いていた様子がわかる、古代のフクロウを1枚撮ってみました。

基本的には、gdt_LastBarTime 変数で、新しいバーの開始を制御しています。昔は違ったんです。こんな風に書きました。

それ以上の操作は省略した。今、これを実装するとどう便利になるのでしょうか?値を返す可能性がないため。条件を入力すれば、そこで何が起ころうと、関数は最後まで行き、gdt_lastBarTime 変数が新しい値を取得することがわかりました。要は、ティックごとに端末にリクエストを送るのはNGということです。そのため、このケースをより正確に限定する必要があります。また、例えばint関数やboolean関数のように、関数を終了できない場合は、とにかく動作することを意味します。

パラメータがない ことの何がいけないのでしょうか?
 
evillive:
パラメータなしのリターンは 、満足のいくものではありません。
そこで一区切り。
 

インジケータ・バッファの 使用について質問があります。例えば、別のウィンドウにある2つのバッファがヒストグラムを描画するとします。1枚目はノミナル値、2枚目はピーク値を示しています。
プログラム上、外部インジケータ(ウィザードなど)による第2バッファの使用を禁止する、つまり、チャート上に必要な値を表示するためだけに使用し、ユーザーがチャート上にオーバーレイ表示する外部インジケータからは見えないようにすることは可能でしょうか。

 
atztek:

外部インジケータ(ウィザードなど)による第2バッファの使用をプログラム的に禁止する、つまり、チャート上に必要な値を表示するためにのみ使用し、ユーザーがチャート上にオーバーレイ表示する外部インジケータからは見えないようにすることは可能でしょうか。

いいえ、目に見えるものはすべてプログラムで読み出すことができます。
 
TheXpert:
いいえ、目に見えるものであれば、プログラムによって数えることができます。

なるほど。
ありがとうございました。
 

2次元目のサイズを定数ではなく変数に設定することで、2次元配列を作成することは可能ですか?