新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 80 1...737475767778798081828384858687...1953 新评论 Gevorg Hakobyan 2017.01.17 12:45 #791 Artyom Trishkin:在测试器中的不同符号上?还是在演示/真实的不同符号上?还是在这个符号的测试器中?还是在这个符号上的演示/真实?为什么要把你的一切都掏出来? 你的观点是什么?你在哪里试的有什么区别?问题是,点是否=0。如果可以,我如何正确地编写代码,以便不遇到错误:除以零? Alekseu Fedotov 2017.01.17 12:53 #792 LuckySith:对不起,我很书呆子 - 我不太明白。 也许你有最简单的指标与一些代码,我有一个类比的理解?因为我找不到一个。我有一个非常简单的代码,把点放在条形图的中间。我怎样才能使文本在我悬停在它们上面时出现,或一个方框,等等。#property indicator_chart_window#property indicator_buffers 1#property indicator_color1 Black//---- input parameters//---- buffersdouble ExtMapBuffer1[];//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init() {//---- indicators SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,159); SetIndexBuffer(0,ExtMapBuffer1); SetIndexEmptyValue(0,0.0);//---- return(0); }//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit() {//----//---- return(0); }//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start() { int counted_bars=IndicatorCounted(); int limit=Bars-counted_bars;//---- for(int i=limit; i>=0; i--) { double fabody0 = fabs(Close[i]-Open[i]); double fabody1 = fabs(Close[i+1]-Open[i+1]); double fabody2 = fabs(Close[i+2]-Open[i+2]); double fabody3 = fabs(Close[i+3]-Open[i+3]); double fabody4 = fabs(Close[i+4]-Open[i+4]); double fabody5 = fabs(Close[i+5]-Open[i+5]); double fabody6 = fabs(Close[i+6]-Open[i+6]); double fabody7 = fabs(Close[i+7]-Open[i+7]); if((fabody0>fabody1) && (fabody0>fabody2) && (fabody0>fabody3) && (fabody0>fabody4) && (fabody0>fabody5) && (fabody0>fabody6) &&(Volume[i]>Volume[i+1])) { if (((Close[i]>Open[i])&&(Low[i]+(High[i]-Low[i])/2>Low[i+1]+(High[i+1]-Low[i+1])*0.9))||((Close[i]<Open[i])&&(Low[i]+(High[i]-Low[i])/2<Low[i+1]+(High[i+1]-Low[i+1])*0.1))) ExtMapBuffer1[i]=(iHigh(Symbol(),0,i)+iLow(Symbol(),0,i))/2; } }//---- return(0); } 尝试 附加的文件: gmxdk8j.mq4 6 kb Artyom Trishkin 2017.01.17 13:00 #793 Gevorg Hakobyan: 你的观点是什么?你在哪里试的有什么区别?问题是,点是否=0。如果可以,我应该如何写出正确的代码,才不会遇到错误:除以零? 随你便吧。所以在除法前要检查除法器是否为零。还以为你对原因感兴趣,而不是对结果感兴趣,还有适当的拐杖。 Alexey Viktorov 2017.01.17 13:02 #794 Artyom Trishkin: 随你便吧。所以在除法前要检查除法器是否为零。还以为你对原因感兴趣,而不是对结果感兴趣,还有适当的拐杖。 我还没有读完整个对话,但我怀疑是打印小数点后第五位的问题。 Artyom Trishkin 2017.01.17 13:05 #795 Alexey Viktorov: 我还没有读完整个对话,但我怀疑是打印小数点后第五位的问题。 不,它除以Point(),得到的是除以0。这就是为什么我想得到一个连贯的答案,它是如何以及从哪里获得符号数据的。 Gevorg Hakobyan 2017.01.17 13:13 #796 Artyom Trishkin: 不,它除以Point(),得到除以0 的结果。我试图得到一个明确的答案,它是如何以及从哪里获取符号的数据的。如果(v=="NZD"){h=(iClose("NZDUSD",p,b)-iOpen("NZDUSD",p,b))/MarketInfo("NZDUSD",MODE_POINT)+(iOpen("EURNZD",p,b)-iClose("EURNZD",p,b))/MarketInfo("EURNZD",MODE_POINT)+(iOpen("GBPNZD",p,b)-iClose("GBPNZD",p,b))/MarketInfo("GBPNZD", MODE_POINT)+(iOpen("AUDNZD",p,b)-iClose("AUDNZD",p,b))/MarketInfo("AUDNZD",MODE_POINT)+(iClose("NZDJPY",p,b)-iOpen("NZDJPY",p,b))/MarketInfo("NZDJPY",MODE_POINT)+(iClose("NZDCAD",p,b)-iOpen("NZDCAD",p,b))/MarketInfo("NZDCAD",MODE_POINT)+(iClose("NZDCHF",p,b)-iOpen("NZDCHF",p,b))/MarketInfo("NZDCHF",MODE_POINT) 。} Gevorg Hakobyan 2017.01.17 13:15 #797 Alexey Viktorov: 我还没有读完整个对话,但我怀疑是打印小数点后第五位的问题。 这可能是问题所在吗? Alexey Viktorov 2017.01.17 13:17 #798 Gevorg Hakobyan: 这可能是问题所在吗? 不,这只是在打印时和警报中第五位数字的隐蔽性问题。 LuckySith 2017.01.17 13:22 #799 Alekseu Fedotov: 尝试 一般来说,这是你需要的,但问题是,描述会相当大,而这种方法只能写几个字--其余的就不显示了。 Sile Si 2017.01.17 17:13 #800 你好。 请帮助。 现在,以下每个顺序的手数都在增加,1,2,3,4,5...。 我希望每个订单的手数不是每个订单都增加,而是以3为单位增加, 所以1,1,1,1,2,2,2,3,3,3......。 extern double LotStop = 0.01;extern double Plus_LotStop = 0.01; extern double Plus_N_ORD = 3; //каждые N ордеровvoid OnTick() {//--- for (int i=1; i<=OrdersStop; i++) { if((Close[1]<Open[1]&&Close[2]>Open[2]&&NumberOfPositions(Symbol(), -1,_Magic)<1)) { OPENORDER (OP_BUYSTOP,PriceBS,LOTs,_Magic,i); numB++; PriceBS = NormalizeDouble(PriceBS+Step_Stop*Point,Digits); OPENORDER (OP_SELLSTOP,PriceSS,LOTs,_Magic,i); numS++; PriceSS = NormalizeDouble(PriceSS-Step_Stop*Point,Digits); } LOTs=LOTs+Plus_LotStop; } } Any questions from newcomers 初学者的问题 MQL4 MT4 MetaTrader [存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. 1...737475767778798081828384858687...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在测试器中的不同符号上?还是在演示/真实的不同符号上?还是在这个符号的测试器中?还是在这个符号上的演示/真实?
为什么要把你的一切都掏出来?
对不起,我很书呆子 - 我不太明白。
也许你有最简单的指标与一些代码,我有一个类比的理解?因为我找不到一个。
我有一个非常简单的代码,把点放在条形图的中间。我怎样才能使文本在我悬停在它们上面时出现,或一个方框,等等。
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black
//---- input parameters
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,159);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int limit=Bars-counted_bars;
//----
for(int i=limit; i>=0; i--)
{
double fabody0 = fabs(Close[i]-Open[i]);
double fabody1 = fabs(Close[i+1]-Open[i+1]);
double fabody2 = fabs(Close[i+2]-Open[i+2]);
double fabody3 = fabs(Close[i+3]-Open[i+3]);
double fabody4 = fabs(Close[i+4]-Open[i+4]);
double fabody5 = fabs(Close[i+5]-Open[i+5]);
double fabody6 = fabs(Close[i+6]-Open[i+6]);
double fabody7 = fabs(Close[i+7]-Open[i+7]);
if((fabody0>fabody1) && (fabody0>fabody2) && (fabody0>fabody3) && (fabody0>fabody4) && (fabody0>fabody5) && (fabody0>fabody6) &&(Volume[i]>Volume[i+1]))
{
if (((Close[i]>Open[i])&&(Low[i]+(High[i]-Low[i])/2>Low[i+1]+(High[i+1]-Low[i+1])*0.9))||((Close[i]<Open[i])&&(Low[i]+(High[i]-Low[i])/2<Low[i+1]+(High[i+1]-Low[i+1])*0.1)))
ExtMapBuffer1[i]=(iHigh(Symbol(),0,i)+iLow(Symbol(),0,i))/2;
}
}
//----
return(0);
}
你的观点是什么?你在哪里试的有什么区别?问题是,点是否=0。如果可以,我应该如何写出正确的代码,才不会遇到错误:除以零?
随你便吧。
我还没有读完整个对话,但我怀疑是打印小数点后第五位的问题。
不,它除以Point(),得到除以0 的结果。
我还没有读完整个对话,但我怀疑是打印小数点后第五位的问题。
这可能是问题所在吗?
尝试
你好。
请帮助。
现在,以下每个顺序的手数都在增加,1,2,3,4,5...。
我希望每个订单的手数不是每个订单都增加,而是以3为单位增加, 所以1,1,1,1,2,2,2,3,3,3......。
extern double Plus_LotStop = 0.01;
extern double Plus_N_ORD = 3; //каждые N ордеров
void OnTick()
{
//---
for (int i=1; i<=OrdersStop; i++)
{
if((Close[1]<Open[1]&&Close[2]>Open[2]&&NumberOfPositions(Symbol(), -1,_Magic)<1))
{
OPENORDER (OP_BUYSTOP,PriceBS,LOTs,_Magic,i);
numB++;
PriceBS = NormalizeDouble(PriceBS+Step_Stop*Point,Digits);
OPENORDER (OP_SELLSTOP,PriceSS,LOTs,_Magic,i);
numS++;
PriceSS = NormalizeDouble(PriceSS-Step_Stop*Point,Digits);
}
LOTs=LOTs+Plus_LotStop;
}
}