编码帮助 - 页 352 1...345346347348349350351352353354355356357358359...786 新评论 William Snyder 2014.09.22 21:38 #3511 freakout: 你好。亲爱的mladen,我有一个小小的请求--你能不能把下面所附的指标在左上角显示的所有信息关掉? 提前感谢;-) 做一个选项来打开/关闭评论。 附加的文件: pivots_daily_1.mq4 15 kb Dewachen 2014.09.23 01:20 #3512 paradise77: 你好。我是新来的。我想更新一个矩形对象,但不知道怎么做。下面的代码是我用来创建矩形对象的,如果EMAs交叉。如果价格回调并触及它,这些矩形必须结束。如何做到这一点? 提前感谢。 #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 clrLime #property indicator_width1 2 #property indicator_color2 clrMagenta #property indicator_width2 2 extern int EMA1 = 3; extern int EMA2 = 21; extern int EMA3 = 63; extern double arrowDistance = 0.0003; extern color upRectColor = clrYellow; extern color dnRectColor = clrDodgerBlue; extern color touchRectColor = clrDarkGray; //--- extern double rectHigh = 0.0001; extern int rectDays = 3; extern int bars_limit = 2000; extern bool showRectangle = true; double upArrow[]; double dnArrow[]; double prev2EMA1, prev2EMA2, prev2EMA3; double prevEMA1, prevEMA2, prevEMA3; double curEMA1, curEMA2, curEMA3; double prevOpenPrc, prevClosePrc, prevLowPrc, prevHighPrc; string objRectName; string rectArray[]; string indiName = "Emac"; int rectValidity = 0; int arrayMaxAmounts = 99999; int arrayCurAmount = 0; int arrayLastAmount = 0; //+------------------------------------------------------------------+ //| INIT() | //+------------------------------------------------------------------+ int init() { if (Period() != PERIOD_H1) { Alert("Use only @ TF: H1"); return(0); } ArrayResize(rectArray,arrayMaxAmounts,arrayMaxAmounts); IndicatorBuffers(2); SetIndexBuffer(0,upArrow); SetIndexBuffer(1,dnArrow); SetIndexStyle(0,DRAW_ARROW); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(0,233); SetIndexArrow(1,234); SetIndexEmptyValue(0,0.0); SetIndexEmptyValue(1,0.0); SetIndexLabel(0,"Up"); SetIndexLabel(1,"Dn"); return(0); } //+------------------------------------------------------------------+ //| DEINIT() | //+------------------------------------------------------------------+ int deinit() { int k=0; while (k<ObjectsTotal()) { string objname = ObjectName(k); if (StringSubstr(objname,0,StringLen("Emac")) == "Emac") ObjectDelete(objname); else k++; } return(0); } //+------------------------------------------------------------------+ //| START() | //+------------------------------------------------------------------+ int start() { if (Period() != PERIOD_H1) { Alert("Use only @ TF: H1"); return(0); } int limit,i,k; int counted_bars=IndicatorCounted(); //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //--- if (limit>bars_limit-1 && bars_limit!=0) limit=bars_limit-1; if (Bars<EMA1 || Bars<EMA2 || Bars0 && bars_limit0 && bars_limit0 && bars_limit<EMA3)) { Alert("Adjust limit settings or put more bars on your chart!"); return(0); } //--- for (i=0; i<limit; i++) { prev2EMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i+2); prev2EMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i+2); prev2EMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i+2); prevEMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i+1); prevEMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i+1); prevEMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i+1); curEMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i); curEMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i); curEMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i); prevOpenPrc = iOpen(NULL,0,i+1); prevClosePrc = iClose(NULL,0,i+1); prevLowPrc = iLow(NULL,0,i+1); prevHighPrc = iHigh(NULL,0,i+1); rectValidity = rectDays*86400; if ( (prev2EMA1=prevEMA2)&&(curEMA1>curEMA2)&&(prevEMA2>=prevEMA3)&&(curEMA2>curEMA3) ) { // up upArrow = prevLowPrc - arrowDistance; if (showRectangle == true) { //----------------------- Draw Rectangle ---------------------- objRectName = StringConcatenate(indiName,"_",FuncPeriodToStr(Period()),"_",DoubleToStr(Time,0)); if (ObjectFind(objRectName) == -1) { // not exists ObjectCreate(objRectName, OBJ_RECTANGLE, 0,Time,prevLowPrc,Time+rectValidity,prevLowPrc+rectHigh); ObjectSet(objRectName, OBJPROP_COLOR, upRectColor); ObjectSet(objRectName, OBJPROP_WIDTH, 0); ObjectSet(objRectName, OBJPROP_STYLE, STYLE_SOLID); //--- put information to Array --- arrayCurAmount = ArraySize(rectArray); rectArray[arrayCurAmount] = StringConcatenate(objRectName,"$up$",Time,"$",prevClosePrc,"$0"); // 0=new, not yet touched } // if } // if } // if if ( (prev2EMA1>prev2EMA2)&&(prevEMA1<=prevEMA2)&&(curEMA1<curEMA2)&&(prevEMA2<=prevEMA3)&&(curEMA2<curEMA3) ) { // down dnArrow = prevHighPrc + arrowDistance; if (showRectangle == true) { //----------------------- Draw Rectangle ---------------------- objRectName = StringConcatenate(indiName,"_",FuncPeriodToStr(Period()),"_",DoubleToStr(Time,0)); if (ObjectFind(objRectName) == -1) { // not exists ObjectCreate(objRectName, OBJ_RECTANGLE, 0, Time,prevHighPrc,Time+rectValidity,prevHighPrc-rectHigh); ObjectSet(objRectName, OBJPROP_COLOR, dnRectColor); ObjectSet(objRectName, OBJPROP_WIDTH, 0); ObjectSet(objRectName, OBJPROP_STYLE, STYLE_SOLID); //--- put information to Array --- arrayCurAmount = ArraySize(rectArray); rectArray[arrayCurAmount] = StringConcatenate(objRectName,"$dn$",Time,"$",prevClosePrc,"$0"); // 0=new, not yet touched } // if } // if } // if } // for //----------------------- Edit Rectangle, change time2 & color, if price touched ---------------------- return(0); } // start //+------------------------------------------------------------------+ void DelObjects(string id) { int ot1=ObjectsTotal(); while(ot1>=0) { if (StringFind(ObjectName(ot1),id,0)>-1) { ObjectDelete(ObjectName(ot1)); } ot1--; } return; } //+------------------------------------------------------------------+ string FuncPeriodToStr(int thePeriod) { switch(thePeriod) { case 1: return("M1"); case 5: return("M5"); case 15: return("M15"); case 30: return("M30"); case 60: return("H1"); case 240: return("H4"); case 1440: return("D1"); case 10080: return("W1"); case 43200: return("MN1"); default: return("MN1"); } } //+------------------------------------------------------------------+ 姆拉登, 你能不能帮我提供一个关于编辑矩形的线索? 我发现这个: *)对象类型 - MQL4文档 *)对象属性 - MQL4文档 我可以获得矩形属性(时间1,价格1,时间2,价格2,颜色),然后将价格1或价格2与当前的Ask/Bid价格进行比较。如果Ask/Bid价格触及价格1或价格2,那么必须做以下工作。 a) 我不需要数组,只需要查看每个矩形对象。 删除该对象,使用新的时间2和新的颜色重新创建它。 b) 如何知道 OBJPROP_PRICE1的蜡烛位置? 我们通常使用 "for "循环,如 for (i=limit; i>0; i--) 我们怎样才能得到拥有price1的那根柱子的 "i "呢? c) 如果我不删除和重新创建矩形,我可以只使用ObjectSet来改变矩形的时间2和颜色吗? 谢谢你。 Mladen Rakic 2014.09.23 04:36 #3513 paradise77:@Mladen,你能帮助我提供一个关于编辑矩形的线索吗? 我发现了这个。 *)对象类型 - MQL4文档 *)对象属性 - MQL4文档 我可以获得矩形属性(时间1,价格1,时间2,价格2,颜色),然后将价格1或价格2与当前的Ask/Bid价格进行比较。如果Ask/Bid价格触及价格1或价格2,那么必须做以下工作。 a) 我不需要数组,只需要查看每个矩形对象。 删除该对象,使用新的时间2和新的颜色重新创建它。 b) 如何知道 OBJPROP_PRICE1的蜡烛位置? 我们通常使用 "for "循环,如 我们怎样才能得到价格为1的柱子的 "i"? c) 如果我不删除和重新创建矩形,我可以只使用ObjectSet来改变矩形的时间2和颜色吗? 谢谢你。 在你的情况下,你的价格是可以的。你必须用时间来限制左右两边的盒子。 Mastercash 2014.09.23 07:02 #3514 宇宙的生命形态。 谢谢你的这篇稿子,其实我用的是instaforex demo.我按照正常的方法下载了1M的价格fiest.I然后做了设置,用EURUSD,看到下面的报告标签和日志的截屏。 //reports, noting but zerp, why? cosmiclifeform: 你好,Mastercash。我在FXDD模拟账户上运行该EA......没有做什么特别的事情......只是在策略测试器中以默认设置运行该EA。 希望我能提供更多帮助......但如果没有具体的线索来追踪(错误日志、屏幕截图和其他条件),就不可能找出你得到空白结果的原因。 我所能建议的是... 首先在测试器中尝试一个你知道工作正常的好EA。 这将确定你的模拟账户和你的程序都没有问题。 首先让你相信一切都在按部就班地工作。 然后尝试你的Nice TraderEA......并准确地写下发生了什么。即使是一个空白的屏幕也应该有日志可查。 试着在所有地方添加PRINT和COMMENT语句......然后再次检查你的日志......包括EA标签和日志标签。 同时你的COMMENT语句会显示在屏幕上......所以你应该真正看到你的EA是否在工作。 获得良好的编码帮助的底线... 是提供你能找到的关于你的EA发生了什么的最多线索...。 继续尝试一切可能的方法...并让我们知道结果。 保重。 罗伯特 附加的文件: backtest1.png 14 kb backtest2.png 3 kb Dewachen 2014.09.23 09:53 #3515 mladen: 在你的情况下,你的价格是可以的。你必须用时间来限制左右两边的盒子 谢谢mladen。你的意思是我必须动态地使用Time2吗?时间1,价格1和价格2是固定的。但是时间2取决于当前的条形(i),并且是移动的,直到价格触及矩形,或者它超过了默认的矩形设置时间。 换句话说,不可能改变一个矩形的颜色和时间2? 谢谢 Mladen Rakic 2014.09.23 10:31 #3516 paradise77: 谢谢mladen。你是说我必须动态地使用时间2吗?时间1,价格1和价格2是固定的。但是时间2取决于当前的条形(i),并且是移动的,直到价格触及矩形,或者它超过了默认的矩形设置时间。 换句话说,不可能改变一个矩形的颜色和时间2? 谢谢 天堂77 是的,你必须 这样你就会一直调整盒子的右边界(当然,如果它需要调整的话)。 Jan Fouquaert 2014.09.23 13:17 #3517 Mladen先生和Mrtools先生好。 我真的不喜欢太多的警报,因为我比较喜欢视觉系统,所以所有的噪音和弹出窗口只会让我分心。我只在超卖或超买时设置一些CCI的警报,仅此而已。 但有一个警报是我想要的,那就是当 "我的 "SSA + MA与MA交叉时,无论是向上还是向下。 还有一件事,我总是给这个可爱的工具添加三个级别;当然是零点,也包括-0.3和0.3。 我还想在SSA越过-0.3水平和0.3水平时获得一个警报。0.0水平则没有必要。 作为警报,只需要一个简单的声音和弹出窗口,就可以了。 谢谢您! 附加的文件: ssa__ma.mq4 5 kb Mladen Rakic 2014.09.23 13:46 #3518 Wulong10: 你好,Mladen先生和Mrtools先生。 我真的不喜欢太多的警报,因为我比较喜欢视觉系统,所以所有的噪音和弹出窗口只会让我分心。我只在超卖或超买时设置一些CCI的警报,仅此而已。但有一个警报是我想要的,那就是当 "我的 "SSA + MA与MA交叉时,无论是向上还是向下。还有一件事,我总是给这个可爱的工具添加三个级别;当然是零点,也包括-0.3和0.3。我还想在SSA越过-0.3水平和0.3水平时获得一个警报。0.0水平则没有必要。作为警报,只需要一个简单的声音和弹出窗口,就可以了。 谢谢您! Wulong10 SSA的问题是,它是一个重新计算的算法。至少在我看来,给它添加警报 是不明智的,因为它总是会改变交叉点的位置,有时交叉点会完全消失。最好是在非信号模式下使用它(仅估算)。 Jan Fouquaert 2014.09.23 14:06 #3519 你好,姆拉登。 我知道SSA在更高的时间范围内会重新计算。 当我在M5上使用它时,它会有一些变化,在M15上会有更多的变化,但在M1上我已经对这个独立测试了很多次,我对它非常满意。在我的设置下,它真的不怎么适应,事实上它非常准确。 当然,当价格出现长期上涨或长期下跌时,它不是很可靠,但很多指标不都是这样吗? 然后你在图表上使用一个简单的移动平均线 以确保安全...... 也许其他人不能使用警报,但我可以。 CCI的警报也不总是正确的,但它只是指示接下来可能会发生什么。 因此,如果社会保障局会发出警报,那就由我来决定如何处理,我在这方面越来越擅长了。 此外,我想我不是唯一一个喜欢SSA的人...... 消失的十字架?在M1上并不常见,而我已经观察该图表好几天了...... 所以,如果可能的话,我真的希望得到提醒。 谢谢你! Mladen Rakic 2014.09.23 14:18 #3520 Wulong10: 嗨,Mladen。我知道SSA在更高的时间框架上会重新计算。 当我在M5上使用它时,它会有一些变化,在M15上会有更多的变化,但在M1上,我已经对这个indy进行了多次测试,我对它非常满意。在我的设置下,它真的不怎么适应,事实上它非常准确。 当然,当价格出现长期上涨或长期下跌时,它不是很可靠,但很多指标不都是这样吗? 然后你在图表上使用一个简单的移动平均线以确保安全...... 也许其他人不能使用警报,但我可以。 CCI的警报也不总是正确的,但它只是指示接下来可能会发生什么。 因此,如果社会保障局会发出警报,那就由我来决定如何处理,我在这方面越来越擅长了。 此外,我想我不是唯一一个喜欢SSA的人...... 消失的十字架?在M1上并不常见,而我已经观察该图表好几天了...... 所以,如果可能的话,我真的希望得到提醒。 丹克-谢恩! Wulong10 SSA总是重新计算(相信我,因为是我做了那个dll来计算它)。这个规则没有例外(不管你在什么时间段使用它)。 另外,如果计算的数量被设置为>1,它将重新计算所有的条形。如果计算次数设置为1,那么至少要重新计算 "滞后 "条形图。 1...345346347348349350351352353354355356357358359...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好。
亲爱的mladen,我有一个小小的请求--你能不能把下面所附的指标在左上角显示的所有信息关掉?
提前感谢;-)做一个选项来打开/关闭评论。
你好。
我是新来的。我想更新一个矩形对象,但不知道怎么做。下面的代码是我用来创建矩形对象的,如果EMAs交叉。如果价格回调并触及它,这些矩形必须结束。如何做到这一点?
提前感谢。
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 clrLime
#property indicator_width1 2
#property indicator_color2 clrMagenta
#property indicator_width2 2
extern int EMA1 = 3;
extern int EMA2 = 21;
extern int EMA3 = 63;
extern double arrowDistance = 0.0003;
extern color upRectColor = clrYellow;
extern color dnRectColor = clrDodgerBlue;
extern color touchRectColor = clrDarkGray;
//---
extern double rectHigh = 0.0001;
extern int rectDays = 3;
extern int bars_limit = 2000;
extern bool showRectangle = true;
double upArrow[];
double dnArrow[];
double prev2EMA1, prev2EMA2, prev2EMA3;
double prevEMA1, prevEMA2, prevEMA3;
double curEMA1, curEMA2, curEMA3;
double prevOpenPrc, prevClosePrc, prevLowPrc, prevHighPrc;
string objRectName;
string rectArray[];
string indiName = "Emac";
int rectValidity = 0;
int arrayMaxAmounts = 99999;
int arrayCurAmount = 0;
int arrayLastAmount = 0;
//+------------------------------------------------------------------+
//| INIT() |
//+------------------------------------------------------------------+
int init() {
if (Period() != PERIOD_H1) {
Alert("Use only @ TF: H1");
return(0);
}
ArrayResize(rectArray,arrayMaxAmounts,arrayMaxAmounts);
IndicatorBuffers(2);
SetIndexBuffer(0,upArrow);
SetIndexBuffer(1,dnArrow);
SetIndexStyle(0,DRAW_ARROW);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(0,233);
SetIndexArrow(1,234);
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
SetIndexLabel(0,"Up");
SetIndexLabel(1,"Dn");
return(0);
}
//+------------------------------------------------------------------+
//| DEINIT() |
//+------------------------------------------------------------------+
int deinit() {
int k=0;
while (k<ObjectsTotal()) {
string objname = ObjectName(k);
if (StringSubstr(objname,0,StringLen("Emac")) == "Emac")
ObjectDelete(objname);
else
k++;
}
return(0);
}
//+------------------------------------------------------------------+
//| START() |
//+------------------------------------------------------------------+
int start() {
if (Period() != PERIOD_H1) {
Alert("Use only @ TF: H1");
return(0);
}
int limit,i,k;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---
if (limit>bars_limit-1 && bars_limit!=0) limit=bars_limit-1;
if (Bars<EMA1 || Bars<EMA2 || Bars0 && bars_limit0 && bars_limit0 && bars_limit<EMA3)) {
Alert("Adjust limit settings or put more bars on your chart!");
return(0);
}
//---
for (i=0; i<limit; i++) {
prev2EMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i+2);
prev2EMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i+2);
prev2EMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i+2);
prevEMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i+1);
prevEMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i+1);
prevEMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i+1);
curEMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i);
curEMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i);
curEMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i);
prevOpenPrc = iOpen(NULL,0,i+1);
prevClosePrc = iClose(NULL,0,i+1);
prevLowPrc = iLow(NULL,0,i+1);
prevHighPrc = iHigh(NULL,0,i+1);
rectValidity = rectDays*86400;
if ( (prev2EMA1=prevEMA2)&&(curEMA1>curEMA2)&&(prevEMA2>=prevEMA3)&&(curEMA2>curEMA3) ) { // up
upArrow = prevLowPrc - arrowDistance;
if (showRectangle == true) {
//----------------------- Draw Rectangle ----------------------
objRectName = StringConcatenate(indiName,"_",FuncPeriodToStr(Period()),"_",DoubleToStr(Time,0));
if (ObjectFind(objRectName) == -1) { // not exists
ObjectCreate(objRectName, OBJ_RECTANGLE, 0,Time,prevLowPrc,Time+rectValidity,prevLowPrc+rectHigh);
ObjectSet(objRectName, OBJPROP_COLOR, upRectColor);
ObjectSet(objRectName, OBJPROP_WIDTH, 0);
ObjectSet(objRectName, OBJPROP_STYLE, STYLE_SOLID);
//--- put information to Array ---
arrayCurAmount = ArraySize(rectArray);
rectArray[arrayCurAmount] = StringConcatenate(objRectName,"$up$",Time,"$",prevClosePrc,"$0"); // 0=new, not yet touched
} // if
} // if
} // if
if ( (prev2EMA1>prev2EMA2)&&(prevEMA1<=prevEMA2)&&(curEMA1<curEMA2)&&(prevEMA2<=prevEMA3)&&(curEMA2<curEMA3) ) { // down
dnArrow = prevHighPrc + arrowDistance;
if (showRectangle == true) {
//----------------------- Draw Rectangle ----------------------
objRectName = StringConcatenate(indiName,"_",FuncPeriodToStr(Period()),"_",DoubleToStr(Time,0));
if (ObjectFind(objRectName) == -1) { // not exists
ObjectCreate(objRectName, OBJ_RECTANGLE, 0, Time,prevHighPrc,Time+rectValidity,prevHighPrc-rectHigh);
ObjectSet(objRectName, OBJPROP_COLOR, dnRectColor);
ObjectSet(objRectName, OBJPROP_WIDTH, 0);
ObjectSet(objRectName, OBJPROP_STYLE, STYLE_SOLID);
//--- put information to Array ---
arrayCurAmount = ArraySize(rectArray);
rectArray[arrayCurAmount] = StringConcatenate(objRectName,"$dn$",Time,"$",prevClosePrc,"$0"); // 0=new, not yet touched
} // if
} // if
} // if
} // for
//----------------------- Edit Rectangle, change time2 & color, if price touched ----------------------
return(0);
} // start
//+------------------------------------------------------------------+
void DelObjects(string id) {
int ot1=ObjectsTotal();
while(ot1>=0) {
if (StringFind(ObjectName(ot1),id,0)>-1) {
ObjectDelete(ObjectName(ot1));
}
ot1--;
}
return;
}
//+------------------------------------------------------------------+
string FuncPeriodToStr(int thePeriod) {
switch(thePeriod) {
case 1: return("M1");
case 5: return("M5");
case 15: return("M15");
case 30: return("M30");
case 60: return("H1");
case 240: return("H4");
case 1440: return("D1");
case 10080: return("W1");
case 43200: return("MN1");
default: return("MN1");
}
}
//+------------------------------------------------------------------+
姆拉登,
你能不能帮我提供一个关于编辑矩形的线索?
我发现这个:
*)对象类型 - MQL4文档
*)对象属性 - MQL4文档
我可以获得矩形属性(时间1,价格1,时间2,价格2,颜色),然后将价格1或价格2与当前的Ask/Bid价格进行比较。如果Ask/Bid价格触及价格1或价格2,那么必须做以下工作。
a) 我不需要数组,只需要查看每个矩形对象。
删除该对象,使用新的时间2和新的颜色重新创建它。
b) 如何知道 OBJPROP_PRICE1的蜡烛位置? 我们通常使用 "for "循环,如
我们怎样才能得到拥有price1的那根柱子的 "i "呢?
c) 如果我不删除和重新创建矩形,我可以只使用ObjectSet来改变矩形的时间2和颜色吗?
谢谢你。
@Mladen,
你能帮助我提供一个关于编辑矩形的线索吗?
我发现了这个。
*)对象类型 - MQL4文档
*)对象属性 - MQL4文档
我可以获得矩形属性(时间1,价格1,时间2,价格2,颜色),然后将价格1或价格2与当前的Ask/Bid价格进行比较。如果Ask/Bid价格触及价格1或价格2,那么必须做以下工作。
a) 我不需要数组,只需要查看每个矩形对象。
删除该对象,使用新的时间2和新的颜色重新创建它。
b) 如何知道 OBJPROP_PRICE1的蜡烛位置? 我们通常使用 "for "循环,如
我们怎样才能得到价格为1的柱子的 "i"?
c) 如果我不删除和重新创建矩形,我可以只使用ObjectSet来改变矩形的时间2和颜色吗?
谢谢你。在你的情况下,你的价格是可以的。你必须用时间来限制左右两边的盒子。
宇宙的生命形态。
谢谢你的这篇稿子,其实我用的是instaforex demo.我按照正常的方法下载了1M的价格fiest.I然后做了设置,用EURUSD,看到下面的报告标签和日志的截屏。
//reports, noting but zerp, why?
你好,Mastercash。
我在FXDD模拟账户上运行该EA......没有做什么特别的事情......只是在策略测试器中以默认设置运行该EA。
希望我能提供更多帮助......但如果没有具体的线索来追踪(错误日志、屏幕截图和其他条件),就不可能找出你得到空白结果的原因。
我所能建议的是...
首先在测试器中尝试一个你知道工作正常的好EA。
这将确定你的模拟账户和你的程序都没有问题。
首先让你相信一切都在按部就班地工作。
然后尝试你的Nice TraderEA......并准确地写下发生了什么。即使是一个空白的屏幕也应该有日志可查。
试着在所有地方添加PRINT和COMMENT语句......然后再次检查你的日志......包括EA标签和日志标签。
同时你的COMMENT语句会显示在屏幕上......所以你应该真正看到你的EA是否在工作。
获得良好的编码帮助的底线...
是提供你能找到的关于你的EA发生了什么的最多线索...。
继续尝试一切可能的方法...并让我们知道结果。
保重。
罗伯特在你的情况下,你的价格是可以的。你必须用时间来限制左右两边的盒子
谢谢mladen。你的意思是我必须动态地使用Time2吗?时间1,价格1和价格2是固定的。但是时间2取决于当前的条形(i),并且是移动的,直到价格触及矩形,或者它超过了默认的矩形设置时间。
换句话说,不可能改变一个矩形的颜色和时间2?
谢谢
谢谢mladen。你是说我必须动态地使用时间2吗?时间1,价格1和价格2是固定的。但是时间2取决于当前的条形(i),并且是移动的,直到价格触及矩形,或者它超过了默认的矩形设置时间。
换句话说,不可能改变一个矩形的颜色和时间2?
谢谢天堂77
是的,你必须
这样你就会一直调整盒子的右边界(当然,如果它需要调整的话)。
Mladen先生和Mrtools先生好。
我真的不喜欢太多的警报,因为我比较喜欢视觉系统,所以所有的噪音和弹出窗口只会让我分心。我只在超卖或超买时设置一些CCI的警报,仅此而已。
但有一个警报是我想要的,那就是当 "我的 "SSA + MA与MA交叉时,无论是向上还是向下。
还有一件事,我总是给这个可爱的工具添加三个级别;当然是零点,也包括-0.3和0.3。
我还想在SSA越过-0.3水平和0.3水平时获得一个警报。0.0水平则没有必要。
作为警报,只需要一个简单的声音和弹出窗口,就可以了。
谢谢您!
你好,Mladen先生和Mrtools先生。
我真的不喜欢太多的警报,因为我比较喜欢视觉系统,所以所有的噪音和弹出窗口只会让我分心。我只在超卖或超买时设置一些CCI的警报,仅此而已。
但有一个警报是我想要的,那就是当 "我的 "SSA + MA与MA交叉时,无论是向上还是向下。
还有一件事,我总是给这个可爱的工具添加三个级别;当然是零点,也包括-0.3和0.3。
我还想在SSA越过-0.3水平和0.3水平时获得一个警报。0.0水平则没有必要。
作为警报,只需要一个简单的声音和弹出窗口,就可以了。
谢谢您!Wulong10
SSA的问题是,它是一个重新计算的算法。至少在我看来,给它添加警报 是不明智的,因为它总是会改变交叉点的位置,有时交叉点会完全消失。最好是在非信号模式下使用它(仅估算)。
你好,姆拉登。
我知道SSA在更高的时间范围内会重新计算。
当我在M5上使用它时,它会有一些变化,在M15上会有更多的变化,但在M1上我已经对这个独立测试了很多次,我对它非常满意。在我的设置下,它真的不怎么适应,事实上它非常准确。
当然,当价格出现长期上涨或长期下跌时,它不是很可靠,但很多指标不都是这样吗?
然后你在图表上使用一个简单的移动平均线 以确保安全......
也许其他人不能使用警报,但我可以。
CCI的警报也不总是正确的,但它只是指示接下来可能会发生什么。
因此,如果社会保障局会发出警报,那就由我来决定如何处理,我在这方面越来越擅长了。
此外,我想我不是唯一一个喜欢SSA的人......
消失的十字架?在M1上并不常见,而我已经观察该图表好几天了......
所以,如果可能的话,我真的希望得到提醒。
谢谢你!
嗨,Mladen。
我知道SSA在更高的时间框架上会重新计算。
当我在M5上使用它时,它会有一些变化,在M15上会有更多的变化,但在M1上,我已经对这个indy进行了多次测试,我对它非常满意。在我的设置下,它真的不怎么适应,事实上它非常准确。
当然,当价格出现长期上涨或长期下跌时,它不是很可靠,但很多指标不都是这样吗?
然后你在图表上使用一个简单的移动平均线以确保安全......
也许其他人不能使用警报,但我可以。
CCI的警报也不总是正确的,但它只是指示接下来可能会发生什么。
因此,如果社会保障局会发出警报,那就由我来决定如何处理,我在这方面越来越擅长了。
此外,我想我不是唯一一个喜欢SSA的人......
消失的十字架?在M1上并不常见,而我已经观察该图表好几天了......
所以,如果可能的话,我真的希望得到提醒。
丹克-谢恩!Wulong10
SSA总是重新计算(相信我,因为是我做了那个dll来计算它)。这个规则没有例外(不管你在什么时间段使用它)。
另外,如果计算的数量被设置为>1,它将重新计算所有的条形。如果计算次数设置为1,那么至少要重新计算 "滞后 "条形图。