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

 
Stepan241 >> :

我正试图写一个指标。这个想法很简单:我们要取平均值(牛市的力量-熊市的力量)。自然,在一定时期内。



int start()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i)。
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i)。
MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_EMA,i)。
MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i)。
Buf_0[i]=MA_Bulls[i];
i--;
}
返回。
}

我只显示平滑的公牛Buf_0[i]=MA_Bears[i];这样做是为了在指数绘制的某个阶段进行控制。甚至不完全是这样。如果我用1的周期来平滑它们,它们事实上必须重复嵌入公牛。因此,我断定MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i); 我不明白到底是什么...帮助我!!!!已经翻阅了3天的手册和文件。谢谢你!


首先,形成牛市和熊市的数据阵列,然后用下一个周期熨平,但你还没有形成,已经应用了平滑,没有数据该怎么平滑?

 
Urain писал(а)>>

先形成牛市和熊市的数据阵列,然后用下一个周期来熨平它们,因为你还没有形成,已经在使用平滑,没有数据可以平滑?

翻译自

int start()
{
  int i, limit=Bars-IndicatorCounted()-1;
  for ( i= limit; i>=0; i--){
    Bears_array[ i]=iBearsPower(NULL,0, PeriodPower,PRICE_CLOSE, i);
    Bulls_array[ i]=iBullsPower(NULL,0, PeriodPower,PRICE_CLOSE, i);
  }
  for ( i= limit; i>=0; i--){
    MA_Bears[ i]=iMAOnArray( Bears_array,0, MA_Period,0,MODE_EMA, i); 
    MA_Bulls[ i]=iMAOnArray( Bulls_array,100, MA_Period,0,MODE_SMA, i); 
  }
  return;
}
 

costy_ писал(а) >>

extern string xxxxxxxxxxxxx="x=0 сегодня х=1 вчера итд";
extern int х=0;
int середина=(iHigh(0,PERIOD_D1, х)-iLow(0,PERIOD_D1, х))/2;
if(Bid> середина)...;
if(Ask< середина)...;


extern datetime some_time=D'14:56';
int середина_some_time=(iHigh(0,0,iBarShift(0,0, some_time))-iLow(0,0,iBarShift(0,0, some_time)))/2;
if(Bid> середина_some_time)...;
if(Ask< середина_some_time)...;

非常感谢你,我越来越接近了。有一点是不太清楚的。

'14:56'--日期字面字符串不完整这是我从电脑上得到的警告。

根据我的理解,它仍然想要日期,但我不需要具体的日期。 我需要的是每天将当前价格与同一天某个时间的价格进行比较。请澄清这一点。

 
alsu >> :

为什么你需要通过iCast打电话给他们呢?是为了统一吗?为他们每个人写一个单独的指标包装,并通过iCustom.com调用他们。

问题是,我已经改变了这两个指标(AO和AC),现在我想让条形图根据修改后的指标来着色。或者有什么其他方法吗?我最近刚刚开始MQL...

 
Necron >> :

问题是我已经重新做了两个指标(AO和AC),现在我想让条形图根据修改后的指标来着色。或者有什么其他方法吗?我最近才开始学习MQL...

那么,你重新做了什么并称之为,有什么问题?例如,如果修改后的指标被称为AO、AC,则调用将是

iCustom(0,0,"AO",0,shift);
iCustom(0,0,"AС",0,shift);

或者你可以添加你自己的参数

 
future >> :

非常感谢你,我越来越接近了。有一点是不太清楚的。

'14:56'--日期字面字符串不完整这是我从电脑上得到的警告。

根据我的理解,它仍然想要日期,但我不需要具体的日期。 我需要的是每天将当前价格与同一天某个时间的价格进行比较。请澄清这一点。


string час="15";
string мин="15";
datetime some_time=D'Year().Month().Day() час:мин';//попробуй так ____ но на тестере не будет работать, так как текущие год месяц и день 
привяжитесь к барам так проще вместо iBarShift(0,0, some_time) номер бара
 

costy_ писал(а) >>

未来 >>:

非常感谢你,我越来越接近了

有一点是不太清楚的。

'14:56' - 日期字面字符串不完整 - 这是电脑给我的警告。

我明白它仍然想要日期,但我不需要特定的日期,我需要每天将当前价格与同一天某个时间的价格进行比较

请澄清这一点。


string час="15";
string мин="15";
datetime some_time=D'Year().Month().Day() час:мин';//попробуй так ____ но на тестере не будет работать, так как текущие год месяц и день 
привяжитесь к барам так проще вместо iBarShift(0,0, some_time) номер бара

然而,我想知道是否有可能将约束力维持到某个时间。在MQL4中,如何说每个交易日14.00的买入价?

 

skifodessa 05.12.2009 14:07


大家下午好。

请告诉我如何计算某一水平的价格的交叉点的数量。我想让我的订单在3(4,5......)之后打开,但不是在第一次交叉之后。

谢谢你。
------------------------------------------------------------

你可以试试这个算法


如果(当前柱状体的价格>前柱状体的水平价格<水平),那么{计数器增加1}。

如果(counter>3),那么{打开订单;将计数器重置为零}。

现在让我们用通常的语言写出同样的内容(我只写了块,你可以在必要的地方插入它们)

Extern int Chet=10; // 在多少个交叉点之后,应该打开一个订单。

Extern double Uroven=1.6566; // 在价格越过哪个水平后,开始计数。

在启动功能中,条件将大致如下

int k;

如果(Open[0]>Uroven && Open[1]<Uroven)k=k+1;//这里我们考虑一个UP交叉点

如果(k>Chet){OrderSend(.......);k=0};

一般来说,这个问题不是很困难。 关于MCL的书解释了ALGORITHMICS的基础知识

 

FOR Vinin 写道>>。

谢谢你的提示,但这并没有帮助。因为你刚刚用一个FOR循环代替了While循环。

为Urain写(a)>>

接下来的两行只是在形成正确的阵列。

Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i)。
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i)。

Urain 你一定认为iMAOnArray函数应该传递一个已经形成的数组。 用FOR循环形成它并没有帮助。这是因为传给这个函数(iMAOnArray)的不是数组,而是其NAME。阵列是以个人名义处理的。

通过改变字符串MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMA,i)中的i。

我已经解决了这个问题。这比它看起来要深得多。如果你只在专家顾问中应用这种处理方法,就不会有问题,但如果你用它建立一个图表,无论如何都会有障碍。关键是,数组的索引是反的。函数iMAOnArray有直接(从左到右)的索引,而图表是从右到左的索引。感谢加菲奇的解释。



 
Stepan241 >> :

FOR Vinin 写道>>。

谢谢你的提示,但这并没有帮助。因为你刚刚用一个FOR循环代替了While循环。

为Urain写(a)>>

接下来的两行只是在形成正确的阵列。

Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i)。
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i)。

Urain 你一定认为iMAOnArray函数应该传递一个已经形成的数组。 用FOR循环形成它并没有帮助。因为你传递给这个函数(iMAOnArray)的不是数组,而是其NAME。阵列是以个人名义处理的。

通过改变字符串MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMA,i)中的i。

我已经解决了这个问题。这比它看起来要深得多。如果你只在专家顾问中应用这种处理方法,就没有问题,但如果你用它来建立图表,无论如何你都会面临问题。关键是,数组的索引是反的。函数iMAOnArray有直接(从左到右)的索引,而图表是从右到左的索引。感谢加菲奇的解释。

我不知道问题出在哪里,但Vinin写得很正确(for或while并不重要),主要的是首先循环形成数据数组,然后下一个循环从它形成iMA。

和字符串Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i); 只填充阵列的第i个值

没有循环,数组将不会被生成。

原因: