编码帮助 - 页 161

 

一次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 ) 。

}

}

}

}
 
carbonmimetic:
HI Mladen,

如果我想计算两个低点之间的柱子,如何避免周日晚上23点到00点的柱子?

因为在4小时图上有那个条形,而且只持续一个小时.....,它也出现在日线图上。

提前感谢

碳模仿者

添加一个类似于这样的星期 检查。

if (TimeDayOfWeek(Time[yourCounter])!=0)

0是星期天,在这种情况下,你必须跳过该条。

 

因为我使用的系统就像马丁格尔交易系统,一旦我下单,大约有1个工作订单和4个待定订单,当失去第二个待定订单将成为工作订单,所以我需要移动前一个订单的TP等于当前订单,因此我希望能有EA自动这样做,所以我不需要一直看着它,因为有时需要出去吃午饭或晚餐。

 
mladen:
碳模仿者

添加一个类似于这样的星期检查。

if (TimeDayOfWeek(Time[yourCounter])!=0)
0是星期天,在这种情况下,你必须跳过这一栏。

ok....thanks a lot!

 

你好,mladen。

能否请你帮助研究一下代码,我看到在实时图表中,它可以重绘过去的信号线,当我按下mt4菜单的刷新时,线可以完全转移位置,我是说过去的信号线。

你能不能解决这个问题,不要重绘过去或不能自动刷新的问题。是像计数条的问题还是内部循环的方式?我只是一个浅显的代码初学者。非常感谢您的帮助。

附加的文件:
 
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:同样的建议也可以适用于在当前图表上使用不同的符号。当前符号的变化条数 不一定要与其他目标符号的条数相同,这样你就可以再次获得重绘效果,但还是保持原样。

 

你好mladen。

参考上面的#1606,因为我是非常肤浅的初学者,或者说确实知道的很少,我不能理解你的意思,你能在这里附上一个可行的指标吗? 我可以用一个缓冲区来计算CCI值,然后做平均数,而不是用两个缓冲区吗? 你提到不同的符号,是否可以写一个简单的版本来适应同一图表上的两个符号? 如果是MTF,如何写,非常感谢帮助。

 
kenwa:
你好mladen,参考上面的#1606,因为我是非常肤浅的初学者,或者说确实知道的很少,我不能理解你的意思,你能在这里附上一个可行的指标吗? 我可以用一个缓冲区来计算CCI值,然后做平均数,而不是用两个缓冲区吗? 你提到不同的符号,能不能写一个简单的版本来适应同一个图表上的两个符号? 如果是mtf,怎么写呢,非常感谢你的帮助。

kenwa

你不能用同一个缓冲区来计算缓冲区,然后在同一个缓冲区中存储该CCI的平均数结果--平均数会改变过去的数值。

至于多符号指标(可以访问当前图表中的其他符号的指标):如果我公布解决方案,恐怕不会很简单。这方面没有简单的解决方案,你首先要弄清楚在同一时间内两个不同的符号会发生什么。

附上在当前符号和当前时间 框架下正常工作的版本(如果你想使用iMAOnArray()函数,这是你计算cci平均数的唯一方法)

附加的文件:
 

kenwa

这将是最简单的方法,可以使它在多时间框架内工作,并能选择任何符号。你会发现,它并不像乍听起来那么简单,但这个方法能收集到所有需要的正确数据,并避免在收集到数据时重画。

 

你好,mladen。

非常感谢,参考上文,如果你的mtf写在非mtf版本中会怎样? 我不能自己修改,因为我的幼儿园编码水平。顺便说一下,因为你似乎用了2个缓冲区来计算,但mt4只允许最多8个缓冲区,是吗?如果我想像所附的参考指标(这绝不是一个好的指标(我想里面有bug,在实盘中不那么可行)),只是供你参考,它可以同时显示8个符号,不需要货币或任何我想从外部输入的符号,(我想在SW中叠加同样的指标是不行的,因为那里的垂直刻度不固定)你如何能帮助我创建一个像参考指标那样的cci mtf(不需要那么复杂,但有类似的功能? 再次感谢你的帮助。

附加的文件:
reference.mq4  17 kb