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

 
abeiks:

最後の既知のサーバー時間(TimeCurrent())から特定の日までの現在のチャートの何本のバーが その 日の最初のバーオープニング (TimeDay(Time[80]))までか?


iBarShiftが 役立つはずです
 
pu6ka:

iBarShiftが 役立つはずです

一日中格闘して、まだ成功しない。自分にとって間違った経験など。:)

どなたかこの機能を書いていただけませんか?

 
abeiks:

一日中格闘して、まだ成功しない。自分にとって間違った経験など。:)

どなたかこの機能を書いていただけませんか?

     int n = 0;                                           // индекс дня, в данном случае 0 - текущий день
datetime DayTime = iTime(NULL, PERIOD_D1, n);             // Начало дня "n" в секундах
     int cb = iBarShift(NULL,0,DayTime);                  // Получим на текущем ТФ индекс бара
 
Stells:

こんにちは。

この仕組みがよくわからない

03:00:24 '9473965': 注文 sell 0.01 GBPUSD opening at 0.00000 sl: 1.65314 tp: 0.00000 failed [Invalid S/L or T/P] (無効なS/LまたはT/P)。

このコードで

なぜオープニングがゼロなのか


今夜でしたか?その場合、ストップロスは始値より 下にある可能性が高く、売り注文の場合はストップロスの価格はより高くなければなりません。
 
pu6ka:


少し間違っていますね。このTimeDay(Time[80])関数から具体的に一日の始まり「n」を秒単位で取得する必要があるのですが、私にはうまくいきません。

 

穴埋め用の履歴を評価したかったのです。
これをやった。

int start() 
{
  if(Time[0] > prev_time ) 
  {
    if( iTime(NULL, PERIOD_M1,0)-iTime(NULL, PERIOD_M1,1) > 200000)
    {
      n=n+1;
      Print("n =",n ,"");
    }
    prev_time = Time[0];
  } 
  
  return (0);
}

iTimeは秒単位で、200,000=2.31日というのは正しい理解でしょうか?

このようなことは可能でしょうか?(動作しているようです、6個だけ検出されました)。

 
abeiks:

少し間違っていますね。このTimeDay(Time[80])関数から具体的に一日の始まり「n」を秒単位で取得する必要があるのですが、私にはうまくいきません。


具体的にはこの関数TimeDay(Time[80])から、さらに中間的な計算を する必要があります。まだTime[80]の バータイムがあるんですね。もっとシンプルに言えば、こうなる。

     int n = iBarShift(NULL,PERIOD_D1,Time[80]);          // индекс дня, которому принадлежит время бара - Time[80]
datetime DayTime = iTime(NULL, PERIOD_D1, n);             // Начало дня "n" в секундах
     int cb = iBarShift(NULL,0,DayTime);                  // Получим на текущем ТФ индекс первого бара дня "n"
 
sv.:

穴埋め用の履歴を評価することを考えていました。

とても便利なスクリプトを 紹介します。引用アーカイブがアップロードされている場合、設定をつつがなく行うために、2つのパラメータを変更する必要があります。スクリーンショットでは、赤枠で囲んでいます。

任意のチャートに投げて、数秒待つと、レポートが入ったファイルがあるメッセージが表示されます。

 
addict:

買い注文は一度だけ開くが、売り注文の数はまた無限大になる


次のような関数を書きます。

int start()

if( OrdersTotal()==0 && CountTrades()==0)

{

OrderSend ("EURUSD",OP_BUYLIMIT,l,1.36000,5,0,1.36000+tp*Point,"my order",1);

OrderSend ("EURUSD",OP_BUYSTOP,l,1.36000,5,0,1.36000+tp*Point,"my order",1);

さもなくば

{
OrderSend ("EURUSD",OP_SELLLIMIT,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
OrderSend ("EURUSD",OP_SELLSTOP,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
}

}

return(0)です。

}

//+------------------------------------------------------------------+

int CountTrades()

{

int count = 0;

for(int trade = OrdersTotal()-1; trade >=0; trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)。

if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

count++です。

}

}

return(count)です。

 
pu6ka:


具体的にはこのTimeDay(Time[80])関数から、さらに中間計算をする必要があるのです。バータイム[80]の時間が残っていますね。この方がやりやすいと思います。


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