如何编码? - 页 265 1...258259260261262263264265266267268269270271272...347 新评论 ccjjaa 2011.07.06 02:06 #2641 未知的子窗口编号 编码员朋友们好 有谁能解决这个关于iCustom调用的问题,我已经尝试了所有我能想到的方法,但在Experts标签中仍然有同样的信息。 ObjectCreate函数 的未知子窗口号-1 Regards CJA Robert 2011.07.06 06:20 #2642 删除 指标中的子窗口调用 cja: 编码员朋友们好 有谁能解决这个iCustom调用的问题,我已经尝试了所有我能想到的方法,但在专家标签中仍然有同样的信息。ObjectCreate函数的未知子窗口数-1 尊敬的CJA 你好,CJA。 我有一个解决方法,我用来解决这个问题。 你的EA在iCustom中调用的指标正试图找到一个子窗口来绘制它的对象。 在大多数情况下,你不需要你的指标绘制任何东西,只是向你的EA提供指标值。 我的解决方案是复制一个指标,删除子窗口调用和对象绘制程序。 这就消除了子窗口的错误,并使EA运行得更快。 然后在你的EA的iCustom语句中使用这个新的指标名称。 我确信可能有更好的代码解决方案,但这对我来说是有效的。 希望这有帮助。 罗伯特 ccjjaa 2011.07.06 11:10 #2643 iCustom subwindow错误 cosmiclifeform: 嗨,CJA。我有一个解决方法,我用来解决这个问题。 你的EA在iCustom中调用的指标正试图找到一个子窗口来绘制它的对象。 在大多数情况下,你不需要你的指标绘制任何东西,只是向你的EA提供指标值。 我的解决方案是复制一个指标,删除子窗口调用和对象绘制程序。 这就消除了子窗口的错误,并使EA运行得更快。 然后在你的EA的iCustom语句中使用这个新的指标名称。 我确信可能有更好的代码解决方案,但这对我来说是有效的。 希望这有帮助。 罗伯特 谢谢你,罗伯特--你的建议很有效,但是我怀疑一定有其他的方法,尽管我在网上搜索了一下,没有发现任何有效的解决方案,也没有找到任何意义,只是有很多问题,没有答案。所以再次感谢您的帮助。 谢谢你,CJA Mladen Rakic 2011.07.07 04:31 #2644 CJA 只是一个建议:为什么不使用(当用iCustom()调用时)一个参数 来传递所需的窗口号?比如:如果(ParameterWindowID>=0),那么它就来自iCustom,否则就做一些默认代码。 这样你就可以强制它绘制对象,即使是从另一个代码中调用,它也会在一个正确的地方绘制对象。 [删除] 2011.07.13 13:43 #2645 编码方面的帮助 你好,各位。 谁能告诉我是否可以在电子邮件警报报告中使用BOLD textFONTtype?如果可以的话,我应该如何编码? 谢谢你的帮助。 Min Li 2011.07.16 22:27 #2646 codersguru: 你是说如何保存为CSV文件吗?看看这个。 工具 - .csv阅读器 你好,Guru。 在您的网站上有什么地方可以让我下载这个dll吗?我认为这是一个很好的工具,而且我很肯定你能比我写得更好,所以我不会费心去写。提前感谢。 我需要注册吗?这位于下载部分,但我搞不清楚如何下载任何东西。 [删除] 2011.07.20 22:47 #2647 快速修改EA 你好。 需要一些帮助,我试着修改下面的代码,但EA一直让MT4崩溃。 我希望订单在当前条形图(即执行订单的条形图)收盘时关闭。基本上是交易一个柱子。 这是原来的代码,它从信号到信号进行交易。 //+------------------------------------------------------------------+ //| Signal Begin(Exit Buy) | //+------------------------------------------------------------------+ if (signaldown!=EMPTY_VALUE&&signaldown!=0) Order = SIGNAL_CLOSEBUY; //+------------------------------------------------------------------+ //| 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; } //Trailing stop if(UseTrailingStop && TrailingStop > 0) { if(Bid - OrderOpenPrice() > 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) | //+------------------------------------------------------------------+ if (signalup!=EMPTY_VALUE&&signalup!=0) Order = SIGNAL_CLOSESELL; //+------------------------------------------------------------------+ //| 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; } //Trailing stop if(UseTrailingStop && TrailingStop > 0) { if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) { if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange); if (!EachTickMode) BarCount = Bars; continue; } } } } } } //+------------------------------------------------------------------+ //| Signal Begin(Entry) | //+------------------------------------------------------------------+ //if (timeprev!=Time[0]){ // timeprev = Time[0]; if (signalup!=EMPTY_VALUE&&signalup!=0) { Order = SIGNAL_BUY; } if (signaldown!=EMPTY_VALUE&&signaldown!=0){ Order = SIGNAL_SELL; } // } //+------------------------------------------------------------------+ //| Signal End | //+------------------------------------------------------------------+ //Buy if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) { if(!IsTrade) { //Check free margin if (AccountFreeMargin() < (100 * Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0; if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0; Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue); if(Ticket > 0) { if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) { Print("BUY order opened : ", OrderOpenPrice()); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy"); } else { Print("Error opening BUY order : ", GetLastError()); } } if (EachTickMode) TickCheck = True; if (!EachTickMode) BarCount = Bars; return(0); } } //Sell if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) { if(!IsTrade) { //Check free margin if (AccountFreeMargin() < (100 * Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0; if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0; Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink); if(Ticket > 0) { if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) { Print("SELL order opened : ", OrderOpenPrice()); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell"); } else { Print("Error opening SELL order : ", GetLastError()); } } if (EachTickMode) TickCheck = True; if (!EachTickMode) BarCount = Bars; return(0); } } if (!EachTickMode) BarCount = Bars; return(0); } //+------------------------------------------------------------------+ 谁能帮帮我? 编码帮助 问吧! How to code? [删除] 2011.07.21 00:06 #2648 我还发现了这个代码。 if(data!=iTime(Symbol(),0,0)) { if(signalup!=EMPTY_VALUE&&signalup!=0) { if(openpos()>0) { for(i=0;i<OrdersTotal();i++) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==mn) { if(OrderClose(OrderTicket(),lots,Ask,slip)) Print("short was closed"); } } } Print("try open long"); Print(Symbol()); nt=OrderSend(Symbol(),OP_BUY,lots,Ask,slip,0,0,"ab",mn,0,Green); if(nt>0) Print("long order was opened"); } if(signaldown!=EMPTY_VALUE&&signaldown!=0) { if(openpos()>0) { for(i=0;i<OrdersTotal();i++) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&OrderMagicNumber()==mn) { if(OrderClose(OrderTicket(),lots,Bid,slip)) Print("long was closed"); } } } Print("try open short"); Print(Symbol()); nt=OrderSend(Symbol(),OP_SELL,lots,Bid,slip,0,0,"ab",mn,0,Red); if(nt>0) Print("short was opened"); } data=iTime(Symbol(),0,0); } //---- //---- return(0); } //+------------------------------------------------------------------+ int openpos() { int j=0; int i,n; n=OrdersTotal(); for(i=0;i<n;i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) if(OrderSymbol()==Symbol()&&OrderMagicNumber()==mn&&(OrderType()==OP_SELL||OrderType()==OP_BUY)) j++; } return(j); 有没有专家能告诉我哪一个写得更好? How to code? 编码帮助 问吧! ixbone 2011.07.21 20:37 #2649 一对订单的盈亏平衡(魔术)。 大家好。 我想用魔法收集一个货币对的所有订单(买入和卖出),如果它们达到盈亏平衡,所有的订单应该被关闭。 非常欢迎任何指导,谢谢 extern bool PairBreakeven=true;//每对订单的盈亏平衡点是同一对/魔法的所有订单。 extern double Pairbreakevengain=6;//实现收支平衡所需的点数收益 extern double Pairbreakeven=3;//收支平衡,订单关闭,3点利润/损失。 双倍Pairmovebreakeven; 如果(PairBreakeven=true){ if(Pairbreakevengain>0)Pairmovebreakeven(Pairbreakevengain,Pairbreakeven); CloseBuyOrders(Magic); CloseSellOrders(Magic)。 } void Pairmovebreakeven(double Pairbreakevengain,double Pairbreakeven){ RefreshRates(); 如果(OrdersTotal()>0){ for(int i=OrdersTotal();i>=0;i++){ OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。 如果(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic ){ 返回。 } } } } int CloseBuyOrders(int Magic){ //op_sell类似 int total=OrdersTotal(); for(int cnt=total-1;cnt>=0;cnt--){ OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)。 如果(OrderMagicNumber()==Magic && OrderSymbol()==Symbol()){ 如果(OrderType()==OP_BUY){ OrderClose(OrderTicket(),OrderLots(), Bid,3*mt)。 } } } return(0); } How to code? [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 NMSS_2 2011.07.23 03:58 #2650 有3个或更多维度的ArraySort。 有哪位专家能在这方面提供帮助? 我已经试过对一维或二维数组成功地使用arraysort。但在3维数组中被卡住了。据我所知,Arrayort 只使用 第一列进行排序。谁能告诉我如何解决3维或更多维度的数组排序问题? bool Restart = true; double arraystore[20][20][20]; double ArrayActual[20] = {1.23,3.65,0.02,5.44,0.92,0.11,1.21,999.0,555.5,0.0001,44.221,1.01,0.002}; void init() { if (Restart == true) { Go(); Restart = false; } } void start() { } void Go() { for (int a = 1; a<=3; a++) { for (int b = 1; b<=6; b++) { int c = b+ (a-1)*6; arraystore[a][0] = ArrayActual[c]; arraystore[a][1] = a; arraystore[a][2] = b +a; Print ( arraystore[a][0] + " . " + arraystore[a][1] + " . " + arraystore[a][2]); } } ArraySort(arraystore,WHOLE_ARRAY,1,MODE_DESCEND); for ( a = 1; a<=3; a++) { for ( b = 1; b<=6; b++) { Print ( arraystore[a][0] + " . " + arraystore[a][1] + " . " + arraystore[a][2]); } } } How to code? Sort multiple arrays Arraybsearch problem 1...258259260261262263264265266267268269270271272...347 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
未知的子窗口编号
编码员朋友们好
有谁能解决这个关于iCustom调用的问题,我已经尝试了所有我能想到的方法,但在Experts标签中仍然有同样的信息。
ObjectCreate函数 的未知子窗口号-1
Regards CJA
删除 指标中的子窗口调用
编码员朋友们好
有谁能解决这个iCustom调用的问题,我已经尝试了所有我能想到的方法,但在专家标签中仍然有同样的信息。
ObjectCreate函数的未知子窗口数-1
尊敬的CJA你好,CJA。
我有一个解决方法,我用来解决这个问题。
你的EA在iCustom中调用的指标正试图找到一个子窗口来绘制它的对象。
在大多数情况下,你不需要你的指标绘制任何东西,只是向你的EA提供指标值。
我的解决方案是复制一个指标,删除子窗口调用和对象绘制程序。
这就消除了子窗口的错误,并使EA运行得更快。
然后在你的EA的iCustom语句中使用这个新的指标名称。
我确信可能有更好的代码解决方案,但这对我来说是有效的。
希望这有帮助。
罗伯特
iCustom subwindow错误
嗨,CJA。
我有一个解决方法,我用来解决这个问题。
你的EA在iCustom中调用的指标正试图找到一个子窗口来绘制它的对象。
在大多数情况下,你不需要你的指标绘制任何东西,只是向你的EA提供指标值。
我的解决方案是复制一个指标,删除子窗口调用和对象绘制程序。
这就消除了子窗口的错误,并使EA运行得更快。
然后在你的EA的iCustom语句中使用这个新的指标名称。
我确信可能有更好的代码解决方案,但这对我来说是有效的。
希望这有帮助。
罗伯特谢谢你,罗伯特--你的建议很有效,但是我怀疑一定有其他的方法,尽管我在网上搜索了一下,没有发现任何有效的解决方案,也没有找到任何意义,只是有很多问题,没有答案。所以再次感谢您的帮助。
谢谢你,CJA
CJA
只是一个建议:为什么不使用(当用iCustom()调用时)一个参数 来传递所需的窗口号?比如:如果(ParameterWindowID>=0),那么它就来自iCustom,否则就做一些默认代码。
这样你就可以强制它绘制对象,即使是从另一个代码中调用,它也会在一个正确的地方绘制对象。
编码方面的帮助
你好,各位。
谁能告诉我是否可以在电子邮件警报报告中使用BOLD textFONTtype?如果可以的话,我应该如何编码?
谢谢你的帮助。
你是说如何保存为CSV文件吗?
看看这个。
工具 - .csv阅读器你好,Guru。
在您的网站上有什么地方可以让我下载这个dll吗?我认为这是一个很好的工具,而且我很肯定你能比我写得更好,所以我不会费心去写。提前感谢。
我需要注册吗?这位于下载部分,但我搞不清楚如何下载任何东西。
快速修改EA
你好。
需要一些帮助,我试着修改下面的代码,但EA一直让MT4崩溃。
我希望订单在当前条形图(即执行订单的条形图)收盘时关闭。基本上是交易一个柱子。
这是原来的代码,它从信号到信号进行交易。
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (signaldown!=EMPTY_VALUE&&signaldown!=0) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| 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;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > 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) |
//+------------------------------------------------------------------+
if (signalup!=EMPTY_VALUE&&signalup!=0) Order = SIGNAL_CLOSESELL;
//+------------------------------------------------------------------+
//| 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;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
//if (timeprev!=Time[0]){
// timeprev = Time[0];
if (signalup!=EMPTY_VALUE&&signalup!=0)
{
Order = SIGNAL_BUY;
}
if (signaldown!=EMPTY_VALUE&&signaldown!=0){
Order = SIGNAL_SELL;
}
// }
//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (100 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (100 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+谁能帮帮我?
我还发现了这个代码。
if(data!=iTime(Symbol(),0,0))
{
if(signalup!=EMPTY_VALUE&&signalup!=0)
{
if(openpos()>0)
{
for(i=0;i<OrdersTotal();i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==mn)
{
if(OrderClose(OrderTicket(),lots,Ask,slip))
Print("short was closed");
}
}
}
Print("try open long");
Print(Symbol());
nt=OrderSend(Symbol(),OP_BUY,lots,Ask,slip,0,0,"ab",mn,0,Green);
if(nt>0)
Print("long order was opened");
}
if(signaldown!=EMPTY_VALUE&&signaldown!=0)
{
if(openpos()>0)
{
for(i=0;i<OrdersTotal();i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&OrderMagicNumber()==mn)
{
if(OrderClose(OrderTicket(),lots,Bid,slip))
Print("long was closed");
}
}
}
Print("try open short");
Print(Symbol());
nt=OrderSend(Symbol(),OP_SELL,lots,Bid,slip,0,0,"ab",mn,0,Red);
if(nt>0)
Print("short was opened");
}
data=iTime(Symbol(),0,0);
}
//----
//----
return(0);
}
//+------------------------------------------------------------------+
int openpos()
{
int j=0;
int i,n;
n=OrdersTotal();
for(i=0;i<n;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==mn&&(OrderType()==OP_SELL||OrderType()==OP_BUY))
j++;
}
return(j);
有没有专家能告诉我哪一个写得更好?
一对订单的盈亏平衡(魔术)。
大家好。
我想用魔法收集一个货币对的所有订单(买入和卖出),如果它们达到盈亏平衡,所有的订单应该被关闭。
非常欢迎任何指导,谢谢
extern bool PairBreakeven=true;//每对订单的盈亏平衡点是同一对/魔法的所有订单。
extern double Pairbreakevengain=6;//实现收支平衡所需的点数收益
extern double Pairbreakeven=3;//收支平衡,订单关闭,3点利润/损失。
双倍Pairmovebreakeven;
如果(PairBreakeven=true){
if(Pairbreakevengain>0)Pairmovebreakeven(Pairbreakevengain,Pairbreakeven);
CloseBuyOrders(Magic);
CloseSellOrders(Magic)。
}
void Pairmovebreakeven(double Pairbreakevengain,double Pairbreakeven){
RefreshRates();
如果(OrdersTotal()>0){
for(int i=OrdersTotal();i>=0;i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。
如果(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic ){
返回。
}
}
}
}
int CloseBuyOrders(int Magic){ //op_sell类似
int total=OrdersTotal();
for(int cnt=total-1;cnt>=0;cnt--){
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)。
如果(OrderMagicNumber()==Magic && OrderSymbol()==Symbol()){
如果(OrderType()==OP_BUY){
OrderClose(OrderTicket(),OrderLots(), Bid,3*mt)。
}
}
}
return(0);
}
有3个或更多维度的ArraySort。
有哪位专家能在这方面提供帮助?
我已经试过对一维或二维数组成功地使用arraysort。但在3维数组中被卡住了。据我所知,Arrayort 只使用 第一列进行排序。谁能告诉我如何解决3维或更多维度的数组排序问题?
bool Restart = true;
double arraystore[20][20][20];
double ArrayActual[20] = {1.23,3.65,0.02,5.44,0.92,0.11,1.21,999.0,555.5,0.0001,44.221,1.01,0.002};
void init()
{
if (Restart == true)
{
Go();
Restart = false;
}
}
void start()
{
}
void Go()
{
for (int a = 1; a<=3; a++)
{
for (int b = 1; b<=6; b++)
{
int c = b+ (a-1)*6;
arraystore[a][0] = ArrayActual[c];
arraystore[a][1] = a;
arraystore[a][2] = b +a;
Print ( arraystore[a][0] + " . " + arraystore[a][1] + " . " + arraystore[a][2]);
}
}
ArraySort(arraystore,WHOLE_ARRAY,1,MODE_DESCEND);
for ( a = 1; a<=3; a++)
{
for ( b = 1; b<=6; b++)
{
Print ( arraystore[a][0] + " . " + arraystore[a][1] + " . " + arraystore[a][2]);
}
}
}