[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 227

 
oyshen >> :

我怎样才能选择最近2次已经关闭的交易(从账户历史列表中)?

它应该是这样的

如何写出正确的参数来选择?

最后两个订单的数字是OrdersHistoryTotal()-1和OrdersHistoryTotal()-2。


这里有一个测试的脚本

int start()
{
   int i, accTotal=OrdersHistoryTotal();
   for( i=0; i< accTotal; i++)
   {
     if(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)==false)
       {
        Alert("Ошибка при доступе к исторической базе (",GetLastError(),")");
        break;
       }
     Alert( i,":",TimeToStr(OrderCloseTime()));  
   }
}

>>祝你好运!

 
alsu >> :

代码是相当粗糙的。

见:i=Bars-Period1+1在循环的第一次迭代,我们得到k=i+Period1-1=Bars-Period1+1+Period1-1=Bars,然后Close[k],这意味着我们已经出了数组。

正确:i=Bars-Period1-1

..................

有没有什么方法可以找到close[i]/close[i+1]比率的最大值(最小值),但不使用数组?谢谢你!

 
Mr-Franklyn >> :

有没有什么方法可以找到close[i]/close[i+1]关系的最大值(最小值),但不使用数组?谢谢!

问题是在哪里写出将被搜索的最大值。这通常被称为数组:)ArrayMax(in)imum是最优的

 
alsu >> :

问题是在哪里写出将被搜索的最大值。这通常被称为数组:)阵列最大值--最佳的

如果你把它写进一个缓冲区呢?

 
Mr-Franklyn >> :

有没有什么方法可以找到close[i]/close[i+1]比率的最大值(最小值),但不使用数组?谢谢你!

如果我对这个问题的理解正确的话。你可以不使用close[i]进行实验,而是像这样。

макс= iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH, Cbar,0));
мин= iLow (NULL,0,iLowest (NULL,0,MODE_LOW, Cbar,0));  

其中,Cbar,--最后一个小节的数量,在其中寻找一个极值。

 
rid >> :

如果我对这个问题的理解正确的话。有可能不是用接近的方式进行实验,而是像这样。


其中Cbar是最后一个小节的数量,在其中寻找极值。

我感兴趣的是Prace[i]/Price[i+1]比率的绝对值。

 
Mr-Franklyn >> :

如果你把它放在一个缓冲区里呢?

缓冲区不是一个数组吗?

 
alsu >> :

缓冲区不是一个数组吗?

是的,但如果我写Buffer[i]=close[i]/close[i+1],然后使用iHighest函数,就没有任何效果!!!!。

 
Mr-Franklyn >> :

是的,但如果我写Buffer[i]=close[i]/close[i+1],然后使用iHighest函数,就不会发生任何事情!!!!。

因为iHighest 只适用于时间序列 对于其他数组,ArrayMaximum的类似物

 
double Buffer[];

int init()
{
   SetIndexBuffer(0, Buffer);
}

int start()
{
for( i= start; i>=0; i--)
{
   Buffer[ i]=Close[ i]/Close[ i+1];
   double max= Buffer[ArrayMaximum( Buffer, period, i)];
   double min= Buffer[ArrayMinimum( Buffer, period, i)];
   double stddev=iStdDevOnArray( Buffer, period,8,0,MODE_EMA, i);
//TODO
}
///TODO
}
原因: