ICustom函数 - 页 10 1...34567891011121314151617...23 新评论 zyco 2009.03.29 21:24 #91 你好,你能帮我阐述一下这位专家的情况吗? 基于FreedomBar指标... 如果前一格收盘为红色->卖出(市场价格)->在下一格关闭交易,变为蓝色并反转为买入(市场价格)。 买入订单也是如此 如果有TF、tp、sl和追踪止损选项就更好了。 谢谢 附加的文件: freedombar.mq4 7 kb increase 2009.04.11 06:55 #92 有什么帮助吗?我使用icustom将指标读入EA,在回测 过程中,趋势运行得很好,然后由于某些原因,icustom参数发生了逆转,所以我的趋势是向上的,而不是向下的,尽管指标显示是向下的,但在交易激活后,我又自行纠正了,过了一段时间又发生了。 increase 2009.04.12 03:27 #93 increase: 请提供任何帮助。我从一个使用icustom的EA中读取指标,在回测过程中,趋势运行得很好,然后由于某种原因,icustom的参数发生了逆转,所以我的趋势是向上的,而不是向下的,即使指标显示是向下的,在交易激活后,我也会自行纠正,一段时间后又会发生 。 所以指标似乎是问题所在,它像SuperTrend volty,但我在使用其他非重绘指标时也遇到了这个问题,如FX Sniper Ergodic和Fisher。 挑战似乎是,有很多时候,当指标指向一个方向,比如说下降,但移动的起点最终低于终点,导致指标显示为下降,但数据却显示为上升。 对此有什么意见吗?有没有人有一个不重绘的指标,不会出现这种情况,或者有什么其他解决办法? 请看所附图片 附加的文件: pic.jpg 38 kb archangel4 2009.06.26 04:15 #94 iCustom函数 大家好...这是我的第一个帖子 这个EA将用于根据指标的颜色平仓,但我将手动开仓。由于我没有反编译版本的指标,我认为icustom是一种方法。 但我如何根据颜色来调用函数? 例如,如果我使用Heikin Ashi_SW,我想在条形图关闭后颜色为蓝色时关闭卖盘,反之亦然。 谢谢 [删除] 2009.06.28 18:30 #95 自定义问题 我有一个简单的自定义指标,没有外部设备,名为#TestIndicator,用数字1.0填充8个缓冲区,但当我在EA中带回缓冲区时,缓冲区的结果总是0。你能帮我解决这个问题吗? #TestIndicator #property indicator_chart_window #property indicator_buffers 8 double buf4_up[]; double buf4_down[]; double buf3_up[]; double buf3_down[]; double buf2_up[]; double buf2_down[]; double buf1_up[]; double buf1_down[]; int UniqueNum = 0070; string shortname = ""; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { shortname = "#TFX"; IndicatorBuffers(8); IndicatorShortName(shortname); //---- indicators SetIndexBuffer(0,buf4_up); SetIndexBuffer(1,buf4_down); SetIndexBuffer(2,buf3_up); SetIndexBuffer(3,buf3_down); SetIndexBuffer(4,buf2_up); SetIndexBuffer(5,buf2_down); SetIndexBuffer(6,buf1_up); SetIndexBuffer(7,buf1_down); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars = IndicatorCounted(); //---- the last calculated bar will be recalculated if(counted_bars > 0) counted_bars--; limit = Bars - counted_bars - 1; //---- the main cycle for(int i = limit; i >= 0; i--) { //---- buf4_up=1.0; buf4_down=1.0; buf3_up=1.0; buf3_down=1.0; buf2_up=1.0; buf2_down=1.0; buf1_up=1.0; buf1_down=1.0; } //---- //---- //---- return(0); } //+------------------ [/CODE] EA Code [CODE] double test4_up[]; double test4_down[]; double test3_up[]; double test3_down[]; double test2_up[]; double test2_down[]; double test1_up[]; double test1_down[]; int UniqueNum = 009; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- Print("Inside init"); //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- Print("Inside deinit"); //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- Print("Inside start"); int counted_bars=IndicatorCounted(); int y5m=0, y1h=0, y30m=0, y15m=0, yy=0; int i=0; int limit=Bars-counted_bars; for(i=0;i<limit;i++) { test4_up = iCustom(NULL, 0, "#TestIndicator",0,i); test4_down = iCustom(NULL, 0, "#TestIndicator",1,i); } for(i=0;i<30;i++) { Print("Test 4 UP ", test4_up," Bar ",i ); Print("Test 4 DOWN ", test4_down," Bar ",i ); //Print("This is a test"); } //---- return(0); } //+--------- 测试器中的结果 ICustom function 如何编码? 帮看下这个指标显示,只能显示前8个buf的值,后面的buf内存中有值,但是指标图形显示不到界面上,帮看看怎么就可以显示了,调下代码,谢谢! Rafael 2009.06.28 20:33 #96 Xaun: 我有一个简单的自定义指标,没有外部设备,名为#TestIndicator,它用数字1.0填充了8个缓冲区,但当我在EA中带回缓冲区时,缓冲区结果总是0。你能帮我解决这个问题吗。 EA代码 double test4_up[]; double test4_down[]; double test3_up[]; double test3_down[]; double test2_up[]; double test2_down[]; double test1_up[]; double test1_down[]; int UniqueNum = 009; .. .. ... ...... .. int i=0; int limit=Bars-counted_bars; ArrayResize(test4_up, limit); ArrayResize(test4_down, limit); for(i=0;i<limit;i++) { test4_up = iCustom(NULL, 0, "#TestIndicator",0,i); test4_down = iCustom(NULL, 0, "#TestIndicator",1,i); } for(i=0;i<30;i++) { Print("Test 4 UP ", test4_up," Bar ",i ); Print("Test 4 DOWN ", test4_down," Bar ",i ); //Print("This is a test"); } //---- return(0); } //+--------- ] 也许你需要在你的EA中定义数组的大小。 [删除] 2009.06.28 23:37 #97 谢谢 okfar: 也许你需要在你的EA中定义阵列的大小。 谢谢你,Okfar。这正是问题所在 cockeyedcowboy 2009.06.29 12:39 #98 取决于你如何访问你的数据,你不必在每个tick上重新填充阵列,就像你不必重新计算指标一样。 见 bool ArraySetAsSeries(double&array[],bool set)设置 数组的索引方向。如果set 参数的值为TRUE,数组将以相反的顺序进行索引,也就是说,最后一个元素的索引为零。FALSE值则设置标准的索引顺序。该函数返回之前的状态。 Mladen Rakic 2009.06.29 15:17 #99 ... 你正试图使用本应专门从指标中使用的功能。 IndicatorCounted() 从EA中调用时没有任何意义。在EA代码中调用时,它总是返回-1。试着用一个常数来代替(比如在你的第二个循环中)或Bars(如果你想要整个历史)。 另外,在EA中使用的数组应该被调整大小,初始化,以及通常metatrader在涉及指标和指标中的缓冲区时所做的全部工作。EA没有与指标中使用的SetIndexBuffer() 相当的功能。你的EA中存在未初始化的数组,只有metatrader可以防止你的EA崩溃(在这种情况下,它总是返回0,因为你试图读取的元素值不存在,事实上,这些数组不存在(它们只是被声明,没有被分配,初始化,...))。 问候 mladen Xaun: 我有一个简单的自定义指标,没有外部设备,名为#TestIndicator,用数字1.0填充8个缓冲区,但当我在EA中带回缓冲区时,缓冲区结果总是0。你能帮我解决这个问题吗。 #TestIndicator #property indicator_chart_window #property indicator_buffers 8 double buf4_up[]; double buf4_down[]; double buf3_up[]; double buf3_down[]; double buf2_up[]; double buf2_down[]; double buf1_up[]; double buf1_down[]; int UniqueNum = 0070; string shortname = ""; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { shortname = "#TFX"; IndicatorBuffers(8); IndicatorShortName(shortname); //---- indicators SetIndexBuffer(0,buf4_up); SetIndexBuffer(1,buf4_down); SetIndexBuffer(2,buf3_up); SetIndexBuffer(3,buf3_down); SetIndexBuffer(4,buf2_up); SetIndexBuffer(5,buf2_down); SetIndexBuffer(6,buf1_up); SetIndexBuffer(7,buf1_down); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars = IndicatorCounted(); //---- the last calculated bar will be recalculated if(counted_bars > 0) counted_bars--; limit = Bars - counted_bars - 1; //---- the main cycle for(int i = limit; i >= 0; i--) { //---- buf4_up=1.0; buf4_down=1.0; buf3_up=1.0; buf3_down=1.0; buf2_up=1.0; buf2_down=1.0; buf1_up=1.0; buf1_down=1.0; } //---- //---- //---- return(0); } //+------------------ [/code]EA Code [code] double test4_up[]; double test4_down[]; double test3_up[]; double test3_down[]; double test2_up[]; double test2_down[]; double test1_up[]; double test1_down[]; int UniqueNum = 009; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- Print("Inside init"); //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- Print("Inside deinit"); //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- Print("Inside start"); int counted_bars=IndicatorCounted(); int y5m=0, y1h=0, y30m=0, y15m=0, yy=0; int i=0; int limit=Bars-counted_bars; for(i=0;i<limit;i++) { test4_up = iCustom(NULL, 0, "#TestIndicator",0,i); test4_down = iCustom(NULL, 0, "#TestIndicator",1,i); } for(i=0;i<30;i++) { Print("Test 4 UP ", test4_up," Bar ",i ); Print("Test 4 DOWN ", test4_down," Bar ",i ); //Print("This is a test"); } //---- return(0); } //+--------- 测试器中的结果... paytongannaway 2009.07.10 04:47 #100 编码问题 我有一个我非常喜欢的指标,并且已经演示了几个星期,而且相当成功。 有什么方法可以让我根据该指标自动下买/卖单吗? 简而言之,当我喜欢的指标排成一行时,它是一个小箭头,在图表上指向向上或向下。 有没有一种方法,当箭头弹出时,它将为我下订单? 1...34567891011121314151617...23 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好,你能帮我阐述一下这位专家的情况吗?
基于FreedomBar指标...
如果前一格收盘为红色->卖出(市场价格)->在下一格关闭交易,变为蓝色并反转为买入(市场价格)。
买入订单也是如此
如果有TF、tp、sl和追踪止损选项就更好了。
谢谢
有什么帮助吗?我使用icustom将指标读入EA,在回测 过程中,趋势运行得很好,然后由于某些原因,icustom参数发生了逆转,所以我的趋势是向上的,而不是向下的,尽管指标显示是向下的,但在交易激活后,我又自行纠正了,过了一段时间又发生了。
请提供任何帮助。我从一个使用icustom的EA中读取指标,在回测过程中,趋势运行得很好,然后由于某种原因,icustom的参数发生了逆转,所以我的趋势是向上的,而不是向下的,即使指标显示是向下的,在交易激活后,我也会自行纠正,一段时间后又会发生 。
所以指标似乎是问题所在,它像SuperTrend volty,但我在使用其他非重绘指标时也遇到了这个问题,如FX Sniper Ergodic和Fisher。
挑战似乎是,有很多时候,当指标指向一个方向,比如说下降,但移动的起点最终低于终点,导致指标显示为下降,但数据却显示为上升。
对此有什么意见吗?有没有人有一个不重绘的指标,不会出现这种情况,或者有什么其他解决办法?
请看所附图片
iCustom函数
大家好...这是我的第一个帖子
这个EA将用于根据指标的颜色平仓,但我将手动开仓。由于我没有反编译版本的指标,我认为icustom是一种方法。
但我如何根据颜色来调用函数?
例如,如果我使用Heikin Ashi_SW,我想在条形图关闭后颜色为蓝色时关闭卖盘,反之亦然。
谢谢
自定义问题
我有一个简单的自定义指标,没有外部设备,名为#TestIndicator,用数字1.0填充8个缓冲区,但当我在EA中带回缓冲区时,缓冲区的结果总是0。你能帮我解决这个问题吗?
#TestIndicator
#property indicator_chart_window
#property indicator_buffers 8
double buf4_up[];
double buf4_down[];
double buf3_up[];
double buf3_down[];
double buf2_up[];
double buf2_down[];
double buf1_up[];
double buf1_down[];
int UniqueNum = 0070;
string shortname = "";
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
shortname = "#TFX";
IndicatorBuffers(8);
IndicatorShortName(shortname);
//---- indicators
SetIndexBuffer(0,buf4_up);
SetIndexBuffer(1,buf4_down);
SetIndexBuffer(2,buf3_up);
SetIndexBuffer(3,buf3_down);
SetIndexBuffer(4,buf2_up);
SetIndexBuffer(5,buf2_down);
SetIndexBuffer(6,buf1_up);
SetIndexBuffer(7,buf1_down);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars = IndicatorCounted();
//---- the last calculated bar will be recalculated
if(counted_bars > 0)
counted_bars--;
limit = Bars - counted_bars - 1;
//---- the main cycle
for(int i = limit; i >= 0; i--)
{
//----
buf4_up=1.0;
buf4_down=1.0;
buf3_up=1.0;
buf3_down=1.0;
buf2_up=1.0;
buf2_down=1.0;
buf1_up=1.0;
buf1_down=1.0;
}
//----
//----
//----
return(0);
}
//+------------------
[/CODE]
EA Code
[CODE]
double test4_up[];
double test4_down[];
double test3_up[];
double test3_down[];
double test2_up[];
double test2_down[];
double test1_up[];
double test1_down[];
int UniqueNum = 009;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
Print("Inside init");
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
Print("Inside deinit");
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
Print("Inside start");
int counted_bars=IndicatorCounted();
int y5m=0, y1h=0, y30m=0, y15m=0, yy=0;
int i=0;
int limit=Bars-counted_bars;
for(i=0;i<limit;i++)
{
test4_up = iCustom(NULL, 0, "#TestIndicator",0,i);
test4_down = iCustom(NULL, 0, "#TestIndicator",1,i);
}
for(i=0;i<30;i++)
{
Print("Test 4 UP ", test4_up," Bar ",i );
Print("Test 4 DOWN ", test4_down," Bar ",i );
//Print("This is a test");
}
//----
return(0);
}
//+---------
测试器中的结果
我有一个简单的自定义指标,没有外部设备,名为#TestIndicator,它用数字1.0填充了8个缓冲区,但当我在EA中带回缓冲区时,缓冲区结果总是0。你能帮我解决这个问题吗。
EA代码
double test4_up[];
double test4_down[];
double test3_up[];
double test3_down[];
double test2_up[];
double test2_down[];
double test1_up[];
double test1_down[];
int UniqueNum = 009;
..
..
...
......
..
int i=0;
int limit=Bars-counted_bars;
ArrayResize(test4_up, limit);
ArrayResize(test4_down, limit);
for(i=0;i<limit;i++)
{
test4_up = iCustom(NULL, 0, "#TestIndicator",0,i);
test4_down = iCustom(NULL, 0, "#TestIndicator",1,i);
}
for(i=0;i<30;i++)
{
Print("Test 4 UP ", test4_up," Bar ",i );
Print("Test 4 DOWN ", test4_down," Bar ",i );
//Print("This is a test");
}
//----
return(0);
}
//+---------
也许你需要在你的EA中定义数组的大小。
谢谢
也许你需要在你的EA中定义阵列的大小。
谢谢你,Okfar。这正是问题所在
取决于你如何访问你的数据,你不必在每个tick上重新填充阵列,就像你不必重新计算指标一样。 见
bool ArraySetAsSeries(double&array[],bool set)设置 数组的索引方向。如果set 参数的值为TRUE,数组将以相反的顺序进行索引,也就是说,最后一个元素的索引为零。FALSE值则设置标准的索引顺序。该函数返回之前的状态。
...
你正试图使用本应专门从指标中使用的功能。
IndicatorCounted() 从EA中调用时没有任何意义。在EA代码中调用时,它总是返回-1。试着用一个常数来代替(比如在你的第二个循环中)或Bars(如果你想要整个历史)。
另外,在EA中使用的数组应该被调整大小,初始化,以及通常metatrader在涉及指标和指标中的缓冲区时所做的全部工作。EA没有与指标中使用的SetIndexBuffer() 相当的功能。你的EA中存在未初始化的数组,只有metatrader可以防止你的EA崩溃(在这种情况下,它总是返回0,因为你试图读取的元素值不存在,事实上,这些数组不存在(它们只是被声明,没有被分配,初始化,...))。
问候
mladen
我有一个简单的自定义指标,没有外部设备,名为#TestIndicator,用数字1.0填充8个缓冲区,但当我在EA中带回缓冲区时,缓冲区结果总是0。你能帮我解决这个问题吗。
#TestIndicator
#property indicator_chart_window
#property indicator_buffers 8
double buf4_up[];
double buf4_down[];
double buf3_up[];
double buf3_down[];
double buf2_up[];
double buf2_down[];
double buf1_up[];
double buf1_down[];
int UniqueNum = 0070;
string shortname = "";
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
shortname = "#TFX";
IndicatorBuffers(8);
IndicatorShortName(shortname);
//---- indicators
SetIndexBuffer(0,buf4_up);
SetIndexBuffer(1,buf4_down);
SetIndexBuffer(2,buf3_up);
SetIndexBuffer(3,buf3_down);
SetIndexBuffer(4,buf2_up);
SetIndexBuffer(5,buf2_down);
SetIndexBuffer(6,buf1_up);
SetIndexBuffer(7,buf1_down);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars = IndicatorCounted();
//---- the last calculated bar will be recalculated
if(counted_bars > 0)
counted_bars--;
limit = Bars - counted_bars - 1;
//---- the main cycle
for(int i = limit; i >= 0; i--)
{
//----
buf4_up=1.0;
buf4_down=1.0;
buf3_up=1.0;
buf3_down=1.0;
buf2_up=1.0;
buf2_down=1.0;
buf1_up=1.0;
buf1_down=1.0;
}
//----
//----
//----
return(0);
}
//+------------------
[/code]EA Code
[code]
double test4_up[];
double test4_down[];
double test3_up[];
double test3_down[];
double test2_up[];
double test2_down[];
double test1_up[];
double test1_down[];
int UniqueNum = 009;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
Print("Inside init");
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
Print("Inside deinit");
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
Print("Inside start");
int counted_bars=IndicatorCounted();
int y5m=0, y1h=0, y30m=0, y15m=0, yy=0;
int i=0;
int limit=Bars-counted_bars;
for(i=0;i<limit;i++)
{
test4_up = iCustom(NULL, 0, "#TestIndicator",0,i);
test4_down = iCustom(NULL, 0, "#TestIndicator",1,i);
}
for(i=0;i<30;i++)
{
Print("Test 4 UP ", test4_up," Bar ",i );
Print("Test 4 DOWN ", test4_down," Bar ",i );
//Print("This is a test");
}
//----
return(0);
}
//+---------
测试器中的结果...
编码问题
我有一个我非常喜欢的指标,并且已经演示了几个星期,而且相当成功。 有什么方法可以让我根据该指标自动下买/卖单吗? 简而言之,当我喜欢的指标排成一行时,它是一个小箭头,在图表上指向向上或向下。 有没有一种方法,当箭头弹出时,它将为我下订单?