任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 322 1...315316317318319320321322323324325326327328329...1178 新评论 tommy27 2013.12.08 10:35 #3211 你能告诉我如何使指标显示的不是当前值,而是最后每条的最大值,我用Osma作为例子,但是当图表在移动时,它在策略测试器中显示的是当前值,而当你把它放在图表上时,什么都没有。 //---- indicator settings #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Silver #property indicator_width1 2 //---- indicator parameters extern int Per=12; extern int FastEMA=12; extern int SlowEMA=26; extern int SignalSMA=9; //---- indicator buffers double OsmaBuffer1[]; double OsmaBuffer[]; double MacdBuffer[]; double SignalBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- 2 additional buffers are used for counting. IndicatorBuffers(4); //---- drawing settings SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexDrawBegin(0,SignalSMA); IndicatorDigits(Digits+2); //---- 3 indicator buffers mapping SetIndexBuffer(0,OsmaBuffer1); SetIndexBuffer(1,OsmaBuffer); SetIndexBuffer(2,MacdBuffer); SetIndexBuffer(3,SignalBuffer); //---- name for DataWindow and indicator subwindow label IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| Moving Average of Oscillator | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars=IndicatorCounted(); //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- macd counted in the 1-st additional buffer for(int i=0; i<limit; i++) MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i); //---- signal line counted in the 2-nd additional buffer for(i=0; i<limit; i++) SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i); //---- main loop for(i=0; i<limit; i++) OsmaBuffer[i]=MacdBuffer[i]-SignalBuffer[i]; //---- done for(i=0; i<limit; i++) { for(int b=0; b<Per; b++) { OsmaBuffer1[i] =OsmaBuffer[ ArrayMaximum(OsmaBuffer,Per,b)]; } } return(0); } Всё разобрался, перемудрил просто))), достаточно этого: for(i=0; i<limit; i++) { OsmaBuffer1[i] = OsmaBuffer[ ArrayMaximum(OsmaBuffer,Per,i)]; } Mikhail Kozhemyako 2013.12.08 11:59 #3212 borilunad: 我明白!但是,我们如何对这个变量("指定价差")进行编程?当然,我可以创建一个变量Spread,并在我每次改变测试器中的spread时改变它。说,Spread(TestGenerator)或者有一些函数,或者你能以某种方式做出这样的函数,不可能是你不能!А? 在测试时,有一个固定的分布。 但对于大多数DC来说,它是可变的。如果你愿意,可以在测试器中考虑到这一点。一般来说,在最不利的条件下测试专家顾问。也就是说,有最大的点差,有可能延迟开单,等等。 Boris 2013.12.08 12:47 #3213 Sepulca: 在测试时,有一个特定的传播。 但对于大多数DC来说,它是可变的。如果你愿意,可以在测试器中考虑到这一点。一般来说,在最不利的条件下测试专家顾问系统。也就是说,有最大的点差,有可能延迟开单,等等。 我理解并做了所有的事情!只是想反映我在程序中设置的价差,因为在测试器中Ask经常被扭曲,然后通过Bid+spread找到它!看到分支MarketInfo在测试器中不工作!然后你就会知道什么是错的了!问过那里,没有人!因此,在这里感动,在那里回应,为此你和其他人感谢你! Андрей Григорьев 2013.12.08 12:57 #3214 同事们!请帮助我把一个现成的功能装入EA中 Андрей Григорьев 2013.12.08 13:04 #3215 以下是该函数 bool isFlagHistoryPos(int mn=-1) { datetime t; int gd = MarketInfo(Symbol(),MODE_DIGITS); int i, j=-1, k=OrdersHistoryTotal(); for (i=0; i<k; i++) { 如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){ 如果(OrderSymbol()==Symbol()){ 如果(OrderType()==OP_BUY || OrderType()==OP_SELL) { 如果(mn<0 || OrderMagicNumber()==mn) { 如果(t<OrderCloseTime()){ t=OrderCloseTime()。 j=i。 } } } } } } 如果(OrderSelect(j, SELECT_BY_POS,MODE_HISTORY)){ double ocp=NormalizeDouble(OrderClosePrice(),gd)。 double otp=NormalizeDouble(OrderTakeProfit(),gd)。 如果(MathAbs(ocp-otp)/Point<=TPpoint)返回(true)。 } return(false)。 专家顾问本身附在后面 /* 由Vinin反编译 */ Any rookie question, so [存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. KimIV的有用功能 Artyom Trishkin 2013.12.08 13:16 #3216 borilunad: 是的,我理解并做了所有的事情!我只是想让我设置的价差在程序中得到反映,因为Ask在测试器中经常被扭曲,然后通过Bid+spread找到它!看到分支MarketInfo在测试器中不工作!然后你就会知道什么是错的了!问过那里,没有人!因此,在这里感动,在那里回应,为此你和其他人感谢你! 妈的,鲍里斯。我以前写过。那么,你可以在专家顾问中直接模仿浮动点差。是什么阻止了我将浮动价差范围内的一个随机数字加入到买入价中,并用止损单打开它。并按价值收盘,而不是按止损单收盘。这比设置更大的静态传播要复杂,但如果你真的需要,你可以做到这一点。同时,在测试器中设置最小传播。 只是......。一条思路。 Boris 2013.12.08 13:25 #3217 artmedia70: 妈的,鲍里斯。我以前写过。那么,就在你的EA中做一个模拟的浮动差价。有什么能阻止你在买入时加入一个浮动价差范围内的随机数字,并以止损单开盘。并按价值收盘,而不是按止损单收盘。这比设置更大的静态传播要复杂,但如果你真的需要,你可以做到这一点。同时,在测试器中,设置最小传播。 这只是...一种思维方式。 谢谢你,Artem,这是在一个好的方向上更明智的做法!。我会这样做的! Artem mezhelovsky 2013.12.08 14:16 #3218 请帮助解决这个问题)我写了一个专家顾问,通过交叉挥舞来工作,但当我试图测试它时,终端发出哔哔声,没有测试任何东西(编译器代码喜欢它。 如何使它至少有东西显示? #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Red //---- indicator parameters extern int RPeriod=13; extern int RPrice=PRICE_CLOSE; extern int RMethod=MODE_EMA; //для желтой extern int YPeriod=30; extern int YPrice=PRICE_CLOSE; extern int YMethod=MODE_EMA; extern int Magic=17051994; //профит и лось extern int TakeProfit=150; extern int StopLoss=30; extern double lot=0.1; double movingred,movingellow,SL,TP,movingred2,movingellow2; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int kolpos=0,pos; movingred=iMA(Symbol(),0,RPeriod,0,RMethod,RPrice,1); movingellow=iMA(Symbol(),0,RPeriod,0,RMethod,RPrice,1); movingred2=iMA(Symbol(),0,RPeriod,0,RMethod,RPrice,2); movingellow2=iMA(Symbol(),0,RPeriod,0,RMethod,RPrice,2); for(pos=0;pos <OrdersTotal();pos++)//считаю ордера чтобы советник не трогал в ручную выставленные ордера { OrderSelect(pos,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic ) { kolpos++; } } if (kolpos==0) { //условвие для покупок продаж if(movingred2>movingellow2 && movingred<movingellow && Volume[0]<5)//продаем { OrderSend(Symbol(),OP_SELL,lot,Bid,10,Bid+StopLoss*Point,Bid-TakeProfit*Point,NULL,Magic,0,Green); } if(movingred2<movingellow2 && movingred>movingellow && Volume[0]<5)//покупаем { OrderSend(Symbol(),OP_BUY,lot,Ask,10,Ask-StopLoss*Point,Ask-TakeProfit*Point,NULL,Magic,0,Red); } } return(0); } TarasBY 2013.12.08 14:42 #3219 LBatters: 请帮助解决这个问题)我写了一个专家顾问,通过交叉挥舞来工作,但当我试图测试它时,终端发出哔哔声,没有测试任何东西(编译器代码喜欢它。 如何使它至少有东西显示? 你曾经看过你写的东西吗? 有些东西告诉我,"这就是问题所在"。 movingred=iMA(Symbol(),0,RPeriod,0,RMethod,RPrice,1); movingellow=iMA(Symbol(),0,RPeriod,0,RMethod,RPrice,1); movingred2=iMA(Symbol(),0,RPeriod,0,RMethod,RPrice,2); movingellow2=iMA(Symbol(),0,RPeriod,0,RMethod,RPrice,2); Vitalie Postolache 2013.12.08 14:44 #3220 LBatters: 请帮助解决这个问题)我写了一个专家顾问,可以在穿越挥舞上工作,但当我试图测试它时,终端发出哔哔声,没有测试任何东西(编译器代码喜欢。 如何使他至少有东西可以显示? //считаю ордера чтобы советник не трогал в ручную выставленные ордера 他将在哪里碰它,嗯?是的,它足以检查魔术师,手册没有魔术师。 而且,如上文所述,捣碎的东西不会重叠...... 1...315316317318319320321322323324325326327328329...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你能告诉我如何使指标显示的不是当前值,而是最后每条的最大值,我用Osma作为例子,但是当图表在移动时,它在策略测试器中显示的是当前值,而当你把它放在图表上时,什么都没有。
我明白!但是,我们如何对这个变量("指定价差")进行编程?当然,我可以创建一个变量Spread,并在我每次改变测试器中的spread时改变它。说,Spread(TestGenerator)或者有一些函数,或者你能以某种方式做出这样的函数,不可能是你不能!А?
在测试时,有一个固定的分布。
但对于大多数DC来说,它是可变的。如果你愿意,可以在测试器中考虑到这一点。一般来说,在最不利的条件下测试专家顾问。也就是说,有最大的点差,有可能延迟开单,等等。
在测试时,有一个特定的传播。
但对于大多数DC来说,它是可变的。如果你愿意,可以在测试器中考虑到这一点。一般来说,在最不利的条件下测试专家顾问系统。也就是说,有最大的点差,有可能延迟开单,等等。
以下是该函数
bool isFlagHistoryPos(int mn=-1) {
datetime t;
int gd = MarketInfo(Symbol(),MODE_DIGITS);
int i, j=-1, k=OrdersHistoryTotal();
for (i=0; i<k; i++) {
如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){
如果(OrderSymbol()==Symbol()){
如果(OrderType()==OP_BUY || OrderType()==OP_SELL) {
如果(mn<0 || OrderMagicNumber()==mn) {
如果(t<OrderCloseTime()){
t=OrderCloseTime()。
j=i。
}
}
}
}
}
}
如果(OrderSelect(j, SELECT_BY_POS,MODE_HISTORY)){
double ocp=NormalizeDouble(OrderClosePrice(),gd)。
double otp=NormalizeDouble(OrderTakeProfit(),gd)。
如果(MathAbs(ocp-otp)/Point<=TPpoint)返回(true)。
}
return(false)。
专家顾问本身附在后面
/* 由Vinin反编译 */
是的,我理解并做了所有的事情!我只是想让我设置的价差在程序中得到反映,因为Ask在测试器中经常被扭曲,然后通过Bid+spread找到它!看到分支MarketInfo在测试器中不工作!然后你就会知道什么是错的了!问过那里,没有人!因此,在这里感动,在那里回应,为此你和其他人感谢你!
妈的,鲍里斯。我以前写过。那么,你可以在专家顾问中直接模仿浮动点差。是什么阻止了我将浮动价差范围内的一个随机数字加入到买入价中,并用止损单打开它。并按价值收盘,而不是按止损单收盘。这比设置更大的静态传播要复杂,但如果你真的需要,你可以做到这一点。同时,在测试器中设置最小传播。
只是......。一条思路。
妈的,鲍里斯。我以前写过。那么,就在你的EA中做一个模拟的浮动差价。有什么能阻止你在买入时加入一个浮动价差范围内的随机数字,并以止损单开盘。并按价值收盘,而不是按止损单收盘。这比设置更大的静态传播要复杂,但如果你真的需要,你可以做到这一点。同时,在测试器中,设置最小传播。
这只是...一种思维方式。
请帮助解决这个问题)我写了一个专家顾问,通过交叉挥舞来工作,但当我试图测试它时,终端发出哔哔声,没有测试任何东西(编译器代码喜欢它。 如何使它至少有东西显示?
请帮助解决这个问题)我写了一个专家顾问,通过交叉挥舞来工作,但当我试图测试它时,终端发出哔哔声,没有测试任何东西(编译器代码喜欢它。 如何使它至少有东西显示?
有些东西告诉我,"这就是问题所在"。
请帮助解决这个问题)我写了一个专家顾问,可以在穿越挥舞上工作,但当我试图测试它时,终端发出哔哔声,没有测试任何东西(编译器代码喜欢。 如何使他至少有东西可以显示?
//считаю ордера чтобы советник не трогал в ручную выставленные ордера
他将在哪里碰它,嗯?是的,它足以检查魔术师,手册没有魔术师。
而且,如上文所述,捣碎的东西不会重叠......