[原创]求EA编程高手帮忙,多谢了
先说说对英镑一点看法,英镑大方向我是看多,但下周英镑回调200点以上的可能性是非常大的,所以下周决定找位置平掉所有多仓,等合适位置在做多
发帖主要目的是想请EA编程高手帮忙解个惑,刚学EA编程,遇个问题在软件区发了个贴,可那边人太少,一个周了都没人回复,只好在这边发个帖了,论坛有没有懂EA编程的朋友,可否帮个忙,多谢了
帖子地址
http://www.talkforex.com/thread-183544-1-1.html
发表于:2010-08-10 14:33只看该作者
4楼
1、High[0]是当前正在变化的K线的最高价;
2、没太看明白是什么意思?这两条语句是计算指标的经典格式,不需要改变的。程序会自动计算当前图表中每一根K线的最价与最低价的差值并且显示在副图中,不需要你刻意去选择某一根K线而去处理它。不管你如何变化当前图表,指标都会一一对应。当前变化的K线的指标会不断变化,直到新的K线的出现。
[ 本帖最后由 fengkun 于 2010-8-10 22:57 编辑 ]
韬客社区www.talkfx.co
5楼
朋友你好,谢谢你的热心回复,High[0]是当前正在变化的K线的最高价;这个我知道。第一个问题我想问的是,假如图表上有20根k线,第20根k
线是正在跳动的k线,那程序计算的是最新的K线(K[0])还是次新K线(K[1])。第二个问题我是想搞清楚这个程序运算原理和过程,这两条语句是防止程序重复计算程序已经计算过的K线,我想让懂的朋友帮忙把我举得例子(假如图表上有20根k线,第20根k
线是正在跳动的k线)中的值代入这两条代码中,也就是第20根k
线是正在跳动的k线时,这两句代码是怎样运算的,我想知道运算的过程,只要将下面
代码中的问号换成例子中的值就可以了
if (?>0) ?--;
int pos=?-?;
谢谢,非常感谢朋友的回复:handshake :lol
[ 本帖最后由 汇有财 于 2010-8-10 23:41 编辑 ]
6楼
论坛有会EA编程的朋友么,可否帮忙解答一下,谢谢 :handshake :lol
韬客社区www.talkfx.co
发表于:2010-08-19 12:05只看该作者
7楼
第20根K线是过去式了吧,怎么还会跳?
发表于:2010-08-19 13:05只看该作者
8楼
亲爱的朋友: 你所说的"第20根k线是正在跳动的k线" 即是当前K线 K[0] . 每当价格跳动一下程序就运行一次次 start() 函数相当于
最高级别中断程序, 当然这时即可获得最新Close[0]. 另外一重要问题---时程序中k线排序是由右向左[ ---6 5 4 3 2 1 0 ] .
"0" 是当前k线. 与你的排序正好相反.
"防止程序重复计算程序已经计算过的K线" 你可采用较简的方法[适用多数情况]即让程序设全局变量保存open[1] high[1] low[1]
close[1] 的数值, 当新K线出现时 相保存K线会后移, 新K线open[1] high[1] low[1] close[1] 就会变化. 用IF..来判断四变量是否不同
即可达到----"防止程序重复计算程序已经计算过的K线"
9楼
谢谢hvv朋友的热心回复,您说的---“你所说的"第20根k线是正在跳动的k线" 即是当前K线 K[0] . 每当价格跳动一下程序就运行一次次 start() 函数相当于 最高级别中断程序, 当然这时即可获得最新Close[0]. 另外一重要问题---时程序中k线排序是由右向左[ ---6 5 4 3 2 1 0 ] "0" 是当前k线. 与你的排序正好相反.
”-----这些我都知道,可这些都不是我想问的问题,可能是我表达的不够清楚
其实我的问题就两个:
第一个问题我想问的是,假如图表上有20根k线,第20根k
线是正在跳动的k线,那程序计算的是最新的K线(K[0])还是最新K线的前一根K线(K[1])。只需要回答我K[0]还是K[1]就可以了
第二个问题是当第20根k
线正在跳动的时候这两句代码的运算过程,所以想让朋友帮我把例子中的值代入这两句代码中,也就是只要将下面
代码中的问号换成例子中的值就可以了
if (?>0) ?--;
int pos=?-?;
其实就是想知道pos这个变量的值(也就是我问的第一个问题中K线序号的值)得出的过程
不知道这次我表达的是否清楚,望各位懂EA编程的朋友有时间可否直接回答一下我的这两个问题
另外你说的采用设全局变量的方法我怎么感觉比我问的这两句代码还要繁琐,不知道是否会降低程序运算效率。我学习EA编程时间不长,之前没有编程
基础,有说的不对的,还望朋友海涵、见谅:handshake :handshake
再次向您表示感谢,非常谢谢:handshake:handshake
因事情多回复的晚了,在这也向回复的各位朋友表示抱歉
望其他懂EA编程的朋友有时间也能帮忙直接回答一下我的这两个问题 :handshake :victory: :lol
[ 本帖最后由 汇有财 于 2010-8-23 19:42 编辑 ]
10楼
韬客社区www.talkfx.co
11楼
今天有时间,顶顶贴,看有没有热心的高手可以帮忙解答 :handshake
韬客社区www.talkfx.co
发表于:2010-08-28 09:30只看该作者
12楼
还没搞定?貌似已经有人回了。没细看帖子,给你加个注释,看哥能明白否。不一定精确,只是个大概:P。
int counted_bars=IndicatorCounted();
---取得已经计算过的BAR数(没变化的BAR)。比如图表有200Bars,第一次启动IndicatorCounted()=0
导致整表全算。平时运行时一般是199。
if (counted_bars<0) return(-1);
---IndicatorCounted()函数本身出问题了(函数正常的话至少是0)
if (counted_bars>0) counted_bars--;
---199变成198(后边解释)
int pos=Bars-counted_bars
一般情况下前199Bars没变化,pos=200-199=1
后边的循环执行一回把跳动中的Bar计算就可以了。
一般是for(i=0;i<1;i++){.......}
pos=200-(199-1)=2会计算最新的2Bars,其中一个是已经算过的,一个是正在跳动中
真正需要计算的(一般的情况)。
但是某些特例会是你的程序出问题,比如一些边界情况(拿30Min图为例):
16:59:59.999时刻start()启动了,你的程序正在执行中,时间变为17:00:00
出了一个新Bar,16:30,17:00两个Bars都没计算过,
for(i=0;i<2;i++){.......}会是程序一切正常,
for(i=0;i<1;i++){.......}会出问题
也就是说”counted_bars--“大多数情况会白算一个BAR,但可保证一些特例时程序
一切正常。
其实if (counted_bars>0) counted_bars--;变为
if (counted_bars>0) counted_bars = counted_bars - 2;也可以,但有一个BAR100%
的白算了。
不知明白了否。
发表于:2010-08-28 09:45只看该作者
13楼
为啥我感觉这个和VC++好像啊。有区别没?
韬客社区www.talkfx.co
14楼
原帖由 StanleyM 于 2010-8-28 17:30 发表 还没搞定?貌似已经有人回了。没细看帖子,给你加个注释,看哥能明白否。不一定精确,只是个大概:P。 int counted_bars=IndicatorCounted(); ---取得已经计算过的BAR数(没变化的BAR)。比如图表有200Bars,第一 ...
pos=200-(199-1)=2会计算最新的2Bars,其中一个是已经算过的,一个是正在跳动中 真正需要计算的(一般的情况)。
其实if (counted_bars>0) counted_bars--;变为if (counted_bars>0) counted_bars = counted_bars - 2;也可以,
韬客社区www.talkfx.co
15楼
韬客社区www.talkfx.co
发表于:2010-08-28 11:24只看该作者
16楼
看了一下程序的循环部分,应该是计算了K[2],K[1],K[0].
依具体情况一般是这样写,limit=2时计算K[1],K[0],应该没问题。
for(i=0; i=0; i--) {......}
程序计算了K[2],一是想更可靠? 或是循环体里的指标需要再计算K[2]?,
也有可能是BUG;P。(程序不出错,所以也没在意)
我可能没想全面,如果指标运行在1Min图上,比如有时5分钟都没来新的一跳(或许有可能),
应该多算几个Barsif (counted_bars>0) counted_bars=counted_bars-5也许可以理解。
15Min图以上的话,没必要算K[2]
[ 本帖最后由 StanleyM 于 2010-8-28 19:34 编辑 ]
17楼
韬客社区www.talkfx.co
18楼
从我问这个问题开始(包括在别的网站),有的人告诉我是if (20>0) 20--;
int pos=20-20=0;:lol
有的人告诉我是if (20>0) 20--;
int pos=20-19=1;:lol
有的人告诉我是if (19>0) 19--;
int pos=20-18=2;:lol
到目前为止我已经得到三个答案了:033: ,我已经彻底晕了:036: ,谁能告诉我到底哪个答案是正确的,程序运算的到底是K[0],还是K[1],还是K[2],还有”counted_bars--“这句在程序中到底有没有意义,如果没有意义是不是可以去掉
再次向热心回复的朋友表示感谢:handshake :victory: :lol :$
[ 本帖最后由 汇有财 于 2010-8-29 15:23 编辑 ]
韬客社区www.talkfx.co
发表于:2010-08-29 07:28只看该作者
19楼
咦
老地主也会编程了
我以为只会数老玉米棒子呢
我的毛病 想赢怕输 犹豫不定 盲目跟从 短线长做 长线短做 追涨杀跌 不做计划 擅改目标 贪多嫌少 逆市而为
最大的毛病:以上错误一犯再犯,怨天尤人,只说别人 不看自己。吃的是草,挤的是眼睛。
20楼
韬客社区www.talkfx.co