如何编码? - 页 318 1...311312313314315316317318319320321322323324325...347 新评论 dasio 2012.10.17 20:50 #3171 mladen: dasio 它已经在循环计算当前一天的所有小时。我把iClose()和iOpen()放在一起,只是作为一个从1小时以外的时间框架调用的例子。如果你想访问与当前日期不同的日期,那么就把startTime=iTime(NULL,PERIOD_D1,0); 部分替换为你希望收集的任何日期的数据。 谢谢你。 也许我必须要学习。 我不明白我怎么能对00:00的蜡烛-01:00-02:00等进行单独计算。 对不起 Mastercash 2012.10.18 15:27 #3172 信号问题 Mladen 谢谢你,我已经仔细看了....Im仍在实验的代码。我将通知当通过。 Mladen Rakic 2012.10.18 17:39 #3173 大士 这一部分 int i=iBarShift(NULL,PERIOD_H1,startTime); 将i设置为指定日期的第一根小时蜡烛的位置(这就是为什么添加了startTime=iTime(NULL,PERIOD_D1,0); 的原因--为了找出一天的起始时间),之后它将循环查看每根1小时的蜡烛值,直到一天保持不变(例如,在星期五, 它不会循环24次,而是22或23次,取决于你的经纪人)。 如果你需要感觉到一些数组,必须以不同的方式完成,如果这是你的想法,请让我现在就去做) dasio: 谢谢你。也许我必须要学习。 我不明白我如何能对00:00的蜡烛-01:00-02:00等进行单独计算。 对不起 Tomcat98 2012.10.18 21:47 #3174 如何制作一个专家站? 编码员你好。 如何编写一些额外的代码,使专家在交易胜利后停止? 点子已经在袋子里了,然后让专家止损... 非常感谢 Tomcat98 dasio 2012.10.19 05:21 #3175 mladen: dasio这一部分 int i=iBarShift(NULL,PERIOD_H1,startTime); 将i设置为指定日期的第一根小时蜡烛的位置(这就是为什么添加了startTime=iTime(NULL,PERIOD_D1,0); 的原因--以找出一天的起始时间),然后它将循环查看每个1小时的条形值,直到一天保持不变(例如,在星期五,它不会循环24次,而是22或23次,取决于你的经纪人)。 如果你需要感觉到一些数组必须以不同的方式完成,我现在就告诉你,如果这是你的想法) 谢谢你。 我明白了一点。 但是我需要它的例子。 我必须把这些变量联系起来。 (candle 00:00 ; Variable = Close+High 蜡烛01:00;变量1 = Close+Open 蜡烛02:00;变量2=高点+低点。 以此类推,一天中的所有小时的蜡烛。 因此,这些变量是以双倍的方式定义的。 之后我必须对变量进行一些数学计算,并将结果关联到一个缓冲区(这不是一个问题)。 对我来说,问题在于变量的关联....。 dasio 2012.10.19 12:15 #3176 另一个问题......我正在努力学习编程,有时(只是有时)我需要帮助。 如果我有一个放置两个挂单的 EA,如果我想当一个挂单被打开时,另一个挂单必须被删除,我该如何编码? 谢谢你。 Mladen Rakic 2012.10.19 14:51 #3177 你必须使用2个循环。 首先,你必须计算订单,以找出一些挂单 是否已成为 "常规 "订单(所以你必须对OP_BUY或OP_SELL类型的订单进行常规计算,如果你愿意,也要计算其余的订单)。 如果有打开的订单,那么你必须再循环一次,删除所有不是OP_BUY或OP_SELL类型的订单。 代码可以是这样的。 int opened =0; int pending =0; for(int i=OrdersTotal()-1; i>=0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol() !=Symbol()) continue; if(OrderMagicNumber()!=MagicNumber) continue; if(OrderType()==OP_BUY || OrderType()==OP_SELL) opened++; else pending++; } if (opened>0 && pending>0) { for(i=OrdersTotal()-1; i>=0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol() !=Symbol()) continue; if(OrderMagicNumber()!=MagicNumber) continue; if(OrderType()!=OP_BUY && OrderType()!=OP_SELL) OrderDelete(OrderTicket()); } } dasio: 另一个问题......我正在努力学习编程,有时(只是有时)我需要帮助。如果我有一个EA,放置了两个挂单,如果我想当一个挂单被打开时,另一个挂单必须被删除,我如何编码? 谢谢你 EA不会在多对上运行,需要帮助 被错误困扰的是没有交易业务 [存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. pipsmonitor 2012.10.20 01:45 #3178 只关闭所有卖出或所有买入头寸(当达到目标利润时)。 大家好...我是外汇和EA的新手。我试图找到一个 "关闭所有卖出 "或 "关闭所有买入 "的EA,但没有找到。我只 找到了关闭 所有卖出或所有买入而没有 "击中目标或利润"。如果有人能帮助我创建一个具有以下功能的EA,这是否可能呢? 1)如果利润达到X目标,关闭所有卖出。 2)如果利润达到X目标,关闭所有的买入。 3)包括追踪止损(如果可能,如果不能,没有问题) 4)如果净值或保证金水平低于X%,如果关闭所有买入或关闭所有卖出,则不关闭(如果可能,如果不能,则没有问题) 注意。 如果没有4是很难编码的,所以只要在一个EA中没有1、2和3。 如果没有4和3,那么在一个EA中就没有1和2。 如果仍然困难,就单独创建1和2。 如果有人能向我提供上述信息,我将非常感激。 预先感谢 William Snyder 2012.10.20 03:22 #3179 pipsmonitor:大家好...我是外汇和EA的新手。我试图找到一个 "关闭所有卖出 "或 "关闭所有买入 "的EA,但没有找到。我只找到了关闭所有卖出或所有买入而没有 "击中目标或利润"。如果有人能帮助我创建一个具有以下功能的EA,这是否可能呢?1)如果利润达到X目标,关闭所有卖出。 2)如果利润达到X目标,关闭所有买入。 3)包括追踪止损(如果可能,如果不能就没有问题) 4)如果股本或保证金水平低于X%,如果关闭所有买入或关闭所有卖出,则不关闭(如果可能,如果不能,则没有问题) 注意。 如果没有4是很难编码的,所以只要在一个EA中没有1、2和3。 如果没有4和3,那么在一个EA中就没有1和2。 如果仍然困难,就单独创建1和2。 如果有人能向我提供上述信息,我将非常感激。 预先感谢 你好,Pipsmonitor。 也许在这个页面上找到了一些东西https://www.mql5.com/en/forum/181179 也在论坛标题栏上做了一个Goggle搜索,使用了closed on profit发现了一些你可能会用到的东西,也可以尝试搜索trailing Eas,知道有一个Ema trailing和BBand stop trailing Ea。 dasio 2012.10.22 05:26 #3180 你好。 我正在尝试合并这两段代码,但我遇到了麻烦。 我需要当一个挂单 被执行时,另一个必须被取消。 谢谢你的帮助 int opened =0; int pending =0; for(int i=OrdersTotal()-1; i>=0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol() !=Symbol()) continue; if(OrderMagicNumber()!=Magic) continue; if(OrderType()==OP_BUY || OrderType()==OP_SELL) opened++; else pending++; } if (opened>0 && pending>0) { for(i=OrdersTotal()-1; i>=0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol() !=Symbol()) continue; if(OrderMagicNumber()!=Magic) continue; if(OrderType()!=OP_BUY && OrderType()!=OP_SELL) OrderDelete(OrderTicket()); } } [/PHP] [PHP] extern int Magic = 68415; extern int Orario_Inizio = 0; extern int Orario_Fine = 6; extern int Buffer = 0; extern double Lotti = 0.1; extern int TakeProfit = 10; extern int StopLoss = 50; double Massimo; double Minimo; int BarCount; int BarStart; int BarShift; double MinLot; double LotSize; int i; int ticket; string Status; string BuyStatus1; string SellStatus1; double Range; string CommentoRange; double pipMultiplier = 1; int init() { } int start() { if (Digits==3 || Digits==5) {pipMultiplier = 10;} else {pipMultiplier = 1; } double TakeProfit1 = TakeProfit*Point*pipMultiplier; double StopLoss1 = StopLoss*Point*pipMultiplier; double Buffer1 = Buffer*Point*pipMultiplier; double StopLossPrice = NormalizeDouble(StopLoss1,Digits); double TakeProfitPrice = NormalizeDouble(TakeProfit1,Digits); double BufferPrice = NormalizeDouble(Buffer1,Digits); //CALCOLA LE BARRE DEL RANGE if(Orario_Inizio>Orario_Fine) { BarCount=24+Orario_Fine-Orario_Inizio; } if(Orario_Inizio<Orario_Fine) { BarCount=Orario_Fine-Orario_Inizio; } //CALCOLA IL MASSIMO E IL MINIMO DEL RANGE if(Hour()>=Orario_Fine) { BarStart=Hour()-Orario_Fine; BarShift=BarStart+BarCount; Minimo=iLow(NULL,PERIOD_H1,BarStart); Massimo=0; for(i=BarStart;i<=BarShift;i++) { Massimo=MathMax(Massimo,iHigh(NULL,PERIOD_H1,i)); Minimo=MathMin(Minimo,iLow(NULL,PERIOD_H1,i)); Range=(Massimo-Minimo)/Point; } } else { Massimo=0; Minimo=0; return(0); } //CONTROLLA SE E' L'ORARIO PER POTER TRADARE if(Hour()==Orario_Fine && OrdersTotal()<2) { //CONTROLLA SE IL MASSIMO E' STATO ROTTO. CONDIZIONE BUY double OpenPriceBuy = NormalizeDouble((Massimo+BufferPrice),Digits); ticket=OrderSend(Symbol(),OP_BUYSTOP,Lotti,OpenPriceBuy,0,OpenPriceBuy-StopLossPrice,OpenPriceBuy+TakeProfitPrice,NULL,Magic,0,Blue); //CONTROLLA SE IL MINIMO E' STATO ROTTO. CONDIZIONE SELL double OpenPriceSell = NormalizeDouble((Minimo-BufferPrice),Digits); ticket=OrderSend(Symbol(),OP_SELLSTOP,Lotti,OpenPriceSell,0,OpenPriceSell+StopLossPrice,OpenPriceSell-TakeProfitPrice,NULL,Magic,0,Red); if (ticket != -1) return(0); } } Please fix this indicator How to code? 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 1...311312313314315316317318319320321322323324325...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
dasio 它已经在循环计算当前一天的所有小时。我把iClose()和iOpen()放在一起,只是作为一个从1小时以外的时间框架调用的例子。如果你想访问与当前日期不同的日期,那么就把startTime=iTime(NULL,PERIOD_D1,0); 部分替换为你希望收集的任何日期的数据。
谢谢你。
也许我必须要学习。
我不明白我怎么能对00:00的蜡烛-01:00-02:00等进行单独计算。
对不起
信号问题
Mladen
谢谢你,我已经仔细看了....Im仍在实验的代码。我将通知当通过。
大士
这一部分
将i设置为指定日期的第一根小时蜡烛的位置(这就是为什么添加了startTime=iTime(NULL,PERIOD_D1,0); 的原因--为了找出一天的起始时间),之后它将循环查看每根1小时的蜡烛值,直到一天保持不变(例如,在星期五, 它不会循环24次,而是22或23次,取决于你的经纪人)。
如果你需要感觉到一些数组,必须以不同的方式完成,如果这是你的想法,请让我现在就去做)
谢谢你。
也许我必须要学习。
我不明白我如何能对00:00的蜡烛-01:00-02:00等进行单独计算。
对不起如何制作一个专家站?
编码员你好。
如何编写一些额外的代码,使专家在交易胜利后停止?
点子已经在袋子里了,然后让专家止损...
非常感谢
Tomcat98
dasio
这一部分
将i设置为指定日期的第一根小时蜡烛的位置(这就是为什么添加了startTime=iTime(NULL,PERIOD_D1,0); 的原因--以找出一天的起始时间),然后它将循环查看每个1小时的条形值,直到一天保持不变(例如,在星期五,它不会循环24次,而是22或23次,取决于你的经纪人)。
如果你需要感觉到一些数组必须以不同的方式完成,我现在就告诉你,如果这是你的想法)谢谢你。
我明白了一点。
但是我需要它的例子。
我必须把这些变量联系起来。
(candle 00:00 ; Variable = Close+High
蜡烛01:00;变量1 = Close+Open
蜡烛02:00;变量2=高点+低点。
以此类推,一天中的所有小时的蜡烛。
因此,这些变量是以双倍的方式定义的。
之后我必须对变量进行一些数学计算,并将结果关联到一个缓冲区(这不是一个问题)。
对我来说,问题在于变量的关联....。
另一个问题......我正在努力学习编程,有时(只是有时)我需要帮助。
如果我有一个放置两个挂单的 EA,如果我想当一个挂单被打开时,另一个挂单必须被删除,我该如何编码?
谢谢你。
你必须使用2个循环。
首先,你必须计算订单,以找出一些挂单 是否已成为 "常规 "订单(所以你必须对OP_BUY或OP_SELL类型的订单进行常规计算,如果你愿意,也要计算其余的订单)。
如果有打开的订单,那么你必须再循环一次,删除所有不是OP_BUY或OP_SELL类型的订单。
代码可以是这样的。
int pending =0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() !=Symbol()) continue;
if(OrderMagicNumber()!=MagicNumber) continue;
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
opened++;
else pending++;
}
if (opened>0 && pending>0)
{
for(i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() !=Symbol()) continue;
if(OrderMagicNumber()!=MagicNumber) continue;
if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)
OrderDelete(OrderTicket());
}
}另一个问题......我正在努力学习编程,有时(只是有时)我需要帮助。
如果我有一个EA,放置了两个挂单,如果我想当一个挂单被打开时,另一个挂单必须被删除,我如何编码?
谢谢你只关闭所有卖出或所有买入头寸(当达到目标利润时)。
大家好...我是外汇和EA的新手。我试图找到一个 "关闭所有卖出 "或 "关闭所有买入 "的EA,但没有找到。我只 找到了关闭 所有卖出或所有买入而没有 "击中目标或利润"。如果有人能帮助我创建一个具有以下功能的EA,这是否可能呢?
1)如果利润达到X目标,关闭所有卖出。
2)如果利润达到X目标,关闭所有的买入。
3)包括追踪止损(如果可能,如果不能,没有问题)
4)如果净值或保证金水平低于X%,如果关闭所有买入或关闭所有卖出,则不关闭(如果可能,如果不能,则没有问题)
注意。
如果没有4是很难编码的,所以只要在一个EA中没有1、2和3。
如果没有4和3,那么在一个EA中就没有1和2。
如果仍然困难,就单独创建1和2。
如果有人能向我提供上述信息,我将非常感激。
预先感谢
大家好...我是外汇和EA的新手。我试图找到一个 "关闭所有卖出 "或 "关闭所有买入 "的EA,但没有找到。我只找到了关闭所有卖出或所有买入而没有 "击中目标或利润"。如果有人能帮助我创建一个具有以下功能的EA,这是否可能呢?
1)如果利润达到X目标,关闭所有卖出。
2)如果利润达到X目标,关闭所有买入。
3)包括追踪止损(如果可能,如果不能就没有问题)
4)如果股本或保证金水平低于X%,如果关闭所有买入或关闭所有卖出,则不关闭(如果可能,如果不能,则没有问题)
注意。
如果没有4是很难编码的,所以只要在一个EA中没有1、2和3。
如果没有4和3,那么在一个EA中就没有1和2。
如果仍然困难,就单独创建1和2。
如果有人能向我提供上述信息,我将非常感激。
预先感谢你好,Pipsmonitor。
也许在这个页面上找到了一些东西https://www.mql5.com/en/forum/181179 也在论坛标题栏上做了一个Goggle搜索,使用了closed on profit发现了一些你可能会用到的东西,也可以尝试搜索trailing Eas,知道有一个Ema trailing和BBand stop trailing Ea。
你好。
我正在尝试合并这两段代码,但我遇到了麻烦。
我需要当一个挂单 被执行时,另一个必须被取消。
谢谢你的帮助
int pending =0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() !=Symbol()) continue;
if(OrderMagicNumber()!=Magic) continue;
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
opened++;
else pending++;
}
if (opened>0 && pending>0)
{
for(i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() !=Symbol()) continue;
if(OrderMagicNumber()!=Magic) continue;
if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)
OrderDelete(OrderTicket());
}
} [/PHP]
[PHP] extern int Magic = 68415;
extern int Orario_Inizio = 0;
extern int Orario_Fine = 6;
extern int Buffer = 0;
extern double Lotti = 0.1;
extern int TakeProfit = 10;
extern int StopLoss = 50;
double Massimo;
double Minimo;
int BarCount;
int BarStart;
int BarShift;
double MinLot;
double LotSize;
int i;
int ticket;
string Status;
string BuyStatus1;
string SellStatus1;
double Range;
string CommentoRange;
double pipMultiplier = 1;
int init()
{
}
int start()
{
if (Digits==3 || Digits==5)
{pipMultiplier = 10;}
else {pipMultiplier = 1; }
double TakeProfit1 = TakeProfit*Point*pipMultiplier;
double StopLoss1 = StopLoss*Point*pipMultiplier;
double Buffer1 = Buffer*Point*pipMultiplier;
double StopLossPrice = NormalizeDouble(StopLoss1,Digits);
double TakeProfitPrice = NormalizeDouble(TakeProfit1,Digits);
double BufferPrice = NormalizeDouble(Buffer1,Digits);
//CALCOLA LE BARRE DEL RANGE
if(Orario_Inizio>Orario_Fine)
{
BarCount=24+Orario_Fine-Orario_Inizio;
}
if(Orario_Inizio<Orario_Fine)
{
BarCount=Orario_Fine-Orario_Inizio;
}
//CALCOLA IL MASSIMO E IL MINIMO DEL RANGE
if(Hour()>=Orario_Fine)
{
BarStart=Hour()-Orario_Fine;
BarShift=BarStart+BarCount;
Minimo=iLow(NULL,PERIOD_H1,BarStart);
Massimo=0;
for(i=BarStart;i<=BarShift;i++)
{
Massimo=MathMax(Massimo,iHigh(NULL,PERIOD_H1,i));
Minimo=MathMin(Minimo,iLow(NULL,PERIOD_H1,i));
Range=(Massimo-Minimo)/Point;
}
}
else
{
Massimo=0;
Minimo=0;
return(0);
}
//CONTROLLA SE E' L'ORARIO PER POTER TRADARE
if(Hour()==Orario_Fine && OrdersTotal()<2)
{
//CONTROLLA SE IL MASSIMO E' STATO ROTTO. CONDIZIONE BUY
double OpenPriceBuy = NormalizeDouble((Massimo+BufferPrice),Digits);
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lotti,OpenPriceBuy,0,OpenPriceBuy-StopLossPrice,OpenPriceBuy+TakeProfitPrice,NULL,Magic,0,Blue);
//CONTROLLA SE IL MINIMO E' STATO ROTTO. CONDIZIONE SELL
double OpenPriceSell = NormalizeDouble((Minimo-BufferPrice),Digits);
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lotti,OpenPriceSell,0,OpenPriceSell+StopLossPrice,OpenPriceSell-TakeProfitPrice,NULL,Magic,0,Red);
if (ticket != -1)
return(0);
}
}