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

 
Zhunko:
你能不能把代码贴出来?也许是一个伪装的代码。你的意思是没有开始......?这是一个基本函数,就像C++中的main()。

这取决于你要解决什么任务,并确定你的代码在EA程序主体中的位置。没有人强迫我们保留start()函数中的代码

start()函数是我们代码模板中预定义的三个函数之一。它至少应该存在!因为父程序--终端程序(这是main(),主程序),执行它的主要任务,从服务器接收一个新的报价(大概)只是看你的函数start和执行代码,这是在它,如果它将只是返回(),那么start函数将停止在这里。

 
"专业人士,不要擦肩而过",:)请分享你最喜欢的(最好是俄语)新闻资源的链接,那里发布经济日历 和其他有用的东西。如果这些链接不能在这里发布,那就通过PM发给我。
 
,如果有买入信号,
,检查开放的卖出订单
,如果有,关闭
,如果没有,开放买入

,如果有卖出信号
,检查开放买入订单
,如果有,关闭
,如果没有,开放买入
 
frxmax:
帮助写出以下内容。

如果有一个买入信号
检查开放的卖出订单
如果是,请关闭
如果没有买入的信号

如果有一个卖出信号
检查未结的买入订单
如果是,我们就关闭
如果没有信号,重开买入


自己开始写--我们将帮助你

这里有一个起点,可以帮助你https://book.mql4.com/ru/

 
abolk:


自己开始写--我们会帮助你

给你https://book.mql4.com/ru/

我已经 "开始 "了。

total=OrdersTotal()。
如果(CONDITION打开一个购买订单)
如果(total<1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-StopLoss*Point,Bid+100*Point, "Buy",1111,0,Green);
如果(ticket<0)
{
Print("OrderSend failed with error #",GetLastError())。
return(0);
}
否则
{
如果(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
如果(OrderType()==OP_SELL)
OrderClose(NULL,Lot,Ask,3)。
return(0);
}
}

 
几乎是对的,只是先检查,然后再设置。
 
frxmax:
帮助写出以下内容。

如果有一个买入信号
检查开放的卖出订单
如果是,请关闭
如果没有信号,我们可以打开一个买入订单
//  в ф-ции старт 
  
if(....условие покупки....){
     if(CalculateOrders(Symbol(),OP_SELL)>0) Ord_Close(Symbol(),OP_SELL);
     Ticket(OP_BUY);      }

//-----------------------
int CalculateOrders(string simbol,int type)
  {
   int count=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==simbol)
        {
         if(OrderType()==type)  count++;
        
        }
     }
     
 return(count);
  }

//---------------------

void Ord_Close(string simb,int type) {  double price;
   
   if(type==OP_BUY)  price=MarketInfo(simb, MODE_BID); else
   if(type==OP_SELL) price=MarketInfo(simb, MODE_ASK);

   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if( OrderSymbol()!=simb || OrderMagicNumber()!=mn) continue;
      //---- check order type 
      if(OrderType()==type)
        {  OrderClose(OrderTicket(),OrderLots(),price,3,White);   break;  }
        
        
     }   
     
     
 } 
//-----------------------------

int Ticket(int op){
      double pp = MarketInfo(Symbol(), MODE_POINT);
      double pBid = MarketInfo(Symbol(), MODE_BID);
      double pAsk = MarketInfo(Symbol(), MODE_ASK); 
      double open_price;
      double T;
      color col=NULL;
      int mn=0;
      
  if(op==0) {open_price=pAsk; col=Blue; T=pAsk+Take*pp;}
  if(op==1) {open_price=pBid; col=Red;  T=pBid-Take*pp;}
  int res=OrderSend(Symbol(),op,0.1,open_price,0,0,T,NULL,mn,0,col); 

   return(res);               }
 
KONDOR:

非常感谢你的帮助,但我的做法有点不同,你的方法让我有点不明白。

你能向我解释一下如何卖掉这一切吗? 这里有很多我不明白的地方。

你一直都很有帮助。

 
frxmax:

试着把所有东西都翻出来卖掉--失败了,没有交易。

错误130。- 停止是不对的,那么我们在哪里有他们呢?

现在,它为每一个柱子都开了一个订单,但我只需要一个。


total=OrdersTotal()。

如果(total<1)

等。

 
KONDOR:


嗯,我深入到游戏中去了--出价和要求改变等......谢谢你的提醒)

我也弄好了停车的问题。