如何编码? - 页 223 1...216217218219220221222223224225226227228229230...347 新评论 Mladen Rakic 2009.12.12 16:15 #2221 ... 我认为(因为我无法看到你的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!!? 我都快疯了!!!!! 我希望你能理解我的问题,并给我一个提示! [删除] 2009.12.15 09:56 #2222 谁能帮我增加一个警告功能? 我想为这个指标增加一个报警功能,颜色报警。我已经尝试了很长时间,使用 "如果报警",但从来没有成功过。有人能帮助我吗?非常感谢您~ 我的英语不是很好,所以很抱歉。 #属性 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); How to code? 编码帮助 问吧! TTheTrader 2009.12.16 19:48 #2223 wolfe 2009.12.17 03:54 #2224 附加的文件: example.gif 12 kb example.mq4 3 kb TTheTrader 2009.12.17 13:16 #2225 wolfe: 给你。 我很快就做了这个,是的,它可以做到。请看附件中的example.mq4的编码例子。 还包括一个带有注释的屏幕截图,所以你可以看到RSI值是在数组中被逐点保存的。 嗨,沃尔夫。 非常感谢你的时间和努力。我将尝试这个方法。 问候。 尊敬的MSV TTheTrader 2009.12.18 03:10 #2226 achewz 2009.12.18 18:49 #2227 布林带 你好。 谁能帮我把布林带公式(20period dev 2 on close)输入Excel电子表格。 谢谢您的帮助。 [Deleted] 2009.12.23 07:42 #2228 嗨,伙计们! 我需要在我的EA中只开一个 "每天买入和卖出 "的订单,请问,怎样的代码才能做到这一点呢? increase 2009.12.23 08:28 #2229 Apolofx: 嗨,伙计们!我需要在我的EA中 "每天 "只开一个买入和卖出的订单,请问如何做到这一点的代码? 我相信你需要循环浏览所有已关闭的订单,并检查每个订单的符号和关闭时间......取一个与Symbol()相匹配并具有最新关闭时间的订单。然后增加24小时,并在一个变量中使用该变量来测试当前时间,当它达到最后一个订单+24小时时打开交易 luxinterior 2009.12.23 11:08 #2230 或者更简单的方法是直接使用TimeDayOfYear函数,并检查最后一个具有匹配符号和神奇数字的封闭订单。 只要确保它与今天不是同一年的日子。 请看帮助文件中关于TimeDayOfYear的定义和使用。 注意事项 卢克斯 1...216217218219220221222223224225226227228229230...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
...
我认为(因为我无法看到你的EA将数值写入csv文件),你缺少一个FileFlush()。如果你想在不关闭文件的情况下让 "其他人 "立即访问文件中的变化(隐含使用flush
),你应该总是将变化冲到磁盘上。
问候
mladen
你好。
我正在编写一个使用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.mq4的编码例子。
还包括一个带有注释的屏幕截图,所以你可以看到RSI值是在数组中被逐点保存的。嗨,沃尔夫。
非常感谢你的时间和努力。我将尝试这个方法。
问候。
尊敬的MSV
布林带
你好。
谁能帮我把布林带公式(20period dev 2 on close)输入Excel电子表格。 谢谢您的帮助。
嗨,伙计们!
我需要在我的EA中只开一个 "每天买入和卖出 "的订单,请问,怎样的代码才能做到这一点呢?
嗨,伙计们!我需要在我的EA中 "每天 "只开一个买入和卖出的订单,请问如何做到这一点的代码?
我相信你需要循环浏览所有已关闭的订单,并检查每个订单的符号和关闭时间......取一个与Symbol()相匹配并具有最新关闭时间的订单。然后增加24小时,并在一个变量中使用该变量来测试当前时间,当它达到最后一个订单+24小时时打开交易
或者更简单的方法是直接使用TimeDayOfYear函数,并检查最后一个具有匹配符号和神奇数字的封闭订单。 只要确保它与今天不是同一年的日子。
请看帮助文件中关于TimeDayOfYear的定义和使用。
注意事项
卢克斯