[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 197

 
CLAIN:

同志们,请帮助...我写了一个简单的代码,但在编译时,它说括号不平衡,但我已经数了300次了--一切都到位了

这个想法很简单--如果MACD高于(或低于)0的时间在7分钟以内,则开仓


检查此功能

void AnalyzeSignal(int signal) 
{ 
  if(signal == 100) 
  { 
    ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"покупаем",Magic,0,Green); 
    if(ticket>0) 
    { 
      OrderSelect(ticket,SELECT_BY_TICKET); 
      Print("открылись на покупку по цене:" OrderOpenPrice()); 
    } 
    else 
    { 
      Print("открыться не удалось по причине:" GetLastError()); 
      return(0); 
    } 
  } 
  if(signal == -100) 
  { 
    ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"Продаем",Magic,0,Green); 
    if(ticket>0) 
    { 
      OrderSelect(ticket,SELECT_BY_TICKET); 
      Print("открылись на продажу по цене:" OrderOpenPrice()); 
    } 
    else 
    { 
      Print("открыться не удалось по причине:" GetLastError()); 
      return(0); 
    } 
  } 
} 

//---- 
return(0); 
} 
 
CLAIN:
p.s. 你是如何把剧本画得这么好的?

在你写答案时,有一个SRC按钮。

至于大括号,我有一个习惯,那就是指定近似大括号所指的内容

}//为

}// (信号...

 
splxgf:

至于方括号,我有个习惯,就是指定收尾的指代内容

}//为

}// (信号...


"根据口味和颜色......" - 但我必须承认,这种方法使代码中不必要的信息过多+需要花费时间编写额外的代码行+不能解决深度嵌套的问题(编号级别?)

更好地构造代码--如上面的例子

 

下午好,请教如何写一个条件,使开出一个订单后,第二个订单不能在同一个蜡烛上开出。我写了以下内容。

如果(...&& CountOrder<2 && (BarLast>1 || BarLast==-1))
{
OrderSend(Symbol(),OP_BUY,MinLot,Ask,0,VStopLossLong,0, "BUY: " ,MagicL,0,Green);

}

其中

//计算一个证券的未平仓订单数量
int CountOrder=0;
for (int j=0; j<OrdersTotal(); j++)
if (OrderSelect(j,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() ==Symbol()CountOrder++;

//最后关闭的位置 的条数,或者-1,如果还没有打开
int BarLast=BarLastClosePose()。


и

//最后关闭位置的条数
int BarLastClosePose()
{
datetime t;
int i;

for (i=0; i<OrdersHistoryTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
//if (OrderMagicNumber()!=Magic) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()>1) continue;
if (t<OrderCloseTime() ) t=OrderCloseTime();
}
}

return (iBarShift(Symbol(,Period(),t,true));
}

[Deleted]  
谢谢你,罗杰
 
datetime LastTradeBar;

bool CanTrade = True;

int Start()

{ 

if (LastTradeBar==Time[0] ) CanTrade=False; else CanTrade=True; 

if (... && CountOrder<2 && (BarLast>1 || BarLast==-1))
{
if (CanTrade)

{

OrderSend(Symbol(),OP_BUY,MinLot,Ask,0,VStopLossLong,0,"BUY: ",MagicL,0,Green);

LastTradeBar=Time[0];

} 

}
事实上,这里的逻辑变量是多余的。
[Deleted]  
Vinin:


检查此功能


维宁,经核实,该功能一切正常...return(0)指的是起始函数,如果你不计入return'y所附的括号,你会得到14个括号......。单程7人
 
CLAIN:

维宁,经核实,该功能一切正常...return(0)指的是起始函数,如果你不计入与return'y相连的括号,你会得到14个括号......。每个方向有7个。

将每个函数复制到一个单独的文件中,并验证编译,这有助于。

如果括号是正确的,那么请指出起点的结束和MACD信号的开始。

int start() 
{ 
//---- 

int total,ticket; //объявил тотал и тикет 
int signal = signal_MACD(); //сигнал МАКД передает значение в сигнал
AnalyzeSignal(signal); //аналайз сигнал анализирует сигнал
int MACD[8] = {0,1,2,3,4,5,6,7}; //создал одномерный массив МАКД
MACD[0] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,7); 
///Бла-бла-бла
MACD[7] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,0); 

total = OrdersTotal(); //тотал считает ордера
///Тут большая жирная закрывающая скобка, если конечно следующая строчка это функция
int signal_MACD()
[Deleted]  
splxgf:

将每个函数复制到一个单独的文件中,并验证编译,这有助于。

如果括号是正确的,请指出起点结束和MACD信号开始的位置。


嗯...int signal_MACD()确实是一个函数...我真的不明白为什么有些函数要写在开始函数的外面,有些则写在里面......。有什么区别?
 
说实话,我不知道是否有可能在一个功能中描述另一个功能,我从未遇到过这样的事情。