新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 236 1...229230231232233234235236237238239240241242243...1953 新评论 Aleksey Vyazmikin 2017.06.23 09:52 #2351 Yaroslav Nykula: ...所有有美元存在的货币对... 我假设代码中存在对交易资金所使用的保证金的计算--尝试以美元以外的货币开立账户,看看测试是否通过。 Yaroslav Nykula 2017.06.23 16:54 #2352 <br / translate="no"> 我打算假设代码中存在对交易资金所使用的保证金的计算--尝试用美元以外的其他货币开户,看看测试是否通过。代码中没有"从交易资金中使用的保证金 " 的计算...而在我第一篇文章的结尾,我指出"在测试器中切换存款货币 视图并不能解决这个问题。" Aleksey Vyazmikin 2017.06.23 19:58 #2353 Yaroslav Nykula: 代码中没有"从交易资金中使用的保证金 " 的计算...而在我第一篇文章的结尾,我指出"在测试器中切换存款货币 类型并不能解决这个问题"。 然后我的心灵感应能力就结束了--布置密码。 Vyacheslav Kornev 2017.06.26 07:37 #2354 对不起,我知道如何使用缓冲器将外部指标插入EA中...但这个指标中没有缓冲区,我怎么才能得到上、下限价格。//+------------------------------------------------------------------+//| trendlinesDay.mq4 |//| Copyright © 2008, MetaQuotes Software Corp. |//| https://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "nsi2000"#property link "http://www.expert-mt4.nm.ru"//----#property indicator_chart_window//---- input parametersextern int nPeriod=10;extern int Limit=350; double Up[]; double Dn[];///---- int Widners Oscilatorint cnt,nCurBar=0;//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init() { //---- Output in Char for(cnt=0; cnt<=5; cnt++) { ObjectCreate("WSO-"+cnt,OBJ_HLINE,0,0,0); ObjectSet("WSO-"+cnt,OBJPROP_COLOR,Red); if(cnt<5) { ObjectCreate("Trend DN-"+cnt,OBJ_TREND,0,0,0,0,0); ObjectSet("Trend DN-"+cnt,OBJPROP_COLOR,Magenta); } //---- ObjectCreate("WRO-"+cnt,OBJ_HLINE,0,0,0); ObjectSet("WRO-"+cnt,OBJPROP_COLOR,Blue); if(cnt<5) { ObjectCreate("Trend UP-"+cnt,OBJ_TREND,0,0,0,0,0); ObjectSet("Trend Up-"+cnt,OBJPROP_COLOR,Aqua); } }//---- return(0); }//+------------------------------------------------------------------+//| Custor indicator deinitialization function |//+------------------------------------------------------------------+int deinit() {//---- TODO: add your code here for(cnt=0; cnt<=5; cnt++) { ObjectDelete("Trend UP-"+cnt); ObjectDelete("Trend DN-"+cnt); ObjectDelete("WSO-"+cnt); ObjectDelete("WRO-"+cnt); }//---- return(0); }//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start() {//---- TODO: add your code here double r1,r2,r3,r4,r5,r6; int rt1,rt2,rt3,rt4,rt5,rt6; double s1,s2,s3,s4,s5,s6; int st1,st2,st3,st4,st5,st6;//---- Линии сопротивления и поддержки if(Bars<Limit) Limit=Bars-nPeriod; for(nCurBar=Limit; nCurBar>0; nCurBar--) { if(Low[nCurBar+(nPeriod-1)/2]==Low[Lowest(NULL,0,MODE_LOW,nPeriod,nCurBar)]) { s6=s5; s5=s4; s4=s3; s3=s2; s2=s1; s1=Low[nCurBar+(nPeriod-1)/2]; st6=st5; st5=st4; st4=st3; st3=st2; st2=st1; st1=nCurBar+(nPeriod-1)/2; } if(High[nCurBar+(nPeriod-1)/2]==High[Highest(NULL,0,MODE_HIGH,nPeriod,nCurBar)]) { r6=r5; r5=r4; r4=r3; r3=r2; r2=r1; r1=High[nCurBar+(nPeriod-1)/2]; rt6=rt5; rt5=rt4; rt4=rt3; rt3=rt2; rt2=rt1; rt1=nCurBar+(nPeriod-1)/2; } }//---- Move Object in Chart ObjectMove("Trend DN-0",1,Time[st1],s1); ObjectMove("Trend DN-0",0,Time[st2],s2);//---- ObjectMove("Trend UP-0",1,Time[rt1],r1); ObjectMove("Trend UP-0",0,Time[rt2],r2);//---- return(0); }//+------------------------------------------------------------------+ Any questions from newcomers 请教,问题出在哪, 哪位兄弟能帮我改一下这段代码,谢谢!!! Maxim Kuznetsov 2017.06.26 09:19 #2355 Vyacheslav Kornev:对不起,我知道如何使用缓冲器将外部指标插入EA中...在这个指标中,没有缓冲区,我如何获得上、下限价格?在图表上取名为 "趋势DN-0"、"趋势UP-0 "的图形对象(那些表示指标的某些水平的线),并从中读取所需数据 Vyacheslav Kornev 2017.06.26 09:38 #2356 Maxim Kuznetsov:在图表上取名为 "趋势DN-0"、"趋势UP-0 "的图形对象。(指标标记一些水平的那些线)并从中读取必要的数据 请写出如何在指标本身中做到这一点? 然后从这些值中制作2个缓冲区,在EA中使用它们?写在哪个地方取价? Artyom Trishkin 2017.06.26 09:44 #2357 Vyacheslav Kornev: 请写出如何在指标本身中做到这一点? 然后从这些值中制作2个缓冲区,在EA中使用它们?写在哪个地方取价?该指标已经拥有计算两个缓冲区并绘制的所有数据。你没有建议改变指标,而是建议从专家顾问中读取指标所画的线的数据。 然而,这对测试器的使用造成了限制--只有在视觉模式下,你才能测试专家顾问。 Vyacheslav Kornev 2017.06.26 09:55 #2358 Artyom Trishkin:该指标已经有了所有的数据来计算这两个缓冲区并绘制它们。没有人建议你改变指标,而是建议你从专家顾问中读取指标所画的线的数据。 然而,这对测试器的使用造成了限制--你只能在视觉模式下测试专家顾问。这意味着我应该在指标中写上#property indicator_buffers 2双倍BufferUp[], BufferDn[]。int OnInit(){SetIndexBuffer(0, BufferUp)。SetIndexBuffer(1, BufferDn)}然后到底用什么来连接这两个缓冲区呢? Artyom Trishkin 2017.06.26 10:01 #2359 Vyacheslav Kornev: 所以我必须在指标中写上#property indicator_buffers 2双倍BufferUp[], BufferDn[]。int OnInit(){SetIndexBuffer(0, BufferUp)。SetIndexBuffer(1, BufferDn)}然后到底用什么来连接这两个缓冲区呢?看:你的代码中有行在移动。ObjectMove("Trend DN-0",1,Time[st1],s1); ObjectMove("Trend DN-0",0,Time[st2],s2); //---- ObjectMove("Trend UP-0",1,Time[rt1],r1); ObjectMove("Trend UP-0",0,Time[rt2],r2);时间[st1],时间[st2]和这些参考点的价格s1,s2是针对一条线。 Time[rt1], Time[rt2], r1, r2 - 用于另一行。使用直线方程,你可以计算出这些点之间每个条形的缓冲值,并将这个值写入缓冲区。 Vyacheslav Kornev 2017.06.26 10:07 #2360 Artyom Trishkin:看:你的代码里有行在移动。我们有时间[st1],时间[st2]和这些点的价格s1,s2 - 为一条线。 Time[rt1], Time[rt2], r1, r2 - 用于另一行。使用直线方程,你可以计算出这些点之间每个条形的缓冲值,并将这个值写入缓冲区。所以你不能只是把线上的价格拿过去......。我不知道如何计算直线方程,如果可能,请写出这一切应该是怎样的。而且,一般来说,不应该在点之间取值,而应该在0或1巴以上取值。 1...229230231232233234235236237238239240241242243...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
...所有有美元存在的货币对...
代码中没有"从交易资金中使用的保证金 " 的计算...而在我第一篇文章的结尾,我指出"在测试器中切换存款货币 视图并不能解决这个问题。"
代码中没有"从交易资金中使用的保证金 " 的计算...而在我第一篇文章的结尾,我指出"在测试器中切换存款货币 类型并不能解决这个问题"。
然后我的心灵感应能力就结束了--布置密码。
对不起,我知道如何使用缓冲器将外部指标插入EA中...但这个指标中没有缓冲区,我怎么才能得到上、下限价格。
//+------------------------------------------------------------------+
//| trendlinesDay.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "nsi2000"
#property link "http://www.expert-mt4.nm.ru"
//----
#property indicator_chart_window
//---- input parameters
extern int nPeriod=10;
extern int Limit=350;
double Up[];
double Dn[];
///---- int Widners Oscilator
int cnt,nCurBar=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- Output in Char
for(cnt=0; cnt<=5; cnt++)
{
ObjectCreate("WSO-"+cnt,OBJ_HLINE,0,0,0);
ObjectSet("WSO-"+cnt,OBJPROP_COLOR,Red);
if(cnt<5)
{
ObjectCreate("Trend DN-"+cnt,OBJ_TREND,0,0,0,0,0);
ObjectSet("Trend DN-"+cnt,OBJPROP_COLOR,Magenta);
}
//----
ObjectCreate("WRO-"+cnt,OBJ_HLINE,0,0,0);
ObjectSet("WRO-"+cnt,OBJPROP_COLOR,Blue);
if(cnt<5)
{
ObjectCreate("Trend UP-"+cnt,OBJ_TREND,0,0,0,0,0);
ObjectSet("Trend Up-"+cnt,OBJPROP_COLOR,Aqua);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
for(cnt=0; cnt<=5; cnt++)
{
ObjectDelete("Trend UP-"+cnt);
ObjectDelete("Trend DN-"+cnt);
ObjectDelete("WSO-"+cnt);
ObjectDelete("WRO-"+cnt);
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//---- TODO: add your code here
double r1,r2,r3,r4,r5,r6;
int rt1,rt2,rt3,rt4,rt5,rt6;
double s1,s2,s3,s4,s5,s6;
int st1,st2,st3,st4,st5,st6;
//---- Линии сопротивления и поддержки
if(Bars<Limit) Limit=Bars-nPeriod;
for(nCurBar=Limit; nCurBar>0; nCurBar--)
{
if(Low[nCurBar+(nPeriod-1)/2]==Low[Lowest(NULL,0,MODE_LOW,nPeriod,nCurBar)])
{
s6=s5; s5=s4; s4=s3; s3=s2; s2=s1; s1=Low[nCurBar+(nPeriod-1)/2];
st6=st5; st5=st4; st4=st3; st3=st2; st2=st1; st1=nCurBar+(nPeriod-1)/2;
}
if(High[nCurBar+(nPeriod-1)/2]==High[Highest(NULL,0,MODE_HIGH,nPeriod,nCurBar)])
{
r6=r5; r5=r4; r4=r3; r3=r2; r2=r1; r1=High[nCurBar+(nPeriod-1)/2];
rt6=rt5; rt5=rt4; rt4=rt3; rt3=rt2; rt2=rt1; rt1=nCurBar+(nPeriod-1)/2;
}
}
//---- Move Object in Chart
ObjectMove("Trend DN-0",1,Time[st1],s1);
ObjectMove("Trend DN-0",0,Time[st2],s2);
//----
ObjectMove("Trend UP-0",1,Time[rt1],r1);
ObjectMove("Trend UP-0",0,Time[rt2],r2);
//----
return(0);
}
//+------------------------------------------------------------------+
对不起,我知道如何使用缓冲器将外部指标插入EA中...在这个指标中,没有缓冲区,我如何获得上、下限价格?
在图表上取名为 "趋势DN-0"、"趋势UP-0 "的图形对象(那些表示指标的某些水平的线),并从中读取所需数据
在图表上取名为 "趋势DN-0"、"趋势UP-0 "的图形对象。(指标标记一些水平的那些线)并从中读取必要的数据
请写出如何在指标本身中做到这一点? 然后从这些值中制作2个缓冲区,在EA中使用它们?
写在哪个地方取价?
请写出如何在指标本身中做到这一点? 然后从这些值中制作2个缓冲区,在EA中使用它们?
写在哪个地方取价?
该指标已经拥有计算两个缓冲区并绘制的所有数据。
你没有建议改变指标,而是建议从专家顾问中读取指标所画的线的数据。
然而,这对测试器的使用造成了限制--只有在视觉模式下,你才能测试专家顾问。
该指标已经有了所有的数据来计算这两个缓冲区并绘制它们。
没有人建议你改变指标,而是建议你从专家顾问中读取指标所画的线的数据。
然而,这对测试器的使用造成了限制--你只能在视觉模式下测试专家顾问。
这意味着我应该在指标中写上
#property indicator_buffers 2
双倍BufferUp[], BufferDn[]。
int OnInit()
{
SetIndexBuffer(0, BufferUp)。
SetIndexBuffer(1, BufferDn)
}
然后到底用什么来连接这两个缓冲区呢?
所以我必须在指标中写上
#property indicator_buffers 2
双倍BufferUp[], BufferDn[]。
int OnInit()
{
SetIndexBuffer(0, BufferUp)。
SetIndexBuffer(1, BufferDn)
}
然后到底用什么来连接这两个缓冲区呢?
看:你的代码中有行在移动。
时间[st1],时间[st2]和这些参考点的价格s1,s2是针对一条线。
Time[rt1], Time[rt2], r1, r2 - 用于另一行。
使用直线方程,你可以计算出这些点之间每个条形的缓冲值,并将这个值写入缓冲区。
看:你的代码里有行在移动。
我们有时间[st1],时间[st2]和这些点的价格s1,s2 - 为一条线。
Time[rt1], Time[rt2], r1, r2 - 用于另一行。
使用直线方程,你可以计算出这些点之间每个条形的缓冲值,并将这个值写入缓冲区。
所以你不能只是把线上的价格拿过去......。我不知道如何计算直线方程,如果可能,请写出这一切应该是怎样的。
而且,一般来说,不应该在点之间取值,而应该在0或1巴以上取值。