编码帮助 - 页 395 1...388389390391392393394395396397398399400401402...786 新评论 tfi_markets 2014.11.18 06:49 #3941 EA没有开出反仓 嗨,MQL编码员。 我有一个关于我的EA的错误的问题。似乎没有打开一个反趋势头寸(见所附的截图)。 它正在关闭交易,但它没有打开一个新的交易,以遵循新给定的趋势方向。 // Indicator HMA NMC double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); //+------------------------------------------------------------------+ //| BUY | //+------------------------------------------------------------------+ if(trendc!=trendp) { if(trendc==1) // code for buy OpenBuy(); return(0); } //+------------------------------------------------------------------+ //| SELL | //+------------------------------------------------------------------+ if(trendc==-1) // code for sell { OpenSell(); return(0); } } [/CODE] [CODE] void CheckForClose() { RefreshRates(); double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); for(int i=0;i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!= MAGIC) continue; if(OrderSymbol() != s_symbol) continue; //+-------------------------------------------------------------------------------+ //| Close BUY | //+-------------------------------------------------------------------------------+ if(trendc_c!=trendp_c) // Check trend { if(OrderType()==OP_BUY) { if(trendc_c==-1) //is buy? { bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy); if(buyClose==false) { int ErrorCode = GetLastError(); string ErrDesc = ErrorDescription(ErrorCode); string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc); if(ShowAlerts == true) Alert(ErrAlert); string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket()); Print(ErrLog); } } break; } } //+--------------------------------------------------------------------------------+ //| Close SELL | //+--------------------------------------------------------------------------------+ if(trendc_c!=trendp_c) { if(OrderType()==OP_SELL) { if(trendc_c==1) // SELL { bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell); if(sellClose == false) { ErrorCode = GetLastError(); ErrDesc = ErrorDescription(ErrorCode); ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc); if(ShowAlerts==true) Alert(ErrAlert); ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket()); Print(ErrLog); } } break; } } } } 谢谢你的帮助。 附加的文件: robotnic-bug-not-open_new_position.jpg 45 kb Coding help 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 求助,我想请高手朋友们写一个 止盈--止损脚本 Mladen Rakic 2014.11.18 08:02 #3942 secretcode: 亲爱的Mladen是否可以像这个帖子中那样在所附的指标中 "添加波段":https://www.mql5.com/en/forum/172894/page45 该指标来自精英部分,但我喜欢你在上面添加波段的方式。 谢谢你的帮助 秘密代码 秘密代码 这里有一个添加了波段的版本:ema_variation__filter_amp_bands_amp_mtf.ex4 附加的文件: ema_bands.gif 77 kb ema_variation__filter_amp_bands_amp_mtf.ex4 38 kb secretcode 2014.11.18 08:25 #3943 mladen: secretcode 这里有一个添加了波段的版本:ema_variation__filter_amp_bands_amp_mtf.ex4 谢谢你Mladen 我真的很感谢你的专业知识 真诚的 秘密代码 Mladen Rakic 2014.11.18 10:00 #3944 tfi_markets: 嗨,MQL编码员。我有一个关于我的EA中的一个错误的问题。似乎不能打开一个反趋势头寸(见所附截图)。 它正在关闭交易,但它没有打开一个新的交易来跟随新的给定趋势方向。 // Indicator HMA NMC double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); //+------------------------------------------------------------------+ //| BUY | //+------------------------------------------------------------------+ if(trendc!=trendp) { if(trendc==1) // code for buy OpenBuy(); return(0); } //+------------------------------------------------------------------+ //| SELL | //+------------------------------------------------------------------+ if(trendc==-1) // code for sell { OpenSell(); return(0); } } [/CODE] [CODE] void CheckForClose() { RefreshRates(); double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); for(int i=0;i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!= MAGIC) continue; if(OrderSymbol() != s_symbol) continue; //+-------------------------------------------------------------------------------+ //| Close BUY | //+-------------------------------------------------------------------------------+ if(trendc_c!=trendp_c) // Check trend { if(OrderType()==OP_BUY) { if(trendc_c==-1) //is buy? { bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy); if(buyClose==false) { int ErrorCode = GetLastError(); string ErrDesc = ErrorDescription(ErrorCode); string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc); if(ShowAlerts == true) Alert(ErrAlert); string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket()); Print(ErrLog); } } break; } } //+--------------------------------------------------------------------------------+ //| Close SELL | //+--------------------------------------------------------------------------------+ if(trendc_c!=trendp_c) { if(OrderType()==OP_SELL) { if(trendc_c==1) // SELL { bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell); if(sellClose == false) { ErrorCode = GetLastError(); ErrDesc = ErrorDescription(ErrorCode); ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc); if(ShowAlerts==true) Alert(ErrAlert); ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket()); Print(ErrLog); } } break; } } } } 提前感谢您! tfi_markets 试着将两个中断语句向上移动一行(在"}"内)。 [删除] 2014.11.18 10:03 #3945 你好,Mladen。 请您告诉我这段代码哪里出了问题。 附上指标All Pivots,我把它改成也显示前一天的开盘线、前一天的收盘线和当天的开盘线。 但该指标并不一致。它总是正确显示枢轴,但很少显示我添加的每日开盘、前日开盘和收盘线的代码。 我不明白为什么,代码看起来和枢轴代码一样,所以它应该全部显示,有时会显示,但并不总是。我做错了什么,但不确定是什么。 非常感谢 PG allpivots_daily.mq4 附加的文件: allpivots_daily.mq4 7 kb Mladen Rakic 2014.11.18 10:32 #3946 pgtips: 你好,Mladen。你能不能告诉我,我的这段代码哪里出错了。 附上指标All Pivots,我重新设计了它,也显示前一天的开盘线、前一天的收盘线和当天的开盘线。 但该指标并不一致。它总是正确显示枢轴,但很少显示我添加的每日开盘、前日开盘和收盘线的代码。 我不明白为什么,代码看起来和枢轴代码一样,所以它应该全部显示,有时会显示,但并不总是。我做错了什么,但不确定是什么。 非常感谢 PG 所有的枢轴_日报.mq4 PG 它工作得很好(见创建的对象列表)。检查是否有重叠的价格(这可能导致一些线不可见)。 另外,不要忘了在ObjectDel()函数中也添加你新创建的行。 附加的文件: objects.gif 49 kb [删除] 2014.11.18 11:03 #3947 谢谢Mladen,我一直在检查,它似乎对""内的行名很挑剔,这不是我所期望的。 像往常一样,感谢你的时间和帮助。 PG mladen: PG 工作正常(见所创建对象的列表)。检查是否有重叠的价格(这可能导致一些线不可见) Mladen Rakic 2014.11.18 14:54 #3948 pgtips: 谢谢Mladen,我一直在检查,它似乎对""内的行名很挑剔,这不是我期望的。像往常一样,感谢你的时间和帮助。 PG 对象的名称必须是唯一的--但就我所见,你已经解决了这个问题。 mr-roma 2014.11.18 16:18 #3949 请帮助我解决这个问题https://www.mql5.com/en/forum/174385/page263 [删除] 2014.11.18 20:06 #3950 谢谢你,Mladen。 我有一个问题,就是: 我的第一个信号是在最后一次卖出后买入的,我需要它是在条形图收于阻力位或代码的 "srUp "之后 卖出信号也是如此,必须是在支撑位或 "srDown "以下收盘。 我怎样才能在代码中解决这个问题? 第二,就是之前问的那个问题,我怎么能在我的代码中修复,以不同的颜色显示卖出后的第一个买入信号呢? #property strict #属性 indicator_chart_window #属性 indicator_buffers 4 #属性 indicator_color1 clrLime #属性 indicator_color2 clrRed #属性 indicator_color3 clrMagenta #属性 indicator_color4 clrCyan #define BUY 1 #define SELL 2 双重Buy[]。 卖出[]。 FirstBuy[], FirstSell[]。 int OnInit() { SetIndexBuffer(0,FirstBuy); SetIndexBuffer(1,FirstSell); SetIndexBuffer(2,Buy); SetIndexBuffer(3,Sell)。 for(int i=0; i<4; i++) { SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2); } SetIndexArrow (0,233); SetIndexArrow (1,234); SetIndexArrow (2,233); SetIndexArrow (3,234)。 返回(INIT_SUCCEEDED);} void OnDeinit(const int reason){}。 int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { static int lastSignal=0; for(int i=MathMin(rate_total-prev_calculated, rates_total-1); i>=0; i--){ FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE。 datetime when=Time; int w=iBarShift(NULL,PERIOD_H4, when), x=iBarShift(NULL,PERIOD_H1, when), y=iBarShift(NULL,PERIOD_M15,when)。 z=iBarShift(NULL,PERIOD_M5, when)。 double srUpH4 = iCustom(NULL,PERIOD_H4, "Support and Resistance (Barry)",0,w), srDownH4 = iCustom(NULL,PERIOD_H4, "支持和阻力(巴里)",1,w)。 MidH4 = (srUpH4+srDownH4)/2, srUpH1 = iCustom(NULL,PERIOD_H1, "Support and Resistance (Barry)",0,x)。 srDownH1 = iCustom(NULL,PERIOD_H1, "支持和阻力(巴里)",1,x)。 MidH1 = (srUpH1+srDownH1)/2, srUp15M = iCustom(NULL,PERIOD_M15, "Support and Resistance (Barry)",0,y)。 srDown15M = iCustom(NULL,PERIOD_M15, "Support and Resistance (Barry)",1,y)。 Mid15M = (srUp15M+srDown15M)/2, srUp5M = iCustom(NULL,PERIOD_M5, "Support and Resistance (Barry)",0,z)。 srDown5M = iCustom(NULL,PERIOD_M5, "支持和阻力(巴里)",1,z)。 Mid5M = (srUp5M+srDown5M)/2, srUp = iCustom(NULL,0, "Support and Resistance (Barry)",0,i)。 srDown = iCustom(NULL,0, "Support and Resistance (Barry)",1,i)。 if(ClosesrUp) { // 第一个买入信号 Buy=Low-_Point; } 否则 { Buy=EMPTY_VALUE; } if(Close>Mid5M && Close>srUp) { //第二个信号买入 Buy=Low-_Point; } 否则 { Buy=EMPTY_VALUE; } if(Close>MidH4 && Close>Mid15M && Close<srDown) { // 第一个信号卖出 Sell=High+_Point; } 否则 { Sell=EMPTY_VALUE; } if(Close<Mid5M && Close<srDown) { // 第二个信号卖出 Sell=High+_Point; } 否则 { Sell=EMPTY_VALUE; }} return(rate_total);} 这就是我的警报,我应该使用它还是使用Alert( t("text for pop up"))? void SoundAlert(datetime i, string dir) { static datetime lastAlert=0; if(lastAlert!=i) { Alert(StringFormat("%s signal on %s at %s",dir,Symbol(),TimeToStr(i))。 lastAlert=i;}} 谢谢你 mladen 附加的文件: signals.png 31 kb Coding help Display indicator on multiframes 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 1...388389390391392393394395396397398399400401402...786 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
EA没有开出反仓
嗨,MQL编码员。
我有一个关于我的EA的错误的问题。似乎没有打开一个反趋势头寸(见所附的截图)。
它正在关闭交易,但它没有打开一个新的交易,以遵循新给定的趋势方向。
// Indicator HMA NMC
double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
//+------------------------------------------------------------------+
//| BUY |
//+------------------------------------------------------------------+
if(trendc!=trendp)
{
if(trendc==1) // code for buy
OpenBuy();
return(0);
}
//+------------------------------------------------------------------+
//| SELL |
//+------------------------------------------------------------------+
if(trendc==-1) // code for sell
{
OpenSell();
return(0);
}
}
[/CODE]
[CODE]
void CheckForClose()
{
RefreshRates();
double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
for(int i=0;i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!= MAGIC) continue;
if(OrderSymbol() != s_symbol) continue;
//+-------------------------------------------------------------------------------+
//| Close BUY |
//+-------------------------------------------------------------------------------+
if(trendc_c!=trendp_c) // Check trend
{
if(OrderType()==OP_BUY)
{
if(trendc_c==-1) //is buy?
{
bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);
if(buyClose==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts == true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
//+--------------------------------------------------------------------------------+
//| Close SELL |
//+--------------------------------------------------------------------------------+
if(trendc_c!=trendp_c)
{
if(OrderType()==OP_SELL)
{
if(trendc_c==1) // SELL
{
bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);
if(sellClose == false)
{
ErrorCode = GetLastError();
ErrDesc = ErrorDescription(ErrorCode);
ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
}
}
谢谢你的帮助。
亲爱的Mladen
是否可以像这个帖子中那样在所附的指标中 "添加波段":https://www.mql5.com/en/forum/172894/page45
该指标来自精英部分,但我喜欢你在上面添加波段的方式。
谢谢你的帮助
秘密代码秘密代码
这里有一个添加了波段的版本:ema_variation__filter_amp_bands_amp_mtf.ex4
secretcode 这里有一个添加了波段的版本:ema_variation__filter_amp_bands_amp_mtf.ex4
谢谢你Mladen 我真的很感谢你的专业知识
真诚的
秘密代码
嗨,MQL编码员。
我有一个关于我的EA中的一个错误的问题。似乎不能打开一个反趋势头寸(见所附截图)。
它正在关闭交易,但它没有打开一个新的交易来跟随新的给定趋势方向。
// Indicator HMA NMC
double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
//+------------------------------------------------------------------+
//| BUY |
//+------------------------------------------------------------------+
if(trendc!=trendp)
{
if(trendc==1) // code for buy
OpenBuy();
return(0);
}
//+------------------------------------------------------------------+
//| SELL |
//+------------------------------------------------------------------+
if(trendc==-1) // code for sell
{
OpenSell();
return(0);
}
}
[/CODE]
[CODE]
void CheckForClose()
{
RefreshRates();
double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);
double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);
for(int i=0;i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!= MAGIC) continue;
if(OrderSymbol() != s_symbol) continue;
//+-------------------------------------------------------------------------------+
//| Close BUY |
//+-------------------------------------------------------------------------------+
if(trendc_c!=trendp_c) // Check trend
{
if(OrderType()==OP_BUY)
{
if(trendc_c==-1) //is buy?
{
bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);
if(buyClose==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts == true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
//+--------------------------------------------------------------------------------+
//| Close SELL |
//+--------------------------------------------------------------------------------+
if(trendc_c!=trendp_c)
{
if(OrderType()==OP_SELL)
{
if(trendc_c==1) // SELL
{
bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);
if(sellClose == false)
{
ErrorCode = GetLastError();
ErrDesc = ErrorDescription(ErrorCode);
ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket());
Print(ErrLog);
}
}
break;
}
}
}
}
tfi_markets
试着将两个中断语句向上移动一行(在"}"内)。
你好,Mladen。
请您告诉我这段代码哪里出了问题。
附上指标All Pivots,我把它改成也显示前一天的开盘线、前一天的收盘线和当天的开盘线。
但该指标并不一致。它总是正确显示枢轴,但很少显示我添加的每日开盘、前日开盘和收盘线的代码。
我不明白为什么,代码看起来和枢轴代码一样,所以它应该全部显示,有时会显示,但并不总是。我做错了什么,但不确定是什么。
非常感谢
PG
allpivots_daily.mq4
你好,Mladen。
你能不能告诉我,我的这段代码哪里出错了。
附上指标All Pivots,我重新设计了它,也显示前一天的开盘线、前一天的收盘线和当天的开盘线。
但该指标并不一致。它总是正确显示枢轴,但很少显示我添加的每日开盘、前日开盘和收盘线的代码。
我不明白为什么,代码看起来和枢轴代码一样,所以它应该全部显示,有时会显示,但并不总是。我做错了什么,但不确定是什么。
非常感谢
PG
所有的枢轴_日报.mq4PG
它工作得很好(见创建的对象列表)。检查是否有重叠的价格(这可能导致一些线不可见)。
另外,不要忘了在ObjectDel()函数中也添加你新创建的行。
谢谢Mladen,我一直在检查,它似乎对""内的行名很挑剔,这不是我所期望的。
像往常一样,感谢你的时间和帮助。
PG
PG
工作正常(见所创建对象的列表)。检查是否有重叠的价格(这可能导致一些线不可见)
谢谢Mladen,我一直在检查,它似乎对""内的行名很挑剔,这不是我期望的。
像往常一样,感谢你的时间和帮助。
PG对象的名称必须是唯一的--但就我所见,你已经解决了这个问题。
请帮助我解决这个问题https://www.mql5.com/en/forum/174385/page263
谢谢你,Mladen。
我有一个问题,就是:
我的第一个信号是在最后一次卖出后买入的,我需要它是在条形图收于阻力位或代码的 "srUp "之后
卖出信号也是如此,必须是在支撑位或 "srDown "以下收盘。
我怎样才能在代码中解决这个问题?
第二,就是之前问的那个问题,我怎么能在我的代码中修复,以不同的颜色显示卖出后的第一个买入信号呢?
#property strict
#属性 indicator_chart_window
#属性 indicator_buffers 4
#属性 indicator_color1 clrLime
#属性 indicator_color2 clrRed
#属性 indicator_color3 clrMagenta
#属性 indicator_color4 clrCyan
#define BUY 1
#define SELL 2
双重Buy[]。
卖出[]。
FirstBuy[],
FirstSell[]。
int OnInit() {
SetIndexBuffer(0,FirstBuy);
SetIndexBuffer(1,FirstSell);
SetIndexBuffer(2,Buy);
SetIndexBuffer(3,Sell)。
for(int i=0; i<4; i++) {
SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2); }
SetIndexArrow (0,233);
SetIndexArrow (1,234);
SetIndexArrow (2,233);
SetIndexArrow (3,234)。
返回(INIT_SUCCEEDED);}
void OnDeinit(const int reason){}。
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],
const double &open[], const double &high[], const double &low[],
const double &close[], const long &tick_volume[], const long &volume[],
const int &spread[]) {
static int lastSignal=0;
for(int i=MathMin(rate_total-prev_calculated, rates_total-1); i>=0; i--){
FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE。
datetime when=Time;
int w=iBarShift(NULL,PERIOD_H4, when),
x=iBarShift(NULL,PERIOD_H1, when),
y=iBarShift(NULL,PERIOD_M15,when)。
z=iBarShift(NULL,PERIOD_M5, when)。
double srUpH4 = iCustom(NULL,PERIOD_H4, "Support and Resistance (Barry)",0,w),
srDownH4 = iCustom(NULL,PERIOD_H4, "支持和阻力(巴里)",1,w)。
MidH4 = (srUpH4+srDownH4)/2,
srUpH1 = iCustom(NULL,PERIOD_H1, "Support and Resistance (Barry)",0,x)。
srDownH1 = iCustom(NULL,PERIOD_H1, "支持和阻力(巴里)",1,x)。
MidH1 = (srUpH1+srDownH1)/2,
srUp15M = iCustom(NULL,PERIOD_M15, "Support and Resistance (Barry)",0,y)。
srDown15M = iCustom(NULL,PERIOD_M15, "Support and Resistance (Barry)",1,y)。
Mid15M = (srUp15M+srDown15M)/2,
srUp5M = iCustom(NULL,PERIOD_M5, "Support and Resistance (Barry)",0,z)。
srDown5M = iCustom(NULL,PERIOD_M5, "支持和阻力(巴里)",1,z)。
Mid5M = (srUp5M+srDown5M)/2,
srUp = iCustom(NULL,0, "Support and Resistance (Barry)",0,i)。
srDown = iCustom(NULL,0, "Support and Resistance (Barry)",1,i)。
if(ClosesrUp) { // 第一个买入信号
Buy=Low-_Point; }
否则 {
Buy=EMPTY_VALUE; }
if(Close>Mid5M && Close>srUp) { //第二个信号买入
Buy=Low-_Point; }
否则 {
Buy=EMPTY_VALUE; }
if(Close>MidH4 && Close>Mid15M && Close<srDown) { // 第一个信号卖出
Sell=High+_Point; }
否则 {
Sell=EMPTY_VALUE; }
if(Close<Mid5M && Close<srDown) { // 第二个信号卖出
Sell=High+_Point; }
否则 {
Sell=EMPTY_VALUE; }}
return(rate_total);}
这就是我的警报,我应该使用它还是使用Alert( t("text for pop up"))?
void SoundAlert(datetime i, string dir) {
static datetime lastAlert=0;
if(lastAlert!=i) {
Alert(StringFormat("%s signal on %s at %s",dir,Symbol(),TimeToStr(i))。
lastAlert=i;}}
谢谢你 mladen