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

 
evillive:

なぜ、余計な変数があるのでしょうか?ダイレクトチェックは問題なく動作します。

変数の作成は、ある関数を何度も呼び出す必要がないように、プログラム中の異なる地点からその値を確認したい場合に行う。
この変数は、初めての人にもわかりやすくするためのものです。何のためにあるのか、もうお分かりですか?
 
Vinin:
もっと頻繁にチェックしてください。質問も少なくなる。より良い知識が得られるでしょう。
無視する。
 

こんにちは。一日の終わりにどうにかしてポジションを閉じる必要がある(純粋にExpert Advisor;日足バー)。モデリングは、開口部によるものと、ティックによるものがある。すなわち、我々は、開口部のために解決するか、いくつかの15分の時間枠で前の日を分析し、現在のものの始まりと終わりをキャッチしようとして私たちの頭の上に転倒する。この問題に対する解決策はあるのでしょうか?仮想的にいくつかの選択肢があると思います。

1)任意の価格、任意のタイミングでポジションをハッキング決済 すること。仮に不公平だが、曲解することなく必要な価格でポジションを決済すればよいのだ。

2) 1本のバーの中で、オープニングとクロージングをシミュレートすること。つまり、最初にティックオープン、次にティッククローズ。

3) 一定時間(一日の終わりなど)に自動的に終了する注文を設定すること。

ご協力をお願いします。ありがとうございます。

 

バグ?

int OnInit()
  {
   int subwindow = ChartWindowFind(ChartID(),WindowExpertName());
   Print("Подокно запрашиваемого индикатора: ",subwindow);
   
   return(INIT_SUCCEEDED);
  }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   return(rates_total);
  }


2015.04.13 20:51:10.710 indi AUDJPY,H1: Requested indicator subframe: -1.


 
tuner:

バグ?


2015.04.13 20:51:10.710 indi AUDJPY,H1: Requested indicator subframe: -1.


いいえ、バグではありません。

戻り値

成功した場合のサブウィンドウの番号。ゼロはメインチャートウインドウを示します。失敗した場合は、-1を返す

 
AlexeyVik:

いいえ、バグではありません。


この関数に、インジケータが動作している現在のチャートのIDと、現在のチャートで動作しているインジケータの名前が渡された場合、どのような障害が発生するのでしょうか。
 
tuner:
この関数に、インジケータが動作している現在のチャートのIDと、現在のチャートで動作しているインジケータの名前を渡した場合、どのような障害が発生しますか?

もし私が正しく理解していて、添付のインジケータテストコードが動作するサブウィンドウの番号が必要なら、関数の 説明からすると、その2番目のバージョンを適用する方がよいでしょう。

テストコード(あなたのものに何行か追加しています)。

#define  LINE    __LINE__,": "
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   int subwindow=ChartWindowFind(ChartID(),WindowExpertName());
   Print(LINE,"Подокно запрашиваемого индикатора: ",subwindow);
   
   int subwindow1=ChartWindowFind();
   Print(LINE,"Подокно запрашиваемого индикатора: ",subwindow1);

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   return(rates_total);
  }
//+------------------------------------------------------------------+

ChartWindowFind() 関数のヘルプに、この件に関する良い例がまだあります(そこでのコメントという意味でも)。

//+------------------------------------------------------------------+
//| Сообщает номер окна графика с указанным индикатором              |
//+------------------------------------------------------------------+
int GetIndicatorSubWindowNumber(long chartID=0,string short_name="")
  {
   int window=-1;
//--- 
   if((ENUM_PROGRAM_TYPE)MQLInfoInteger(MQL_PROGRAM_TYPE)==PROGRAM_INDICATOR)
     {
      //--- функция вызвана из индикатора,имя не требуется
      window=ChartWindowFind();
     }
   else
     {
      //--- функция вызвана из эксперта или скрипта
      window=ChartWindowFind(0,short_name);
      if(window==-1) Print(__FUNCTION__+"(): Error = ",GetLastError());
     }
//---
   return(window);
  }
 
DiPach:

もし私が正しく理解していて、添付のインジケータテストコードが動作するサブウィンドウの番号が必要なら、関数の 説明からすると、その2番目のバージョンを適用する方がよいでしょう。

テストコード(あなたのものに何行か追加しています)。

ChartWindowFind() 関数のヘルプに、この件に関する良い例がまだあります(そこでのコメントという意味でも)。

しかし、私は少し異なるタスクを持っており、関数の2番目のバリアントを使用することは意味をなさない。この課題はすでに解決しているのですが、最初の変形版のChartWindowFind() を使って、結果のコードを単純化したいのですが、この関数は他のウィンドウだけでなく、現在のウィンドウでも機能しないことが判明しています。
 

こんばんは!(^o^)

スタート関数で、コンパイラは "return "を要求しています。

この場合、どのような値を返さなければならないか?

int start()
{
if (Orders!=0||Ord>0)
。{
CritCloseBuy();
CritCloseSell()です。
}
else
{
CritOpen();
}
return;
}.

OrderClose()でオープンポジションが 表示されないのは、これが原因でしょうか?

 
rapid_minus:

こんばんは!(^o^)

スタート関数で、コンパイラは "return "を要求しています。

この場合、どのような値を返さなければならないか?

int start()

OrderClose()でオープンポジションが表示されないのは、これが原因でしょうか?

void start()を作ればエラーにならない。