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

 

我曾经学习过编程的基础知识(25年前 - Algol 60 :))当时,一切都从创建一个算法(正方形、菱形)开始,然后用一种语言来描述这个算法。现在我没有看到任何算法或命令。

你们有什么好的mql4教程推荐吗?最好是有专家写作的 具体例子,从算法开始。

 
v721965 писал(а)>>

我曾经学习过编程的基础知识(25年前 - Algol 60 :))当时,一切都从创建一个算法(正方形、菱形)开始,然后用一种语言来描述这个算法。现在我没有看到任何算法或命令。

你们有什么好的mql4教程推荐吗?最好是有具体的EA写作实例,从算法开始。

https://book.mql4.com/ru/

 
alvish >> :
亲请教,根据mql5语言帮助,没有函数iHighest如何计算N个时期的最大高点? ......我试过copyHigh和fmax,但只针对某个时期,当然不是那个时期,帮助

这里有一个例子。

         int shift_Box_Start = iBarShift(NULL, 0, TimeBoxStart);
         Box_Start_High      = High[iHighest(NULL, 0, MODE_HIGH, shift_Box_Start- i, i+1)];
         Box_Start_Low       =  Low[iLowest(NULL,  0, MODE_LOW,  shift_Box_Start- i, i+1)];

只要确保你的换挡器是正确的。

 

1.试图在测试模式 下运行EA的可视化。该EA很简单:它通过Alert生成一个信息。当Alert处于init状态时,信息在开始时就被给出。当它处于启动状态时,EA对新的刻度线没有反应。问题是什么?

2.在同一测试模式下,我也启动了一个脚本,显示Time[1]、Close[1]、...的值。(供参考)。我发现这些数值是基于当前(实际)的时间,而不是基于图表中的点子接收和条形图形成的时间。可以做什么?

 
Roger писал(а)>>

对于欧元兑英镑,它的回报是-0(那是Alpari)空头和-0.68多头,这正好是美元。

对于Alpari来说,互换计算类型是0,而我的是1。

虽然我需要知道所有类型的计算方法。

我尝试了所有的组合:乘法、除法或根本没有乘法。

以下是计算所有这些并返回最接近真实交换值的代码。

int a,b,c,d,dd;

dd=1;

double raznica;

for ( j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {

int a_=0,b_=0,c_=0,d_=0;

raznica=1000000;

OrderSelect(j, SELECT_BY_POS, MODE_HISTORY);

if(OrderSwap()!=0){

if(OrderType()==OP_BUY){

for(a=-dd;a<=dd;a++){

for(b=-dd;b<=dd;b++){

for(c=-dd;c<=dd;c++){

for(d=-dd;d<=dd;d++){

double gg=MathPow(MarketInfo(OrderSymbol(),MODE_SWAPLONG),a)*MathPow(OrderLots(),b)*MathPow(MarketInfo(OrderSymbol(),MODE_TICKVALUE),c)*MathPow(MarketInfo(OrderSymbol(),MODE_BID),d);

if(MathAbs(gg-OrderSwap())<raznica){raznica=MathAbs(gg-OrderSwap());a_=a;b_=b;c_=c;}

}}}}

Alert(" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+"РАСЧЕТНЫЙ СВОП = "+gg+"\n a= "+a_+" b = "+b_+" c = "+c_+" d = "+d_);

}//if(OrderType()==OP_BUY){

if(OrderType()==OP_SELL){

for(a=-dd;a<=dd;a++){

for(b=-dd;b<=dd;b++){

for(c=-dd;c<=dd;c++){

for(d=-dd;d<=dd;d++){

gg=MathPow(MarketInfo(OrderSymbol(),MODE_SWAPSHORT),a)*MathPow(OrderLots(),b)*MathPow(MarketInfo(OrderSymbol(),MODE_TICKVALUE),c)*MathPow(MarketInfo(OrderSymbol(),MODE_BID),d);

if(MathAbs(gg-OrderSwap())<raznica){raznica=MathAbs(gg-OrderSwap());a_=a;b_=b;c_=c;}

}}}}

Alert(" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+"РАСЧЕТНЫЙ СВОП = "+gg+"\n a= "+a_+" b = "+b_+" c = "+c_+" d = "+d_);

}//if(OrderType()==OP_SELL){

}//if(OrderSwap()!=0){

}//for ( j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {

我没有得到Alpari或BROCO的任何结果。

I.e.

MarketInfo(OrderSymbol(),MODE_SWAPLONG)

OrderLots()

MarketInfo(OrderSymbol(),MODE_TICKVALUE)

MarketInfo(OrderSymbol(),MODE_BID)

对互换计算来说是不够的。

一定还有别的东西,但它是什么?

 
谢谢chief2000,但是你通过标准的iHighest 和iLowest来写,这就是问题所在,而且它们不在mql 5中。
 
alvish >> :
谢谢chief2000,但是你通过标准的iHighest和iLowest来写,这就是mql 5的问题。

现在我明白了,我没有仔细阅读这个问题。

我真的要在第五版中手动描述一切吗?这里有些不对劲--也许文件有问题?

 
就这样吧。
 
vasya_vasya >> :

对于Alpari来说,互换计算类型是0,而我的是1。


Vasya,你为什么要这么做? 我在这里告诉你"mql4中的交换", 非常简单

我可以详细介绍一下。

一共有4种变体

每个人都有一个不同的公式。

 
kaisa писал(а)>>

Vasya,你为什么要这样做呢? 我在这里简单地告诉你"mql4中的交换"

如果你需要,我可以说得更详细一些。

一共有4种变体

每个人都有一个不同的公式

是的,我可以拥有其他公式吗?

原因: