[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 149

 

请教一个新手,AccountBalance()--它显示了余额的资金量,但我需要计算我的计算余额(calc_balance)。

这是一个非常简单的函数,但很难解释,因为它有一个开仓和挂单 的总量(Orderstotal),例如3个订单,每一个开仓的最大风险是2%。

为了开立另一笔交易,我需要计算计算余额的最大风险(2%),即公式的逻辑大致为:Calc_balance=AccountBalance()-2%-2%。

即一致的减法--但如何用代码写出来还没有成功,希望大家帮忙。

提前感谢!

 
你能告诉我资金(AccountEquity())和抵押品(AccountMargin())在买入和卖出头寸中是如何分开的?
 
T-G:
你能告诉我资金(AccountEquity())和抵押品(AccountMargin())在买入和卖出头寸中是如何分开的?
AccountEquity()只适用于你的账户,AccountMargin()与你的条件见Kim的非常 "有用的函数"!
 
先生们,谁能提供一个指标或专家顾问,在D1上暴露出支持 和阻力水平,最好没有滞后)))。
 
Top2n:
先生们,谁能提供一个指标或专家顾问,在D1上暴露支持和阻力水平,最好没有滞后)))。
搜索:DailyPivotPoints
 

大家下午好,我遇到了一个问题,我搞不清楚是什么问题。


有两个函数给出。如果我打电话给1,那么就没有任何作用。第二种情况,一切正常。请告知错误是什么?

提前感谢您!

int OrderBuy(double pLots, string pComment, int pMagic, int pDatetime, color pColor)
{
   int ticket = 0;
   int err = 0;
   int c = 0;
   int NumberOfTries = 100;
   for (c = 0; c < NumberOfTries; c++) 
     {
         RefreshRates();
         ticket = OrderSend(Symbol(), OP_BUY, pLots, Ask, 0, Ask-0.0005, Ask+0.0005, pComment, pMagic, pDatetime, pColor);
         err = GetLastError();
         if (err == 0/* NO_ERROR */) break;
         if (!(err == 4/* SERVER_BUSY */ || err == 137/* BROKER_BUSY */ || err == 146/* TRADE_CONTEXT_BUSY */ || err == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
      }
      return(ticket);

}


int OrderSell(double pLots, string pComment, int pMagic, int pDatetime, color pColor)
{
   int ticket = 0;
   int err = 0;
   int c = 0;
   int NumberOfTries = 100;
   
   for (c = 0; c < NumberOfTries; c++) 
   {
         RefreshRates();
         ticket = OrderSend(Symbol(), OP_SELL, pLots, Bid, 0, Bid+0.0005, Bid-0.0005, pComment, pMagic, pDatetime, pColor);
         err = GetLastError();
         if (err == 0/* NO_ERROR */) break;
         if (!(err == 4/* SERVER_BUSY */ || err == 137/* BROKER_BUSY */ || err == 146/* TRADE_CONTEXT_BUSY */ || err == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
    }
    return(ticket);

}





//вызовы функций

ticket = OrderBuy(lot, "---"+count+" ---", MagicNumber, 0, HotPink);
         Print(ticket+":тикет");//здесь выдает -1
         if (ticket < 0) 
               {
                  Print("Error: ", GetLastError());//здесь выдает "0";
                  return (0);
               } 




ticket = OrderSell(lot, "---"+count+" ---", MagicNumber, 0, HotPink);
         Print(ticket+":тикет");
         if (ticket < 0) 
               {
                  Print("Error: ", GetLastError());
                  return (0);
               } 
 
如果你想保持在终端的计算范围内,最简单的方法是从你拥有的东西中减去如果你开了一个适当的订单所剩下的东西。
double ld_MarginPosition = AccountFreeMargin() - AccountFreeMarginCheck();
 
arabon:

大家下午好,我遇到了一个问题,我搞不清楚是什么问题。


有两个函数给出。如果我打电话给1,那么就没有任何作用。第二种情况,一切正常。请告知错误是什么?

提前感谢您!


函数GetLastError() 在OrderSell和OrderBuy的循环中,重置了错误值(见GetLastError的帮助,ATTENTION),因此

Print("Error: ", GetLastError());

试着在循环中直接打印出来,然后你会看到由于错误而无法打开订单的地方。

 

我做了一个简单的指标,可以 "翻转 "仪器。有时,为了感知,反过来看一副更容易,看同一张照片,眼睛会被 "洗掉"。我从来没有从文件中读过(我甚至从来没有尝试过与文件打交道),我可以显示完整的图表,有人有什么想法吗?


附加的文件:
converter.mq4  2 kb
 

通过搜索或在金的功能中仍然没有找到它。

如何正确地分别计算未平仓订单的保证金?

我以前是这样做的。

в цикле
if (OrderType() == OP_BUY ) {  
   MarginBuy += (OrderOpenPrice()*OrderLots()/AccountLeverage())*MarketInfo(Symbol(), MODE_LOTSIZE);
}
         
if (OrderType() == OP_SELL ) {  
   MarginSell += (OrderOpenPrice()*OrderLots()/AccountLeverage())*MarketInfo(Symbol(), MODE_LOTSIZE);
}

我得到了一个与终端显示不同的值

如果你想适应终端的计算,最简单的方法是从你拥有的东西中减去如果你打开相应的订单所剩下的东西。
double ld_MarginPosition = AccountFreeMargin() - AccountFreeMarginCheck();


你不能只是减去它。 我需要为每个方向单独计算。