新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1338

 

我将更正确地提出这个问题。

有一个代码块向专家顾问解释它需要开多少个交易。它看起来像这样

int OPEN=1。

如果(OrdersTotal())

OPEN=0; //不能再开单了

如果(OPEN==1)

{

//在这里打开

}

问题是,它为所有符号打开了所需的交易数量(本例中为1)。而我需要向他解释

它需要在当前 工具上打开这个数量的交易。像_Symbol或Symbol()。如何才能做到这一点?我认为解决方案很简单。

 
sibiriyak73:

我将更正确地提出这个问题。

有一个代码块向专家顾问解释它需要开多少个交易。它看起来像这样

int OPEN=1。

如果(OrdersTotal())

OPEN=0; //不能再开单了

如果(OPEN==1)

{

//在这里打开

}

问题是,它为所有符号打开了所需的交易数量(本例中为1)。而我需要向他解释

它需要在当前 工具上打开这个数量的交易。像_Symbol或Symbol()。如何才能做到这一点?我认为解决方案很简单。

if(!isTradeToDay(Symbol()))
 {
  //Здесь открываем
 }
 
Iurii Tokman:
需要大量的交易,并且在卖出时
 
sibiriyak73:
破坏了大量的交易,而且是在卖出的情况下。

有两个选择:
1.显示所有代码
2.加入心灵感应俱乐部

 
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);

}

下面是没有任何声明变量 的代码。

 
sibiriyak73:

代码应插入Alt+S
,函数在哪里?
,你是如何编译的?没有错误?

 
Iurii Tokman:

代码应插入Alt+S
,函数在哪里?
,你是如何编译的?没有错误?

该功能在底部。编译没有错误。卖方设法调整某一特定工具上的开仓交易,即使其他工具上也有开仓。

器械。但是,海湾方面在每一次打勾 时都会进行交易,仅此而已。

 
Iurii Tokman:

代码应插入Alt+S
,函数在哪里?
,你是如何编译的?没有错误?

目前,代码是这样的。卖方一切正常,但买方的每一个刻度 都是一个交易。
附加的文件:
 
sibiriyak73:
目前,代码是这样的。卖方都可以,但买方的每一个刻度 都是交易。

在买入方面也应该这样做

 
Iurii Tokman:

买方也应这样做

我找不到在isTradeToDay函数中应该怎么改,才能使它在买入方和卖出方都一样。买方仍然不工作:(

原因: