战略展望系统 - 页 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)价格值来计算一个或多个n个指标值的方案。

如果计算值窗口的过去值没有变化,那么在计算(内部)中,你可以按以下步骤进行

-只计算新值(一个)。

-将计算值窗口(有结果的数组)向左移动1个索引。

-在结果数组的 最后一个索引 中写入一个新值。


我不知道这是否清楚。代码是在MQL5中,我不知道4,但我想应该是类似的。

 
-Aleksey-:

...

谢谢,我会研究的。
 
Risk:

管理员们,绝对的权力导致独裁。即使是我们政治上正确的Timbo也无法忍受这种混乱的局面,而去了某个地方:)

必须有一个反对派,至少有时会把一切都放在它的位置上,但在这里,不清楚是谁认真地定义了数学的部分,而他们没有学童的帮助就不能关闭秩序。明天会发生什么?

如果你是反对派,我就是教皇。你不给作者说一句话,你的帖子里没有任何内容。有真正的反对,而且是建设性的反对。而巨魔不可能成为反对派,他们是纯粹的话题破坏者。
你是为另一个禁令而提出的。
 
rulabs:
谢谢你的主题。如果你有什么需要,请务必提出。
在与同事争论的时候,我几乎错过了一个发自内心的帖子。这个网站上的每个人都做出了不同的贡献,所以我不能完全接受 "感谢"--如果一个主题变得有趣,这要感谢所有的参与者 :o)
 

为了保持这个话题的活力:)

在莫斯科时间周一上午11:15,在没有任何分析的情况下,我在MT5中观察到了配对(我应该习惯它)。

我没有打开欧元兑美元和英镑兑美元,因为它们显示的是平盘。 不过我还是要坚持到星期五,我应该好好看看,可能每天都会纠正。

如果有人感兴趣,你可以观看。

登录:729566

投资者: iuj2seh