编码帮助 - 页 161 1...154155156157158159160161162163164165166167168...786 新评论 rokas 2013.10.08 16:53 #1601 一次2个订单 你好,我正在尝试编写一个EA,我有一个问题,不知道如何解决:? 问题是我想在当前时间 打开2个订单(OPENSTOP和SELLSTOP),但在这个EA中,可能会打开100个或更多的订单,那么如何解决它,只打开2个订单呢? 外部的双倍Lots=1;extern double h_beg=10;外置双倍h_end=23; extern double TakeProfit=20; extern double StopLoss=90; //+------------------------------------------------------------------+ int start() { double prevbar_H; double prevbar_L; double bar_H; 双重bar_L。 双重卖出。 双重买入。 bool trade_time; bool sell_opened; bool buy_opened; //+------------------------------------------------------------------+ 如果(Hour()==h_beg) { trade_time = true; for(int h=1; h<=11; h++) { bar_H = iHigh(NULL,0,h); 如果(prevbar_H==0 || prevbar_H<bar_H) { prevbar_H = bar_H。 } } for(int l=1; l<=11; l++) { bar_L = iLow(NULL,0,l); 如果(prevbar_L==0 || prevbar_L>bar_L) { prevbar_L = bar_L。 } } } 如果(Hour()==h_end) { trade_time = false; prevbar_H = 0; prevbar_L = 0; DeletePending()。 DeleteBUY()。 卖出=0。 buy=0。 } //+--------------------------------------------------------buy or sell----------+ 如果(Hour()==h_beg) { 如果(sell==0) { OrderSend(Symbol(),OP_SELLSTOP,Lots,prevbar_L,3,prevbar_L+200*Point,prevbar_L-200*Point, "MA sample",16384,0,Green)。 卖出=1。 } 如果(buy==0) { OrderSend(Symbol(),OP_BUYSTOP,Lots,prevbar_H,3,prevbar_H-200*Point,prevbar_H+200*Point, "MA sample",16384,0,Green) 买入=1。 } } //+------------------------------------------------------------------+ return(0); } //+------------------------------------------------------------------+ 空白的DeletePending() { for(int i=0; i<OrdersTotal(); i++) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。 { OrderDelete(OrderTicket())。 } } } 空白的DeleteBUY() { for(int i=0; i<OrdersTotal(); i++) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。 { 如果(OrderType() == OP_BUY) { OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red ) 。 } } } } Mladen Rakic 2013.10.08 17:21 #1602 carbonmimetic: HI Mladen,如果我想计算两个低点之间的柱子,如何避免周日晚上23点到00点的柱子? 因为在4小时图上有那个条形,而且只持续一个小时.....,它也出现在日线图上。 提前感谢 碳模仿者 添加一个类似于这样的星期 检查。 if (TimeDayOfWeek(Time[yourCounter])!=0) 0是星期天,在这种情况下,你必须跳过该条。 jeff yap 2013.10.09 00:00 #1603 因为我使用的系统就像马丁格尔交易系统,一旦我下单,大约有1个工作订单和4个待定订单,当失去第二个待定订单将成为工作订单,所以我需要移动前一个订单的TP等于当前订单,因此我希望能有EA自动这样做,所以我不需要一直看着它,因为有时需要出去吃午饭或晚餐。 carbonmimetic 2013.10.09 07:57 #1604 mladen: 碳模仿者添加一个类似于这样的星期检查。 if (TimeDayOfWeek(Time[yourCounter])!=0) 0是星期天,在这种情况下,你必须跳过这一栏。 ok....thanks a lot! manone 2013.10.09 10:12 #1605 你好,mladen。 能否请你帮助研究一下代码,我看到在实时图表中,它可以重绘过去的信号线,当我按下mt4菜单的刷新时,线可以完全转移位置,我是说过去的信号线。 你能不能解决这个问题,不要重绘过去或不能自动刷新的问题。是像计数条的问题还是内部循环的方式?我只是一个浅显的代码初学者。非常感谢您的帮助。 附加的文件: cci_test_repaintness.mq4 3 kb Mladen Rakic 2013.10.09 11:36 #1606 kenwa: 嗨,mladen。能否请你帮助研究一下代码,我看到在实时图表中,它可以重新绘制过去的信号线,当我按下mt4菜单的刷新时,该线可以完全转移位置,我是说过去的信号线。 你能不能解决这个问题,不要重绘过去或不能自动刷新的问题。是像计算条数的问题还是内部循环的方式?我只是一个浅显的代码初学者。非常感谢您的帮助。 kenwa 替换掉init并开始使用这些。 double CCI_idx[]; double CCI_idt[]; int init() { IndicatorBuffers(2); SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,CCI_idx); SetIndexBuffer(1,CCI_idt); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int i,counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; int limit = MathMin(Bars-counted_bars,Bars-1); for(i=limit;i>=0;i--) CCI_idt = iCCI(abc,0,CCI_Period,applied_price,i); for(i=limit;i>=0;i--) CCI_idx = iMAOnArray(CCI_idt,Bars,MA_Period,0,MA_Method,i); return(0); } 你不能用同一个缓冲区来收集cci值,然后存储这些cci的平均数--这导致了重绘的发生。另外,从CCI调用中删除了时间框架参考。如果你希望它也能在多时间框架模式下计算,必须以不同的方式编写 __________________________ PS:同样的建议也可以适用于在当前图表上使用不同的符号。当前符号的变化条数 不一定要与其他目标符号的条数相同,这样你就可以再次获得重绘效果,但还是保持原样。 Coding help 精英指标 :) 多时间框架指标 manone 2013.10.09 12:26 #1607 你好mladen。 参考上面的#1606,因为我是非常肤浅的初学者,或者说确实知道的很少,我不能理解你的意思,你能在这里附上一个可行的指标吗? 我可以用一个缓冲区来计算CCI值,然后做平均数,而不是用两个缓冲区吗? 你提到不同的符号,是否可以写一个简单的版本来适应同一图表上的两个符号? 如果是MTF,如何写,非常感谢帮助。 Mladen Rakic 2013.10.09 12:40 #1608 kenwa: 你好mladen,参考上面的#1606,因为我是非常肤浅的初学者,或者说确实知道的很少,我不能理解你的意思,你能在这里附上一个可行的指标吗? 我可以用一个缓冲区来计算CCI值,然后做平均数,而不是用两个缓冲区吗? 你提到不同的符号,能不能写一个简单的版本来适应同一个图表上的两个符号? 如果是mtf,怎么写呢,非常感谢你的帮助。 kenwa 你不能用同一个缓冲区来计算缓冲区,然后在同一个缓冲区中存储该CCI的平均数结果--平均数会改变过去的数值。 至于多符号指标(可以访问当前图表中的其他符号的指标):如果我公布解决方案,恐怕不会很简单。这方面没有简单的解决方案,你首先要弄清楚在同一时间内两个不同的符号会发生什么。 附上在当前符号和当前时间 框架下正常工作的版本(如果你想使用iMAOnArray()函数,这是你计算cci平均数的唯一方法) 附加的文件: cci_averaged_correct.mq4 2 kb Mladen Rakic 2013.10.09 14:05 #1609 kenwa 这将是最简单的方法,可以使它在多时间框架内工作,并能选择任何符号。你会发现,它并不像乍听起来那么简单,但这个方法能收集到所有需要的正确数据,并避免在收集到数据时重画。 附加的文件: cci_averaged_correct_-_mtf_and_multi_symbol.mq4 4 kb manone 2013.10.09 18:05 #1610 你好,mladen。 非常感谢,参考上文,如果你的mtf写在非mtf版本中会怎样? 我不能自己修改,因为我的幼儿园编码水平。顺便说一下,因为你似乎用了2个缓冲区来计算,但mt4只允许最多8个缓冲区,是吗?如果我想像所附的参考指标(这绝不是一个好的指标(我想里面有bug,在实盘中不那么可行)),只是供你参考,它可以同时显示8个符号,不需要货币或任何我想从外部输入的符号,(我想在SW中叠加同样的指标是不行的,因为那里的垂直刻度不固定)你如何能帮助我创建一个像参考指标那样的cci mtf(不需要那么复杂,但有类似的功能? 再次感谢你的帮助。 附加的文件: reference.mq4 17 kb 1...154155156157158159160161162163164165166167168...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
一次2个订单
你好,我正在尝试编写一个EA,我有一个问题,不知道如何解决:?
问题是我想在当前时间 打开2个订单(OPENSTOP和SELLSTOP),但在这个EA中,可能会打开100个或更多的订单,那么如何解决它,只打开2个订单呢?
extern double h_beg=10;
外置双倍h_end=23;
extern double TakeProfit=20;
extern double StopLoss=90;
//+------------------------------------------------------------------+
int start()
{
double prevbar_H;
double prevbar_L;
double bar_H;
双重bar_L。
双重卖出。
双重买入。
bool trade_time;
bool sell_opened;
bool buy_opened;
//+------------------------------------------------------------------+
如果(Hour()==h_beg)
{
trade_time = true;
for(int h=1; h<=11; h++)
{
bar_H = iHigh(NULL,0,h);
如果(prevbar_H==0 || prevbar_H<bar_H)
{
prevbar_H = bar_H。
}
}
for(int l=1; l<=11; l++)
{
bar_L = iLow(NULL,0,l);
如果(prevbar_L==0 || prevbar_L>bar_L)
{
prevbar_L = bar_L。
}
}
}
如果(Hour()==h_end)
{
trade_time = false;
prevbar_H = 0;
prevbar_L = 0;
DeletePending()。
DeleteBUY()。
卖出=0。
buy=0。
}
//+--------------------------------------------------------buy or sell----------+
如果(Hour()==h_beg)
{
如果(sell==0)
{
OrderSend(Symbol(),OP_SELLSTOP,Lots,prevbar_L,3,prevbar_L+200*Point,prevbar_L-200*Point, "MA sample",16384,0,Green)。
卖出=1。
}
如果(buy==0)
{
OrderSend(Symbol(),OP_BUYSTOP,Lots,prevbar_H,3,prevbar_H-200*Point,prevbar_H+200*Point, "MA sample",16384,0,Green)
买入=1。
}
}
//+------------------------------------------------------------------+
return(0);
}
//+------------------------------------------------------------------+
空白的DeletePending()
{
for(int i=0; i<OrdersTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。
{
OrderDelete(OrderTicket())。
}
}
}
空白的DeleteBUY()
{
for(int i=0; i<OrdersTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。
{
如果(OrderType() == OP_BUY)
{
OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red ) 。
}
}
}
}HI Mladen,
如果我想计算两个低点之间的柱子,如何避免周日晚上23点到00点的柱子?
因为在4小时图上有那个条形,而且只持续一个小时.....,它也出现在日线图上。
提前感谢碳模仿者
添加一个类似于这样的星期 检查。
0是星期天,在这种情况下,你必须跳过该条。
因为我使用的系统就像马丁格尔交易系统,一旦我下单,大约有1个工作订单和4个待定订单,当失去第二个待定订单将成为工作订单,所以我需要移动前一个订单的TP等于当前订单,因此我希望能有EA自动这样做,所以我不需要一直看着它,因为有时需要出去吃午饭或晚餐。
碳模仿者
添加一个类似于这样的星期检查。
ok....thanks a lot!
你好,mladen。
能否请你帮助研究一下代码,我看到在实时图表中,它可以重绘过去的信号线,当我按下mt4菜单的刷新时,线可以完全转移位置,我是说过去的信号线。
你能不能解决这个问题,不要重绘过去或不能自动刷新的问题。是像计数条的问题还是内部循环的方式?我只是一个浅显的代码初学者。非常感谢您的帮助。
嗨,mladen。
能否请你帮助研究一下代码,我看到在实时图表中,它可以重新绘制过去的信号线,当我按下mt4菜单的刷新时,该线可以完全转移位置,我是说过去的信号线。
你能不能解决这个问题,不要重绘过去或不能自动刷新的问题。是像计算条数的问题还是内部循环的方式?我只是一个浅显的代码初学者。非常感谢您的帮助。kenwa
替换掉init并开始使用这些。
double CCI_idx[];
double CCI_idt[];
int init()
{
IndicatorBuffers(2);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,CCI_idx);
SetIndexBuffer(1,CCI_idt);
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
for(i=limit;i>=0;i--) CCI_idt = iCCI(abc,0,CCI_Period,applied_price,i);
for(i=limit;i>=0;i--) CCI_idx = iMAOnArray(CCI_idt,Bars,MA_Period,0,MA_Method,i);
return(0);
}你不能用同一个缓冲区来收集cci值,然后存储这些cci的平均数--这导致了重绘的发生。另外,从CCI调用中删除了时间框架参考。如果你希望它也能在多时间框架模式下计算,必须以不同的方式编写
__________________________
PS:同样的建议也可以适用于在当前图表上使用不同的符号。当前符号的变化条数 不一定要与其他目标符号的条数相同,这样你就可以再次获得重绘效果,但还是保持原样。
你好mladen。
参考上面的#1606,因为我是非常肤浅的初学者,或者说确实知道的很少,我不能理解你的意思,你能在这里附上一个可行的指标吗? 我可以用一个缓冲区来计算CCI值,然后做平均数,而不是用两个缓冲区吗? 你提到不同的符号,是否可以写一个简单的版本来适应同一图表上的两个符号? 如果是MTF,如何写,非常感谢帮助。
你好mladen,参考上面的#1606,因为我是非常肤浅的初学者,或者说确实知道的很少,我不能理解你的意思,你能在这里附上一个可行的指标吗? 我可以用一个缓冲区来计算CCI值,然后做平均数,而不是用两个缓冲区吗? 你提到不同的符号,能不能写一个简单的版本来适应同一个图表上的两个符号? 如果是mtf,怎么写呢,非常感谢你的帮助。
kenwa
你不能用同一个缓冲区来计算缓冲区,然后在同一个缓冲区中存储该CCI的平均数结果--平均数会改变过去的数值。
至于多符号指标(可以访问当前图表中的其他符号的指标):如果我公布解决方案,恐怕不会很简单。这方面没有简单的解决方案,你首先要弄清楚在同一时间内两个不同的符号会发生什么。
附上在当前符号和当前时间 框架下正常工作的版本(如果你想使用iMAOnArray()函数,这是你计算cci平均数的唯一方法)
kenwa
这将是最简单的方法,可以使它在多时间框架内工作,并能选择任何符号。你会发现,它并不像乍听起来那么简单,但这个方法能收集到所有需要的正确数据,并避免在收集到数据时重画。
你好,mladen。
非常感谢,参考上文,如果你的mtf写在非mtf版本中会怎样? 我不能自己修改,因为我的幼儿园编码水平。顺便说一下,因为你似乎用了2个缓冲区来计算,但mt4只允许最多8个缓冲区,是吗?如果我想像所附的参考指标(这绝不是一个好的指标(我想里面有bug,在实盘中不那么可行)),只是供你参考,它可以同时显示8个符号,不需要货币或任何我想从外部输入的符号,(我想在SW中叠加同样的指标是不行的,因为那里的垂直刻度不固定)你如何能帮助我创建一个像参考指标那样的cci mtf(不需要那么复杂,但有类似的功能? 再次感谢你的帮助。