|
查看: 1240|回复: 13
|
会mql4的programmer进来下
[复制链接]
|
|
|
大大好,我有个问题想问programmer下,我想自己写indicator是show出opened order的价位,如果有2张在东一个pair,那么就会把2张的价位加起来除2,不过我只会show出一张单罢了,求大大帮忙,我的code是这样的,
string OrderPrice;
for(i=0,i<=OrdersTotal,i==);
OrderSelect(i,[size=13.3333330154419px]SELECT_BY_POS[size=13.3333330154419px] ,MODE_TRADE);{OrderPrice=OrderOpenPrice();}
[size=13.3333330154419px]
[size=13.3333330154419px]我只会这样罢了,请教大大帮忙,谢谢........
[size=13.3333330154419px]
|
|
|
|
|
|
|
|
|
|
|
发表于 21-7-2015 07:17 PM
|
显示全部楼层
[size=13.3333330154419px] 是 图 话 吗 ? 看 不见 图画 。
拿 第 一 个 OrderOpenPrice() 先 , temp1 = OrderOpenPrice() . 之 后 拿 第二 个 OrderOpenPrice() , temp2 = OrderOpenPrice(). 在 for loop 外 , 用 averagePrice = 0.5 * (temp1 + temp2).
这 样 averagePrice 就 是 你 的 平均 价 了 。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 21-7-2015 11:48 PM
|
显示全部楼层
可是第二个的价位我不会写出来,要怎样写呢?那个不是图画来的,我只是space罢了,我也不知道为什么会跑那个字出来,那如果有三张或以上的话呢?不就写不完咯,要怎样解决呢?
|
|
|
|
|
|
|
|
|
|
|
发表于 22-7-2015 12:56 PM
|
显示全部楼层
假设只有一个Symbol, 以下的 AveragePrice 就是平均价。 当然 , 这只是简单的例子 。 实际会有更复杂的情况, 如遇见相同的 OpenPrice时应该怎样等等 ,楼主可以自己慢慢研究 。
double temp = 0;
for(int i = 0; i <OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
Print("i",i," OrderTicket() :",OrderTicket(), "OrderOpenPrice()=", OrderOpenPrice() );
temp = temp + OrderOpenPrice();
}
Print("OrdersTotal()= ", OrdersTotal());
double AveragePrice = temp/OrdersTotal();
|
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 22-7-2015 01:15 PM
|
显示全部楼层
谢谢你,我自己研究看看,不过我想问你,我有一个问题,每当今天的蜡烛走完了,换换天的时候,我的in地擦投入就会停了下来,要换过time frame才能正常的走回,我有online看,他们都叫我用WindowRedraw(),不过我用了还是一样不能,你有办法吗?
|
|
|
|
|
|
|
|
|
|
|
发表于 22-7-2015 03:36 PM
|
显示全部楼层
这要看看 code 的 logic 才知道原因 。 可能是有的 logic 情况 (condition)没有被考虑到,因此要花很多时间小心地 debug 。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 22-7-2015 04:00 PM
|
显示全部楼层
我的code都是main在default indicator的,比如: a= iMA(NULL,0,20,0,MODE_SMA,0);
如果是这样呢?
|
|
|
|
|
|
|
|
|
|
|
发表于 22-7-2015 04:33 PM
|
显示全部楼层
可能不是 coding 问题 。 你看看 "Experts" and "Journal" tab 的记录 (right click and open), 看看你 的 indicator 是不是出现 stop operation or error 之类的字 。 这些字不会马上出现的,所以只能等下一天看记录 。在从那便找答案。
|
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 22-7-2015 04:54 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 23-7-2015 03:09 PM
|
显示全部楼层
他出现这个 ”1 04:59:22.824 zero divide in 'Combo Indicator.mq4' (2898,48)“
这是什么意识呢?
|
|
|
|
|
|
|
|
|
|
|
发表于 23-7-2015 03:27 PM
|
显示全部楼层
|
这是数学logic , 比如 2/0 的答案是 infinite (很大很大的号码) , 在电脑里由于号码太大了 ,Mt4 会 自动 remove indicator, 防止电脑 hang . 你要找出哪个 coding line 有除 0 的可能而加以修改 。 (2898,48) 是 哪个 有可能 出问题的 coding line. |
|
|
|
|
|
|
|
|
|
|
发表于 23-7-2015 03:31 PM
|
显示全部楼层
|
另外一个有可能的原因是 , 当 time 04:59:22.824 , 你的broker 停止交易没有新bar ,因此, indicator 拿到了 0 (price) , then divide 0. 结果 就 出现 问题了 。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 23-7-2015 04:10 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 23-7-2015 04:14 PM
|
显示全部楼层
我看了,没有除0的code,那应该是broker的问题,那要怎样解决呢?应该要加什么code呢?是不是这样?
if (a==0) return(a);
|
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|