[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 477

 

demlin:
Еще вопрос: какой функцией можно вытащить стоимость одного пункта инструмента?

https://docs.mql4.com/ru/constants/marketinfo

MarketInfo(Symbol(), MODE_TICKVALUE);
 
LazarevDenis:

请告诉我应该在EA中写哪些代码来使EA每小时只交易一次。

例如,EA已经触发,一个订单被打开(对进一步感兴趣),我希望该订单不要在一小时时间框架的当前条上打开。

这一切看起来都一样。

int hh;
int CurrentHour;
CurrentHour=TimeHour(TimeCurrent())。
如果(CurrentHour!=hh)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point)。
hh=TimeHour(TimeCurrent())。
}

但我有无数的订单未完成

int hh = 0;
必须在start()和init()之前设置。
 
伙计们,帮我在历史上的测试器中找到一个手动交易的EA。代码库里有几个,我需要一个通过拖动nraffic左下角 的标题来控制的。很简单,找不到。HistTraining和可视化测试。手动交易不是这样的。非常容易的顾问,你也可以设置测试停止的水平。
 
demlin:

大家好!

请告诉我这是什么意思。

订单买入 ...... 失败 [交易超时]

我特别感兴趣的是它是什么类型的超时。

https://www.mql5.com/ru/forum/112612
这是一个过期的服务器响应 --- 无论交易是否打开。而且也不能保证交易没有开启

因此,我必须在一分钟内检查订单是否被打开,然后继续交易。

 

rlx


需要在start()和init()
之前设置。


int hh = 0; int init() { return(0); }int start() { //------------------------------------------------- int countorder; countorder=OrdersTotal(); if (countorder==0) { Alert ("no open orders"); }else { Alert ("have open orders"); } int hh; int CurrentHour; CurrentHour=TimeHour(TimeCurrent() ) ; if ((CurrentHour! =h)&&(countorder==0) ){ OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point); hh=TimeHour(TimeCurrent() ); }//------------------------------------------------- return(0); }int deinit() { return(0); }































我按你说的做了,没有效果,增加了未平仓订单的数量,现在收盘后立即开仓。

我通过OrderCloseTime()解决了这个问题--现在似乎可以了。

int countorder;
countorder=OrdersTotal();
if (countorder==0)
{
Alert ("no open orders");
}else
{
Alert ("have open orders");
}
int hh;
int CurrentHour;
int LastOrderCloseTime;
CurrentHour=TimeHour(TimeCurrent() ) 。


OrderSelect(HistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY); hh=TimeHour(OrderCloseTime() )。


如果((CurrentHour!=hh)&&(countorder==0)){ OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point) ; }


 
rlx:

https://www.mql5.com/ru/forum/112612
这是服务器响应的等待期------交易是否已经开启。而且不能保证交易没有开启

因此,按照开发者的建议,在一分钟后检查是否有订单开启,然后才继续。

谢谢你的回答
 
Roger:

然而,我不想成为一个麻烦的人。

向我解释一下,如果OrderTotal()为零,订单将如何打开。

谢谢你。


下面是带括号的图,它限制了在条件下执行的代码块

if(OrdersTotal()>0&&tral>0&&OrderMagicNumber()==MAGIC&&(OrderType()==OP_SELL||OrderType()==OP_BUY))

OrderSend() 操作 不受此条件影响

 

如何获得一个酒吧号码,在 "未来" :)

iBarShift() 从历史记录中获取条数的工作很好,但是如果你将线向右移动--超过零条,你如何获取这段代码的条数?

static string name_vline = "linescr";
//________________________________________________
int init(){
   DrawLine(name_vline,Time[5],Red);
return(0);
}
//________________________________________________
int deinit() {
return(0);
}
//________________________________________________
int start(){
   datetime X;
   X = ObjectGet(name_vline,OBJPROP_TIME1);
   Comment("Координата X = ",iBarShift(NULL,0,X),"\n",
           "Время = ",TimeToStr(X));
return(0);
}
//________________________________________________
void DrawLine(string name, datetime tim, color cl){
   ObjectCreate(name, OBJ_VLINE, 0, tim, Close[0], tim, Close[0]);
   ObjectSet(name, OBJPROP_BACK  , false);
   ObjectSet(name, OBJPROP_COLOR, cl);
   ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);      
   ObjectSet(name, OBJPROP_WIDTH, 0);
}
 
IgorM:

如何获得一个酒吧号码,在 "未来" :)

iBarShift()对于从历史记录中获取条形数字来说,工作得很好,但是如果我把线向右移动--超过零条,我怎样才能获得这段代码的条形数字?

你可以得到一个相对于Time[0]的偏移量

shift = MathRound((Time[0] - X) / (Period()*60));
 
rlx:

你可以得到一个相对于Time[0]的偏移量

谢谢你!现在一切都好了!

static string name_vline = "linescr";
//________________________________________________
int init(){
   DrawLine(name_vline,Time[5],Red);
return(0);
}
//________________________________________________
int deinit() {
return(0);
}
//________________________________________________
int start(){
   datetime X;
   X = ObjectGet(name_vline,OBJPROP_TIME1);
   if(X<=Time[0])
         Comment("Координата X = ",iBarShift(NULL,0,X),"\n",  "Время = ",TimeToStr(X));
   else
         Comment("Координата X = ",MathRound((Time[0] - X) / (Period()*60)),"\n","Время = ",TimeToStr(X));
return(0);
}
//________________________________________________
void DrawLine(string name, datetime tim, color cl){
   ObjectCreate(name, OBJ_VLINE, 0, tim, Close[0], tim, Close[0]);
   ObjectSet(name, OBJPROP_BACK  , false);
   ObjectSet(name, OBJPROP_COLOR, cl);
   ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);      
   ObjectSet(name, OBJPROP_WIDTH, 0);
}