[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 867

 

亲爱的专家们。我正在学习编程。我做了我的第一个EA,但它打开了一个交易,并没有做其他事情。它没有在日记中写下一个错误。我需要你的帮助!

//+------------------------------------------------------------------+
//|                                                Monetny dvor1.mq4 |
//|                                                            fanat |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "fanat"
#property link      "http://www.metaquotes.net"

extern double Lot=0.1;          //Рабочий лот
extern double TakeProfit=149;    //
extern double StopLoss=275;      //          
extern int Total=1;             //Колличество ордеров   
//+------------------------------------------------------------
int start()
{//1
if(TakeProfit<10)
{//2 
  Alert("Ошибка,TakeProfit слишком близко");
  return;
}//2
     
if(StopLoss<10)
{//2
  Alert("Ошибка,StopLoss слишком близко");
  return;
}//2

if(Total<1)
{//2
  Alert("Ошибка, неизвестно колличество ордеров");
  return;
}//2
bool Buy=false;
bool Sell=false;
bool BuyClose=false;
bool SellClose=false;                                                                             
if(iHigh(NULL,PERIOD_M15,2)<iClose(NULL,PERIOD_M15,1))Buy=true;
if(iLow(NULL,PERIOD_M15,2)>iClose(NULL,PERIOD_M15,1))Sell=true;
if(iClose(NULL,PERIOD_M15,2)>iClose(NULL,PERIOD_M15,1))BuyClose=true;
if(iClose(NULL,PERIOD_M15,2)<iClose(NULL,PERIOD_M15,1))SellClose=true;
if(Buy==false&&Sell==false&&BuyClose==false&&SellClose==false)return;
int err;                                                 //
int ticket;                                              //
int Order_Count[6];                                      //
int OP=-1;                                               //
ArrayInitialize(Order_Count,0);                          //
                                                          //Блок учета ордеров
for(int i=1; i<=OrdersTotal(); i++)                      //
{//2                                                     //
  if(OrderSelect(i-1, SELECT_BY_POS)==true)               // 
  Order_Count[OrderType()]++;                             //
  if(OP!=-1) return(Order_Count[OP]);                     //                         
}//2
  if(OrderSelect(ticket,SELECT_BY_TICKET))                //Закрытие ордеров Sell
{//2                                                     // 
  if((OrderType()==1)&&(Buy==true||SellClose==true))      //  
  {//3                                                    //
  OrderClose(ticket,Lot,Ask,4);                           //
  err=GetLastError();                                     //Обработка ошибок 
  if(err==0)                                              //
  return;                                                 //  
  else                                                    //
  {//4                                                    //
  Sleep(1000);                                            //
  Alert(err);                                             //
  }//4                                    
  }//3
}//2 
  if(OrderSelect(ticket,SELECT_BY_TICKET))                //Закрытие ордеров Buy
{//2                                                     //
  if((OrderType()==0)&&(Sell==true||BuyClose==true))      // 
  {//3                                                    //  
  OrderClose(ticket,Lot,Bid,4);                           // 
  err=GetLastError();                                     //Обработка ошибок
  if(err==0)                                              //
  return;                                                 //
  else                                                    //
  {//4                                                    //
  Sleep(1000);                                            //
  Alert(err);                                             //
  }//4
  }//3
}//2 
if(Order_Count[OP_BUY]>=Total&&Order_Count[OP_SELL]>=Total) return;                  
                                                                                      
if(Order_Count[OP_BUY]<Total&&Order_Count[OP_SELL]==0&&Buy==true)                    //Открытие ордеров Buy
{//2                                                                                 //
  OrderSend(Symbol(), OP_BUY, Lot, Ask, 4, Ask-StopLoss*Point, Ask+TakeProfit*Point); // 
  err=GetLastError();                                                                 //Обработка ошибок
  if(err==0)                                                                          //
  return;                                                                             //
  else                                                                                //
  {//3                                                                                // 
  Sleep(1000);                                                                        //
  Alert(err);                                                                         //
  }//3
}//2         
           
if(Order_Count[OP_SELL]<Total&&Order_Count[OP_BUY]==0&&Sell==true)                   //Открытие ордеров Sell 
{//2                                                                                 //
  OrderSend(Symbol(), OP_SELL, Lot, Bid, 4, Bid+StopLoss*Point, Bid-TakeProfit*Point);//
  err=GetLastError();                                                                 //Обработка ошибок
  if(err==0)                                                                          //
  return;                                                                             //
  else                                                                                //
  {//3                                                                                //
  Sleep(1000);                                                                        //
  Alert(err);                                                                         //
  }//3
}//2

return;
}//1
 

你能告诉我如何设置交易禁止条款吗?

例如:如果iStochastic>80,那么nottreid(禁止交易(或禁止开仓)?

 
fanat:

亲爱的专家们。我正在学习编程。我做了我的第一个专家顾问,但它打开了一个交易,并没有做其他事情。它没有在日记中写下一个错误。我需要你的帮助!


糟糕的混合,但它是有效的(在测试器中)。

 
Vinin:


糟糕的混合,但它是有效的(在测试器中)。


我意识到,开启交易的条件是愚蠢的。
 
Vinin:


糟糕的混合,但它是有效的(在测试器中)。


建立226。我的甚至在测试器中都不工作。你能告诉我为什么吗?
 
fanat:

建立226。它甚至在我的测试器中都不起作用。你能告诉我为什么吗?

我不知道为什么它对你不起作用。代码的作用
 
fanat:

建立226。它甚至在我的测试器中都不起作用。你能告诉我为什么吗?

在其他地方下载终端,同样是Build226。

 
Vinin:

为什么它对你不起作用,我不知道。该代码是有效的。

明白了。谢谢你。我将尝试重新安装MT。
 

亲爱的专家们。我今天早上发送了代码。它有专家顾问本身关闭交易的条件。但它只根据TP或SL关闭交易。如果我将止损点和止赢点设置为900,它只开出一笔交易,仅此而已。我在请求帮助。

 
fanat:

亲爱的专家们。我今天早上发送了代码。它有专家顾问本身关闭交易的条件。但它只根据TP或SL关闭交易。如果我将止损点和止赢点设置为900,它只开出一笔交易,仅此而已。我在请求帮助。


如果门票总是0,还能怎样呢。它必须被预先分配给某个东西

比如说

   int ticket;        

   for(int i=0 i<OrdersTotal(); i++)                      
      if(OrderSelect(i, SELECT_BY_POS))
         ticket=OrderTicket();
原因: