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

 
FoxUA:

也许我的意思并不准确,我需要BalansEURUSD 这个变量以百分比显示盈亏,"BalansEURUSD =5%",像这样

以此类推,再来几对,比方说英镑和多兰姆。

一度


这比较难,但可以计算出来。

对于一个卖出的订单

profit=NormalizeDouble((OrderOpenPrice()-Ask)*MarketInfo("EURUSD",MODE_TICKVALUE)*OrderLots()/Point,2);

margin=NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck("EURUSD",OP_SELL,OrderLots(),2)。

用于购买。

profit=NormalizeDouble((Bid-OrderOpenPrice())*MarketInfo("EURUSD",MODE_TICKVALUE)*OrderLots()/Point,2)。

margin=NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck("EURUSD",OP_BUY,OrderLots(),2)。

这些都是计算订单利润的完整公式+保证金,对于这个订单,应考虑到保证金,因为如果订单关闭,释放的保证金将被添加到余额中,资金将在数字上增加,但真正的利润可能还没有得到

 

伙计们,请告诉我如何触发一个挂单 并放置另一个??????。我试着通过订单选择,但它不工作 ........
after
order type == buy, // where buystop was earlier
open pending order // (it does not open)

 
VOLDEMAR:

你们能不能告诉我,如何触发一个挂单,再下一个??????。我试图通过订单选择来做,但没有成功 ........
之后
订单类型==买入,//在买入之前是通过停止来实现的
打开一个挂单//(不打开)。


如果有,说明(之前设置的)挂单已经成为可销售的,那么就下一个订单(另一个你需要的挂单,例如:如果买单在市场上,那么就下一个补仓单,等等)。我建议阅读

alpari网站 - 外汇培训 - 交易员手册 - 自动交易MKL4(左侧面板) - 交易顾问 - (订单选择、订单结束、条件运算符等)。

http://www.alpari.ru/ru/school/textbook/autotrading/expert_advisors/- 简明扼要,内容丰富...

 

我正在努力学习如何编程。 请告诉我,我怀疑在专家顾问中,以下条件从未得到满足

while (B*Point >zmm)
Comment("差值", B);
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point, "macd sample," 16384,0,Green);

如何检查? 有哪些方法可以使用? 而当蜱虫不工作时,是否有可能呢?

 

亲爱的专家们!我正在学习写一个EA。它是有效的,但不是一切。修改和关闭订单的区块不起作用。我找不到原因。我请求帮助。

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

extern int TakeProfit=484; //
extern int StopLoss=89;    //
extern bool BStop=true;    //Включение безубытка
extern int Stop=90;        //            
//+------------------------------------------------------------
int start()
{//1
   
if(TakeProfit<10){Alert("Ошибка,Take слишком близко");return;}
if(StopLoss<10){Alert("Ошибка,StopLoss слишком близко");return;}
   
bool Buy=false;
bool Sell=false;
if(Close[0]>High[1])Buy=true;
if(Close[0]<Low[1])Sell=true;

int err;
int Order_Count[6];
int OP=-1;
ArrayInitialize(Order_Count,0);                             
         
for(int i=0;i<=OrdersTotal();i++)       //
  {//2                                   // Блок учета ордеров
   if(OrderSelect(i,SELECT_BY_POS)==true)//
    {//3                                 //
     Order_Count[OrderType()]++;         //
     if(OP!=-1)return(Order_Count[OP]);  //
    }//3
  }//2  
     if(OrdersTotal()>0)
      {//2
       if(BStop==true&&OrderOpenPrice()!=OrderStopLoss())                                                //Модификация ордеров
        {//3                                                                                             //
         if((OrderType()==0&&(Ask-OrderOpenPrice())>Stop)||(OrderType()==1&&(OrderOpenPrice()-Bid)>Stop))//
          {//4                                                                                           // 
           int ticket=OrderTicket();                                                                     // 
           double Price=OrderOpenPrice();                                                                //
           double SL=OrderOpenPrice();                                                                   //
           double TP=OrderTakeProfit();                                                                  //
           bool Ans=OrderModify(ticket,Price,SL,TP,0);                                                   //
           
           if(Ans==false){err=GetLastError();Alert(err);Sleep(500);return;}                              //Обработка ошибок
          }//4
        }//3
          
                                                                                                                                                                                                                                                                                                                                       // 
       if(OrderType()==1&&(Buy==true||Ask<OrderTakeProfit()||Bid>OrderStopLoss()))      //Условия закрытия ордеров Sell  
        {//3
         ticket=OrderTicket();                             //Закрытие ордеров Sell                                                                         
         double Lots=OrderLots();                          //
         OrderClose(ticket,Lots,Ask,4);                    //
         
         err=GetLastError();                               //Обработка ошибок 
         if(err>0){Alert(err);Sleep(500);return;}          //                                                                              
        }//3
                                                           
       if(OrderType()==0&&(Sell==true||Bid>OrderTakeProfit()||Ask<OrderStopLoss()))      //Условия закрытие ордеров Buy 
       {//3
         ticket=OrderTicket();                             //Закрытие ордеров Buy                   
         Lots=OrderLots();                                 //  
         OrderClose(ticket,Lots,Bid,4);                    //
          
         err=GetLastError();                               //Обработка ошибок
         if(err>0){Alert(err);Sleep(500);return;}          //
       }//3
      }//2 
                   
   if(Buy==false&&Sell==false)return;
   int Total=1;
   double Lot=0.03;                 
/*  if(AccountBalance()>400)Lot=0.04;          //
   if(AccountBalance()>500)Lot=0.05;          //
   if(AccountBalance()>600)Total=2;           //
   if(AccountBalance()>800)Lot=0.04;Total=2;  // Блок вычисления лота для реала
   if(AccountBalance()>1000)Lot=0.05;Total=2; //
   if(AccountBalance()>1200)Lot=0.04;Total=3; //
   if(AccountBalance()>1500)Lot=0.05;Total=3; //
   if(AccountBalance()>1600)Lot=0.04;Total=4; //
   if(AccountBalance()>1800)Lot=0.03;Total=6;*/ //
   
   Lot=0.1;
   if(AccountBalance()>1600)Lot=0.2;
   if(AccountBalance()>2400)Lot=0.3;
                                                                                      
   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){Alert(err);Sleep(500);}                                                  //
      return;
   }//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){Alert(err);Sleep(500);}                                                   //
   }//2
  
return;
}//1

我在请求帮助。

 
fanat:

亲爱的专家们!我正在学习写一个EA。它是有效的,但不是一切。修改和关闭订单的区块不起作用。我找不到原因。我请求帮助。

我在请求帮助。


也许是时候熟悉一下这些功能了。
 

问题就在这里。

MathSrand(TimeLocal())。

int periodRandom=period+ MathRand()/10000;
int period2Random=period2+ MathRand()/10000;

Moving1=iMA(Symbol(),0,periodRandom,0,MODE_SMA,price,1) ;

Moving2=iMA(Symbol(),0,period2Random,0,MODE_SMA,price,1)。

我决定随机改变挥手的周期--周期加一个0到3的随机值。

但在测试器中,运行显示的利润值总是相同的。也许期数没有变化,我存错了什么?

 

日安!问题很简单:是否可以不通过常数来设置二维数组的第二维?

也就是说,我应该这样做:double massiv[5][5],但我想要double massiv[5][k],其中k是一个已知的整数,例如通过extern int k = 5在前面定义。第一个维度可以用ArrayResize函数 改变,但第二个维度由于某种原因不能改变...

 
fru1t:

下午好,我的问题很简单:除了通过常数之外,有没有可能以某种方式指定一个二维数组的第二维?

也就是说,我应该这样做:double massiv[5][5],但我想要double massiv[5][k],其中k是一个已知的整数,例如通过extern int k = 5在前面定义。第一个维度可以用ArrayResize函数改变,但第二个维度由于某种原因不能改变...


#define k 5

https://docs.mql4.com/ru/basis/preprosessor/constant

 

你好,专家。

请解释如何从左上方的指标子窗口中删除信息。

它挡住了路。

原因: