如何编码? - 页 110

 

你好。

我期待着学习你的技巧并向你展示我的技巧。

 
CodeMuncher:
嗨,我期待着学习你的技巧并向你展示我的技巧。

你会在这个论坛上找到很多好东西。

阅读和使用搜索功能不受任何限制!!。

你可以自由地问任何问题...这里有很多伟大的贡献者/帮助者。

费鲁弗斯

 
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;

}

}

}

}

}

}

变化的是红色

 

我做了红色的修改,但现在EA似乎不愿意工作了。我把整个EA贴出来让你看一下。 谢谢!

附加的文件:
williams_ea.mq4  12 kb
 

确保你在orderstoploss后面加上()。

 

酷,成功了!

这个指标如何呢....

能否将其修改为根据开盘情况显示不同颜色的价格?比如说,如果开盘价高于前一栏,那么价格将是绿色的,如果较低,则是红色,如果甚至是黄色?这些颜色是可以选择的?另外,你能不能把它扩展到显示10个开盘,而不是只有6个?

另外,在我们刚刚修复的EA中,我如何将一个输入设置,如 "激活追踪止损的点数"。我在另一个EA中有这样的设置,但不确定如何编码。

附加的文件:
period_open.mq4  23 kb
 

OrderComment()

OrderTicket()

订单地段()

订单止损(OrderStopLoss)

下单获利(OrderTakeProfit)

OrderOpenTime()

这些都是潜在的订单过滤工具。

这些特定的交易还有哪些地方使其独特?

 
Ronald Raygun:
OrderComment()

订单票()

订单批次(OrderLots)

订单止损(OrderStopLoss)

下单获利(OrderTakeProfit)

订单开放时间()

这些都是潜在的订单过滤工具。

这些特定的行业还有哪些地方使其独特?

其中两个最重要的过滤订单的工具是OrderSymbol()和OrderMagicNumber()。另一个值得注意的是OrderComment()。

最好的办法是在Metaeditor中输入其中一个,然后点击asnd这个词,再按下F1。这样做会显示帮助,并列出所有的订单函数

编程愉快。

欢欢

 

使用OrderComment

当使用OrderComment()来识别交易时要小心。有时经纪人会在评论中添加字符。

最好的办法是使用

如果(StringFind(OrderComment(), UserComment, 0) > 0)

{

//在OrderComment中找到由UserComment确定的订单

}

而不是

如果(OrderComment() == UserComment)

{

// 订单可能是由UserComment识别的

// 如果OrderComment没有被经纪人改变的话

}

罗伯特

 

在beakeven关闭交易

..............