戦略的予見システム - ページ 39

 
-Aleksey-:
条件付き指標の値は、その時々のチャート上のすべてのローソク足に対して必要なのか、それとも最近のローソク足のうちの一定数に対して必要なのか、明確にするための質問です。
できれば、何らかのウィンドウで設定された最後のものに対して。
 

以下は、私が作成したコードの一部です。閉じるときに問題が発生したことはない(少しいじりました)

int i, total = OrdersTotal(), slippage = 50;

bool Ans;
for (i = total-1; i >=0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()){
if(OrderType()==OP_BUY)です。{
Print("CLOSE BUY");
Ans = false;
while(Ans==false) {
Ans = OrderClose(OrderTicket(),OrderLots(),Bid, slippage, DodgerBlue);
Sleep(1000);
RefreshRates();
}.
}
if(OrderType() == OP_SELL) {
Print("CLOSE SALE");
Ans = false;
while(Ans==false) {
Ans = OrderClose(OrderTicket(),OrderLots(),Ask, slippage, Orange);
Sleep(1000);
RefreshRates();
} ...
}
}
}

 
rulabs:

以下は、私が作成したコードの一部です。閉じるときに問題が発生したことはない(少しいじりました)

...

本当にありがとうございました!!!試してみます。
 
Farnsworth:
本当にありがとうございました!!!試してみます。
スレッドをありがとうございました。必要なことがあれば聞いてください。
 
Farnsworth:
後者については、何らかのウィンドウで設定されていることが望ましい。

私はこのように実装しています。

//---начало блока глобальных переменных---------------
int GLOBAL_DATA_LIMIT;
bool first_run=true;
//---конец блока глобальных переменных
//++++++++++++++++++++++++++++++++++++
//---начало блока инициализации
void OnInit()
   {
      GLOBAL_DATA_LIMIT= расчет числа данных(длины окна данных), необходимых для расчета окна условного индикатора заданной длины
      ....инициализация
  }
//---конец блока инициализации индикатора
//+++++++++++++++++++++++++++++++++++++++
//---начало блока обновления индикатора--
int OnCalculate (
                  const int rates_total,      // current size of the timeseries array
                  const int prev_calculated,  // size of the timeseries array got by reurn value the last time
                  const datetime& time[],     // Time
                  const double& open[],       // Open
                  const double& high[],       // High
                  const double& low[],        // Low
                  const double& close[],      // Close
                  const long& tick_volume[],  // Tick Volume
                  const long& volume[],       // Real Volume
                  const int& spread[]         // Spread
                )
   {
      if(rates_total<0)
      {
         printf("На графике отсутствуют исторические данные");
         return(0);
      }
      if(rates_total<GLOBAL_DATA_LIMIT)
      {
         printf("Недостаточно исторических данных, необходимое количество: "+string(GLOBAL_DATA_LIMIT));
         return(0);
      }
      if(prev_calculated==0) // срабатывает при первом запуске, или когда история поменялась
      {
         if (first_run==true) первый расчет при запуске - в момент первого тика после инициализации
         *{
            ArrayCopy(cur_price_array, close, 0, (rates_total-1)-GLOBAL_DATA_LIMIT, GLOBAL_DATA_LIMIT); - копируем в массив необходимое количество значений цены
            ...
            Со скопированным массивом проводим расчет
            Отображаем результат
            ...   
            first_run=false;
         *}
         else расчет на каждом тике
         {
         в это место вставить код *(без first_run=false;), если считать на каждом тике. Если считать не на каждом тике, а по новому бару, то вставить * в функцию isNewBar
         }         
      }
      
      if(isNewBar(_Period)) расчет на каждом баре
      {
          *{
                      ArrayCopy(cur_price_array, close, 0, (rates_total-1)-GLOBAL_DATA_LIMIT, GLOBAL_DATA_LIMIT); - копируем в массив необходимое количество значений цены
                      ...
                      Со скопированным массивом проводим расчет
                      Отображаем результат
                      ...
         *}
      }
      return(rates_total);
   } 
//---конец блока обновления индикатора---
 

各バーまたはティックにコピーされたm(GLOBAL_DATA_LIMIT)の価格値に基づいて、1つまたは複数のn個の指標値を計算する方式です。

計算値ウィンドウの過去の値が変化しない場合、計算(内側)では、以下のように進めることができます。

-新しい値(1つ)だけを計算します。

-計算値ウィンドウ(結果を含む配列)をインデックス1つ分左にシフトします。

-結果配列の 最後のインデックスに 新しい値を書き込む。


クリアしているかどうかはわかりません。コードはMQL5で、4は知りませんが、似たようなものでしょう。

 
-Aleksey-:

...

ありがとうございます、調べてみます。
 
Risk:

アドミン、絶対的な権力は独裁につながる。政治的に正しいティンボも、このマラスムスに耐え切れず、どこかに行ってしまいました :)

少なくとも時には、すべてをその場に収める反対派がいるはずだが、ここでは、誰が本気で数学のセクションを定義しているのか不明であり、一方で、小学生の力を借りなければ秩序を閉じることができない。明日はどうなるんだろう?

あなたが野党なら、私はローマ法王です。作者に言葉を与えないし、投稿の内容もゼロだ。本当の意味での反対があり、建設的に反対しているのです。そして荒らしは反対派にはなれない、純粋に話題の破壊者です。
あなたは再び禁止されるために提示されます。
 
rulabs:
スレッドをありがとうございました。必要なものがあればお申し付けください。
同僚と口論している間に、心のこもった投稿を見逃すところでした。このサイトの参加者はみんな違うことをやっているので、「ありがとう」という言葉は受け取れないのですが、スレッドが面白くなれば、それは参加者全員のおかげです :o)
 

スレッドを存続させるために:)

月曜日のモスクワ時間午前11時15分に、何の分析もせずに、MT5で観測したペアをオープンしました(慣れるべきですね)。

EURUSDとGBPUSDは横ばいを示していたので、開かなかった。 金曜日まで我慢して、ちゃんと毎日見て、場合によっては修正した方がいいですけどね。

もし興味がある人がいたら、見てみてください。

ログイン:729566

投資家: iuj2seh