如何编码? - 页 110 1...103104105106107108109110111112113114115116117...347 新评论 CodeMuncher 2008.07.23 19:05 #1091 你好。 我期待着学习你的技巧并向你展示我的技巧。 [删除] 2008.07.24 00:29 #1092 CodeMuncher: 嗨,我期待着学习你的技巧并向你展示我的技巧。 你会在这个论坛上找到很多好东西。 阅读和使用搜索功能不受任何限制!!。 你可以自由地问任何问题...这里有很多伟大的贡献者/帮助者。 费鲁弗斯 RonaldRaygun 2008.07.24 09:01 #1093 fireslayer26: 在这段代码中,它的追踪止损设置为45点。但是移动到45点之前,移动止损似乎并没有激活。我需要怎样修改才能在交易时激活移动止损? extern string Remark1 = "== Main Settings =="; extern int MagicNumber = 0; extern bool SignalMail = False; extern bool EachTickMode = true; extern double Lots = 4; extern int Slippage = 2; extern bool UseStopLoss = false; extern int StopLoss = 100; extern bool UseTakeProfit = false; extern int TakeProfit = 15; extern bool UseTrailingStop = true; extern int TrailingStop = 45; extern bool MoveStopOnce = False; extern int MoveStopWhenPrice = 50; extern int MoveStopTo = 1; extern int MaxConcurrentTrades = 2; //Version 2.01 int BarCount; int Current; bool TickCheck = False; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { BarCount = Bars; if (EachTickMode) Current = 0; else Current = 1; return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int Order = SIGNAL_NONE; int Total, Ticket; double StopLossLevel, TakeProfitLevel; if (EachTickMode && Bars != BarCount) TickCheck = False; Total = OrdersTotal(); Order = SIGNAL_NONE; //+------------------------------------------------------------------+ //| Variable Begin | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Variable End | //+------------------------------------------------------------------+ //Check position bool IsTrade = False; for (int i = 0; i < Total; i ++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { IsTrade = True; if(OrderType() == OP_BUY) { //Close //+------------------------------------------------------------------+ //| Signal Begin(Exit Buy) | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Signal End(Exit Buy) | //+------------------------------------------------------------------+ if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) { OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy"); if (!EachTickMode) BarCount = Bars; IsTrade = False; continue; } //MoveOnce if(MoveStopOnce && MoveStopWhenPrice > 0) { if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) { if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) { OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red); if (!EachTickMode) BarCount = Bars; continue; } } } //Trailing stop if(UseTrailingStop && TrailingStop > 0) { if(Bid - OrderStopLoss() > Point * TrailingStop) { if(OrderStopLoss() < Bid - Point * TrailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); if (!EachTickMode) BarCount = Bars; continue; } } } } else { //Close //+------------------------------------------------------------------+ //| Signal Begin(Exit Sell) | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Signal End(Exit Sell) | //+------------------------------------------------------------------+ if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) { OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell"); if (!EachTickMode) BarCount = Bars; IsTrade = False; continue; } //MoveOnce if(MoveStopOnce && MoveStopWhenPrice > 0) { if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) { if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) { OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red); if (!EachTickMode) BarCount = Bars; continue; } } } //Trailing stop if(UseTrailingStop && TrailingStop > 0) { if(((OrderStopLoss - Ask) > (Point * TrailingStop)) || OrderStopLoss() == 0) { if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange); if (!EachTickMode) BarCount = Bars; continue; } } } } } } 变化的是红色 [删除] 2008.07.24 13:12 #1094 我做了红色的修改,但现在EA似乎不愿意工作了。我把整个EA贴出来让你看一下。 谢谢! 附加的文件: williams_ea.mq4 12 kb RonaldRaygun 2008.07.24 13:15 #1095 确保你在orderstoploss后面加上()。 [删除] 2008.07.24 13:28 #1096 酷,成功了! 这个指标如何呢.... 能否将其修改为根据开盘情况显示不同颜色的价格?比如说,如果开盘价高于前一栏,那么价格将是绿色的,如果较低,则是红色,如果甚至是黄色?这些颜色是可以选择的?另外,你能不能把它扩展到显示10个开盘,而不是只有6个? 另外,在我们刚刚修复的EA中,我如何将一个输入设置,如 "激活追踪止损的点数"。我在另一个EA中有这样的设置,但不确定如何编码。 附加的文件: period_open.mq4 23 kb RonaldRaygun 2008.07.25 12:47 #1097 OrderComment() OrderTicket() 订单地段() 订单止损(OrderStopLoss) 下单获利(OrderTakeProfit) OrderOpenTime() 这些都是潜在的订单过滤工具。 这些特定的交易还有哪些地方使其独特? hiachiever 2008.07.25 18:51 #1098 Ronald Raygun: OrderComment()订单票() 订单批次(OrderLots) 订单止损(OrderStopLoss) 下单获利(OrderTakeProfit) 订单开放时间() 这些都是潜在的订单过滤工具。 这些特定的行业还有哪些地方使其独特? 其中两个最重要的过滤订单的工具是OrderSymbol()和OrderMagicNumber()。另一个值得注意的是OrderComment()。 最好的办法是在Metaeditor中输入其中一个,然后点击asnd这个词,再按下F1。这样做会显示帮助,并列出所有的订单函数。 编程愉快。 欢欢 MrPip 2008.07.25 19:43 #1099 使用OrderComment 当使用OrderComment()来识别交易时要小心。有时经纪人会在评论中添加字符。 最好的办法是使用 如果(StringFind(OrderComment(), UserComment, 0) > 0) { //在OrderComment中找到由UserComment确定的订单 } 而不是 如果(OrderComment() == UserComment) { // 订单可能是由UserComment识别的 // 如果OrderComment没有被经纪人改变的话 } 罗伯特 MiniMe 2008.07.25 22:31 #1100 在beakeven关闭交易 .............. 1...103104105106107108109110111112113114115116117...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好。
我期待着学习你的技巧并向你展示我的技巧。
嗨,我期待着学习你的技巧并向你展示我的技巧。
你会在这个论坛上找到很多好东西。
阅读和使用搜索功能不受任何限制!!。
你可以自由地问任何问题...这里有很多伟大的贡献者/帮助者。
费鲁弗斯
在这段代码中,它的追踪止损设置为45点。但是移动到45点之前,移动止损似乎并没有激活。我需要怎样修改才能在交易时激活移动止损?
extern string Remark1 = "== Main Settings ==";
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = true;
extern double Lots = 4;
extern int Slippage = 2;
extern bool UseStopLoss = false;
extern int StopLoss = 100;
extern bool UseTakeProfit = false;
extern int TakeProfit = 15;
extern bool UseTrailingStop = true;
extern int TrailingStop = 45;
extern bool MoveStopOnce = False;
extern int MoveStopWhenPrice = 50;
extern int MoveStopTo = 1;
extern int MaxConcurrentTrades = 2;
//Version 2.01
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderStopLoss() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(((OrderStopLoss - Ask) > (Point * TrailingStop)) || OrderStopLoss() == 0) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
变化的是红色
我做了红色的修改,但现在EA似乎不愿意工作了。我把整个EA贴出来让你看一下。 谢谢!
确保你在orderstoploss后面加上()。
酷,成功了!
这个指标如何呢....
能否将其修改为根据开盘情况显示不同颜色的价格?比如说,如果开盘价高于前一栏,那么价格将是绿色的,如果较低,则是红色,如果甚至是黄色?这些颜色是可以选择的?另外,你能不能把它扩展到显示10个开盘,而不是只有6个?
另外,在我们刚刚修复的EA中,我如何将一个输入设置,如 "激活追踪止损的点数"。我在另一个EA中有这样的设置,但不确定如何编码。
OrderComment()
OrderTicket()
订单地段()
订单止损(OrderStopLoss)
下单获利(OrderTakeProfit)
OrderOpenTime()
这些都是潜在的订单过滤工具。
这些特定的交易还有哪些地方使其独特?
OrderComment()
订单票()
订单批次(OrderLots)
订单止损(OrderStopLoss)
下单获利(OrderTakeProfit)
订单开放时间()
这些都是潜在的订单过滤工具。
这些特定的行业还有哪些地方使其独特?其中两个最重要的过滤订单的工具是OrderSymbol()和OrderMagicNumber()。另一个值得注意的是OrderComment()。
最好的办法是在Metaeditor中输入其中一个,然后点击asnd这个词,再按下F1。这样做会显示帮助,并列出所有的订单函数。
编程愉快。
欢欢
使用OrderComment
当使用OrderComment()来识别交易时要小心。有时经纪人会在评论中添加字符。
最好的办法是使用
如果(StringFind(OrderComment(), UserComment, 0) > 0)
{
//在OrderComment中找到由UserComment确定的订单
}
而不是
如果(OrderComment() == UserComment)
{
// 订单可能是由UserComment识别的
// 如果OrderComment没有被经纪人改变的话
}
罗伯特
在beakeven关闭交易
..............