如何编码? - 页 223

 

...

我认为(因为我无法看到你的EA将数值写入csv文件),你缺少一个FileFlush()。如果你想在不关闭文件的情况下让 "其他人 "立即访问文件中的变化(隐含使用flush ),你应该总是将变化冲到磁盘上。

问候

mladen

sunshineh:
你好。

我正在编写一个使用CSV文件的EA。

为了测试,我把我的CSV文件放在以下文件夹中。

/tester/files

这里只是我的EA的一小部分。

int handle = 0;

int Long = 0;

handle=FileOpen("LongMarket.csv",FILE_CSV|FILE_READ,';');

if (handle > 0)

{

Long= FileReadNumber(handle);

FileClose(handle);

}

Print("LongMarket = ", Long);

Print("Long handle = ", handle);

在我的EA中,我读取CSV文件,然后写下一些整数。

现在,当我做测试并在日志中读取 "打印 "信息时,我经常得到旧的整数,而这些整数已经不在CSV文件中写了!!!"。

比如说。

首先是写了3,而我的EA正在工作,把0写进了文件。

我只能看到CSV文件中的3!!。

当我清除该CSV文件并在"/tester/files "文件夹中放入一个带有3的新CSV文件时,我只能从测试前读取0!!!!。但是我找不到,EA在哪里读到了0!!?

我都快疯了!!!!!

我希望你能理解我的问题,并给我一个提示!
[删除]  

谁能帮我增加一个警告功能?

我想为这个指标增加一个报警功能,颜色报警。我已经尝试了很长时间,使用 "如果报警",但从来没有成功过。有人能帮助我吗?非常感谢您~ 我的英语不是很好,所以很抱歉。

#属性 indicator_chart_window

#属性 indicator_buffers 4

#属性 indicator_color1 森林绿

#属性 indicator_color2 红色

#属性indicator_color3 黑色

#属性 indicator_color4 黑色

//---- 输入参数

extern int FastClosePeriod=13;

extern int FastCloseShift=0;

extern int FastOpenPeriod=34;

外置 int FastOpenShift=0;

外置 int SlowClosePeriod=34;

外置 int SlowCloseShift=0;

外置 int SlowOpenPeriod=62;

外置int SlowOpenShift=0。

//----指标缓冲区

double ExtBlueBuffer[];

double ExtRedBuffer[];

double ExtDarkVioletBuffer[];

double ExtBlackBuffer[];

//+------------------------------------------------------------------+

//|自定义指标初始化函数

//+------------------------------------------------------------------+

int init()

{

//---- 画线时的移位

SetIndexShift(0,FastCloseShift);

SetIndexShift(1,FastOpenShift);

SetIndexShift(2,SlowCloseShift);

SetIndexShift(3,SlowOpenShift);

//---- 绘图时跳过的第一个位置

SetIndexDrawBegin(0,FastCloseShift+FastClosePeriod)。

SetIndexDrawBegin(1,FastOpenShift+FastOpenPeriod)。

SetIndexDrawBegin(2,SlowCloseShift+SlowClosePeriod);

SetIndexDrawBegin(3,SlowOpenShift+SlowOpenPeriod)。

//---- 3个指标缓冲区的映射

SetIndexBuffer(0,ExtBlueBuffer)。

SetIndexBuffer(1,ExtRedBuffer);

SetIndexBuffer(2,ExtDarkVioletBuffer);

SetIndexBuffer(3,ExtBlackBuffer)。

//---- 绘图设置

SetIndexStyle(0,DRAW_HISTOGRAM,0,2);

SetIndexStyle(1,DRAW_HISTOGRAM,0,2);

SetIndexStyle(2,DRAW_NONE,0,2);

SetIndexStyle(3,DRAW_NONE,0,2);

//---- 索引标签

SetIndexLabel(0, "FastClose");

SetIndexLabel(1, "FastOpen");

SetIndexLabel(2, "SlowClose");

SetIndexLabel(3, "SlowOpen")。

//---- 初始化完成

返回(0)。

}

//+------------------------------------------------------------------+

//| 9Squared Trader |

//+------------------------------------------------------------------+

开始()

{

int limit;

int counted_bars=IndicatorCounted();

//----,检查可能的错误

if(counted_bars<0) return(-1);

//---- 最后一个被计算的柱子将被重新计算。

如果(counted_bars>0) counted_bars--;

limit=Bars-counted_bars。

//---- 主循环

for(int i=0; i<limit; i++)

{

//---- ma_shift设置为0,因为SetIndexShift被调用了。

ExtBlueBuffer=iMA(NULL,0,FastClosePeriod,0,MODE_EMA,PRICE_CLOSE,i) 。

ExtRedBuffer=iMA(NULL,0,FastOpenPeriod,0,MODE_EMA,PRICE_OPEN,i)。

ExtDarkVioletBuffer=iMA(NULL,0,SlowClosePeriod,0,MODE_EMA,PRICE_OPEN,i);

ExtBlackBuffer=iMA(NULL,0,SlowOpenPeriod,0,MODE_EMA,PRICE_MEDIAN,i);

}

//---- done

return(0);

 
 
附加的文件:
example.gif  12 kb
example.mq4  3 kb
 
wolfe:
给你。 我很快就做了这个,是的,它可以做到。

请看附件中的example.mq4的编码例子。

还包括一个带有注释的屏幕截图,所以你可以看到RSI值是在数组中被逐点保存的。

嗨,沃尔夫。

非常感谢你的时间和努力。我将尝试这个方法。

问候。

尊敬的MSV

 
 

布林带

你好。

谁能帮我把布林带公式(20period dev 2 on close)输入Excel电子表格。 谢谢您的帮助。

[Deleted]  

嗨,伙计们!

我需要在我的EA中只开一个 "每天买入和卖出 "的订单,请问,怎样的代码才能做到这一点呢?

 
Apolofx:
嗨,伙计们!我需要在我的EA中 "每天 "只开一个买入和卖出的订单,请问如何做到这一点的代码?

我相信你需要循环浏览所有已关闭的订单,并检查每个订单的符号和关闭时间......取一个与Symbol()相匹配并具有最新关闭时间的订单。然后增加24小时,并在一个变量中使用该变量来测试当前时间,当它达到最后一个订单+24小时时打开交易

 

或者更简单的方法是直接使用TimeDayOfYear函数,并检查最后一个具有匹配符号和神奇数字的封闭订单。 只要确保它与今天不是同一年的日子。

请看帮助文件中关于TimeDayOfYear的定义和使用。

注意事项

卢克斯