新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1338 1...133113321333133413351336133713381339134013411342134313441345...1953 新评论 sibiriyak73 2020.12.31 02:06 #13371 我将更正确地提出这个问题。 有一个代码块向专家顾问解释它需要开多少个交易。它看起来像这样 int OPEN=1。 如果(OrdersTotal()) OPEN=0; //不能再开单了 如果(OPEN==1) { //在这里打开 } 问题是,它为所有符号打开了所需的交易数量(本例中为1)。而我需要向他解释 它需要在当前 工具上打开这个数量的交易。像_Symbol或Symbol()。如何才能做到这一点?我认为解决方案很简单。 Iurii Tokman 2020.12.31 06:18 #13372 sibiriyak73:我将更正确地提出这个问题。有一个代码块向专家顾问解释它需要开多少个交易。它看起来像这样int OPEN=1。如果(OrdersTotal())OPEN=0; //不能再开单了如果(OPEN==1){//在这里打开}问题是,它为所有符号打开了所需的交易数量(本例中为1)。而我需要向他解释它需要在当前 工具上打开这个数量的交易。像_Symbol或Symbol()。如何才能做到这一点?我认为解决方案很简单。 if(!isTradeToDay(Symbol())) { //Здесь открываем } sibiriyak73 2020.12.31 07:51 #13373 Iurii Tokman: 需要大量的交易,并且在卖出时 Iurii Tokman 2020.12.31 08:08 #13374 sibiriyak73: 破坏了大量的交易,而且是在卖出的情况下。 有两个选择: 1.显示所有代码 2.加入心灵感应俱乐部 sibiriyak73 2020.12.31 08:39 #13375 Iurii Tokman:有两个选择: 1. 显示整个代码 2. 加入心灵感应俱乐部:) :) 我想出了如何同时打开买和卖。但交易的数量并不是每次打钩都能打开的。 int start() { double a=iOpen(NULL,PERIOD_D1,0)。 double d=_ORDER*0.00001; 双层c=d+1。 double s=c*a; double limit= NormalizeDouble(s,_Digits)。 // Print("limit level=",limit)。 double e=_STOP*0.00001; 双重n=e+1。 双层m=n*a。 double SL= NormalizeDouble(m,_Digits)。 //打印("停止水平=",SL)。 double p=_TP*0.00001。 double f=p+1; double z=f*a; double TP= NormalizeDouble(z,_Digits)。 double w=iOpen(NULL,PERIOD_D1,0)。 double q=_ORDER*0.00001; 双倍j=q+1。 双v=w/j。 double limit1= NormalizeDouble(v,_Digits)。 // Print("limit level=",limit)。 double k=_STOP*0.00001; double y=k+1; 双u=w/y。 double SL1= NormalizeDouble(u,_Digits)。 //Print("stop level=",SL); double g=_TP*0.00001。 双倍_f=g+1。 double _m=w/_f; double TP1= NormalizeDouble(_m,_Digits)。 如果(Hour()==Nac) { if(iOpen(NULL,PERIOD_D1,0)<iOpen(NULL,PERIOD_D1,1)) { if(!isTradeToDay(Symbol())) { int ticket1=OrderSend(Symbol(),OP_SELLSTOP,1.5,limit1,3,SL1,TP1,NULL,0,0,clrRed); //打开这里 } } 如果(iOpen(NULL,PERIOD_D1,0)>iOpen(NULL,PERIOD_D1,1)) { 如果(isTradeToDay(Symbol())) { int ticket=OrderSend(Symbol(),OP_BUYSTOP,1.5,limit,3,SL,TP,NULL,0,0,0,clrBlueViolet); //打开这里 } } } 如果(Hour()==Kon) { bool result。 int错误。 //---- while(OrdersTotal()>0) { 如果(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)) { 如果(OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS),3,CLR_NONE) 。 如果(OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE)。 如果(OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket())。 if(result!=TRUE) { error=GetLastError()。 Print("LastError = ",error, ",Symbol())。 } 否则 error=0。 } 否则 Print("Error when order select", GetLastError())。 } } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ return(0); } 下面是没有任何声明变量 的代码。 Any questions from newcomers 任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. 求助,我想请高手朋友们写一个 止盈--止损脚本 Iurii Tokman 2020.12.31 09:01 #13376 sibiriyak73: 代码应插入Alt+S,函数在哪里?,你是如何编译的?没有错误? sibiriyak73 2020.12.31 09:08 #13377 Iurii Tokman:代码应插入Alt+S,函数在哪里?,你是如何编译的?没有错误? 该功能在底部。编译没有错误。卖方设法调整某一特定工具上的开仓交易,即使其他工具上也有开仓。 器械。但是,海湾方面在每一次打勾 时都会进行交易,仅此而已。 sibiriyak73 2020.12.31 09:12 #13378 Iurii Tokman:代码应插入Alt+S,函数在哪里?,你是如何编译的?没有错误? 目前,代码是这样的。卖方一切正常,但买方的每一个刻度 都是一个交易。 附加的文件: dkub7ffup_1nw86d_2.mq4 13 kb 4i6gjk84s_tem9jy_2.ex4 20 kb Iurii Tokman 2020.12.31 09:30 #13379 sibiriyak73: 目前,代码是这样的。卖方都可以,但买方的每一个刻度 都是交易。 在买入方面也应该这样做 sibiriyak73 2020.12.31 10:20 #13380 Iurii Tokman:买方也应这样做 我找不到在isTradeToDay函数中应该怎么改,才能使它在买入方和卖出方都一样。买方仍然不工作:( 1...133113321333133413351336133713381339134013411342134313441345...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我将更正确地提出这个问题。
有一个代码块向专家顾问解释它需要开多少个交易。它看起来像这样
int OPEN=1。
如果(OrdersTotal())
OPEN=0; //不能再开单了
如果(OPEN==1)
{
//在这里打开
}
问题是,它为所有符号打开了所需的交易数量(本例中为1)。而我需要向他解释
它需要在当前 工具上打开这个数量的交易。像_Symbol或Symbol()。如何才能做到这一点?我认为解决方案很简单。
我将更正确地提出这个问题。
有一个代码块向专家顾问解释它需要开多少个交易。它看起来像这样
int OPEN=1。
如果(OrdersTotal())
OPEN=0; //不能再开单了
如果(OPEN==1)
{
//在这里打开
}
问题是,它为所有符号打开了所需的交易数量(本例中为1)。而我需要向他解释
它需要在当前 工具上打开这个数量的交易。像_Symbol或Symbol()。如何才能做到这一点?我认为解决方案很简单。
破坏了大量的交易,而且是在卖出的情况下。
有两个选择:
1.显示所有代码
2.加入心灵感应俱乐部
有两个选择:
1. 显示整个代码
2. 加入心灵感应俱乐部:)
:)
我想出了如何同时打开买和卖。但交易的数量并不是每次打钩都能打开的。
int start()
{
double a=iOpen(NULL,PERIOD_D1,0)。
double d=_ORDER*0.00001;
双层c=d+1。
double s=c*a;
double limit= NormalizeDouble(s,_Digits)。
// Print("limit level=",limit)。
double e=_STOP*0.00001;
双重n=e+1。
双层m=n*a。
double SL= NormalizeDouble(m,_Digits)。
//打印("停止水平=",SL)。
double p=_TP*0.00001。
double f=p+1;
double z=f*a;
double TP= NormalizeDouble(z,_Digits)。
double w=iOpen(NULL,PERIOD_D1,0)。
double q=_ORDER*0.00001;
双倍j=q+1。
双v=w/j。
double limit1= NormalizeDouble(v,_Digits)。
// Print("limit level=",limit)。
double k=_STOP*0.00001;
double y=k+1;
双u=w/y。
double SL1= NormalizeDouble(u,_Digits)。
//Print("stop level=",SL);
double g=_TP*0.00001。
双倍_f=g+1。
double _m=w/_f;
double TP1= NormalizeDouble(_m,_Digits)。
如果(Hour()==Nac)
{
if(iOpen(NULL,PERIOD_D1,0)<iOpen(NULL,PERIOD_D1,1))
{
if(!isTradeToDay(Symbol()))
{
int ticket1=OrderSend(Symbol(),OP_SELLSTOP,1.5,limit1,3,SL1,TP1,NULL,0,0,clrRed); //打开这里
}
}
如果(iOpen(NULL,PERIOD_D1,0)>iOpen(NULL,PERIOD_D1,1))
{
如果(isTradeToDay(Symbol()))
{
int ticket=OrderSend(Symbol(),OP_BUYSTOP,1.5,limit,3,SL,TP,NULL,0,0,0,clrBlueViolet); //打开这里
}
}
}
如果(Hour()==Kon)
{
bool result。
int错误。
//----
while(OrdersTotal()>0)
{
如果(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
如果(OrderType()==OP_BUY)
result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS),3,CLR_NONE) 。
如果(OrderType()==OP_SELL)
result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE)。
如果(OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
OrderDelete(OrderTicket())。
if(result!=TRUE)
{
error=GetLastError()。
Print("LastError = ",error, ",Symbol())。
}
否则
error=0。
}
否则
Print("Error when order select", GetLastError())。
}
}
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
return(0);
}
下面是没有任何声明变量 的代码。
代码应插入Alt+S
,函数在哪里?
,你是如何编译的?没有错误?
代码应插入Alt+S
,函数在哪里?
,你是如何编译的?没有错误?
该功能在底部。编译没有错误。卖方设法调整某一特定工具上的开仓交易,即使其他工具上也有开仓。
器械。但是,海湾方面在每一次打勾 时都会进行交易,仅此而已。
代码应插入Alt+S
,函数在哪里?
,你是如何编译的?没有错误?
目前,代码是这样的。卖方都可以,但买方的每一个刻度 都是交易。
在买入方面也应该这样做
买方也应这样做
我找不到在isTradeToDay函数中应该怎么改,才能使它在买入方和卖出方都一样。买方仍然不工作:(