新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 234

 
Vitaly Muzichenko:

好的 "语气 "编程是一个没有错误或警告的程序,其他都是业余的。


让我们把有品位的东西留在后面。我想,这种警告是有原因的。问题是为什么?

 
Artyom Trishkin:
你不会从期刊中提取专家顾问所赚的钱。因此,程序必须处理这些错误,以便采取相应的行动。

因此,如果有的话,软件还是会处理它们,并显示有关它们的信息。我在这里错过了什么?

 
Andrey Sokolov:

因此,如果有的话,软件还是会处理它们,并显示有关它们的信息。我在这里错过了什么?

不是指程序,而是指终端。
为了使程序能够处理它们,必须首先取回它们。为了做到这一点,贸易函数 在错误时返回false。此外,如果函数的结果是假的,你必须得到错误代码GetLastError()并在你的程序中处理它。
 

你好!该终端没有被授权!去哪里,做什么?

 
kalmyk87 你好!终端没有授权!去哪里,做什么?
授权=连接到经纪人的服务器,你需要打开互联网。如果演示 - 你忘记了密码,请开一个新的帐户。如果是真的--给你的经纪人打电话。
 
STARIJ:
授权=与经纪人的服务器通信,你需要打开互联网。如果演示--忘记密码,请开一个新账户。如果是真的--给经纪人打电话。

我授权了我的账户......但由于某些原因,mql5配置文件没有被授权......。

 

下午好。请帮助解决这个问题...

该指标从CSV中为当前日绘制白色水平。如果价格没有达到这个水平,它(水平)在接下来的日子里会继续以虚线显示。当价格在未来达到这条白色虚线时,它就会停止。然而,在第二天检查未达到的水平后,指标认为该水平已经完成,并停止绘制。

我希望这条虚线能留在图表上。 谢谢你。

//------------- читаю и разбираю строку из файла --

txt_data = FileReadString(file);   дата_уровней = StrToTime(txt_data+" 00:00");
if(FileIsEnding(file)==true)     break; // если конец  Выход из цикла
ArrayInitialize(d_input, 0);
for (int i=0; i<12; i++)  //== считываю уровни в массив
 {
 txt_data = FileReadString(file); 
 d_input[i] = replace_dot(txt_data);
 if ( FileIsLineEnding(file) ) break;
 }

if(уровни == Daily)
  {
   double white = d_input[4];
   t0 = дата_уровней + 1*PeriodSeconds(PERIOD_H1);
   t1 = дата_уровней + 23*PeriodSeconds(PERIOD_H1);
     Draw_Level("white", white, c_day_3, STYLE_SOLID, толщина); 
      if(показ_неотработок)
    if( !check_white_level(дата_уровней, white) )
     draw_line(t0, white, c_day_3) ;
  }
//   отображение  уровней 
void Draw_Level(string name, double _level, color _colr, int _style, int _width)
{
string o_name = i_name +"_"+ name +"_"+ TimeToStr(t0,TIME_DATE);
if (_level>0)
 {
  if (ObjectFind(o_name) != 0)
   ObjectCreate(o_name, OBJ_TREND, 0, t0, _level, t1, _level);
  ObjectSet(o_name, OBJPROP_TIME1, t0);
  ObjectSet(o_name, OBJPROP_PRICE1, _level);
  ObjectSet(o_name, OBJPROP_TIME2, t1);
  ObjectSet(o_name, OBJPROP_PRICE2, _level);
  ObjectSet(o_name, OBJPROP_COLOR, _colr);
  ObjectSet(o_name, OBJPROP_STYLE, _style);
  if(_style == STYLE_DOT)   ObjectSet(o_name, OBJPROP_WIDTH, 1);
    else     ObjectSet(o_name, OBJPROP_WIDTH, _width);
  ObjectSet(o_name, OBJPROP_RAY, false);  // луч
  ObjectSetText(o_name, DoubleToStr(_level, 4) );
  ObjectSetInteger(0, o_name, OBJPROP_SELECTABLE, False); 
   ObjectSetInteger(0, o_name, OBJPROP_HIDDEN, True);  
   ObjectSetString(0, o_name, OBJPROP_TOOLTIP, "\n"); // убираю всплывающую надпись
 }
}
// проверка_отработки уровня
bool check_white_level(datetime t_open, double _level)
{
if (_level <= 0) return(False);
int bar0 = iBarShift(NULL, 0, t_open);
double max = High[iHighest(NULL, 0, MODE_HIGH, bar0, 0)];
double min = Low[iLowest(NULL, 0, MODE_LOW, bar0, 0)];
if( _level <= max && _level >= min )
  return(TRUE);
return(False);
}
void draw_line(datetime begin, double _level, color _clr)
{
if (_level <= 0) return;
string o_name = i_name +"_wh1_"+ TimeToStr(begin,TIME_DATE);
datetime t_0 = begin ;
datetime t_1 = TimeCurrent() ;
  if (ObjectFind(o_name) != 0)
   ObjectCreate(o_name, OBJ_TREND, 0, t_0, _level, t_1, _level);
  ObjectSet(o_name, OBJPROP_TIME1, t_0);
  ObjectSet(o_name, OBJPROP_PRICE1, _level);
  ObjectSet(o_name, OBJPROP_TIME2, t_1);
  ObjectSet(o_name, OBJPROP_PRICE2, _level);
  ObjectSet(o_name, OBJPROP_COLOR, _clr);
  ObjectSet(o_name, OBJPROP_STYLE, STYLE_DOT);
   ObjectSet(o_name, OBJPROP_WIDTH, 1);
    ObjectSet(o_name, OBJPROP_RAY, false);  // луч
    ObjectSetInteger(0, o_name, OBJPROP_SELECTABLE, False); 
  ObjectSetInteger(0, o_name, OBJPROP_HIDDEN, True);  
  ObjectSetString(0, o_name, OBJPROP_TOOLTIP, "\n"); // убираю всплывающую надпись
}
 
帮助我理解什么是债券
1) 我如何计算我的保释金?我如何在EA中获得这个值?
2) 我如何计算锁定的保证金?我如何在我的EA中获得这个值?
3) 我如何从一个未平仓订单的票据中获得保证金值?我找不到像OrderMargin()这样的函数,尽管我可以在终端看到订单的保证金(或者说它在说谎?)
4) 存款是在开单时固定一次的参数,还是在每次开单的新时刻按当前汇率重新计算(浮动)?

手工计算存款的公式是否正确?
(base_lot * trade_lot * current_rate%%%%%USD) / leverage = USD margin
 
smart_man:
帮助我理解什么是存款
1) 我如何计算押金?我如何在我的EA中获得这个值?
2) 我如何计算锁定的保证金?我如何在我的EA中获得这个值?
3) 我如何从一个未平仓订单的票据中获得保证金值?我找不到像OrderMargin()这样的函数,尽管我可以在终端看到订单的保证金(或者说它在说谎?)
4) 存款是在开单时固定一次的参数,还是在每次开单的新时刻按当前汇率重新计算(浮动)?

手工计算存款的公式是否正确?
(base_lot * trade_lot * current_rate%%%%%USD) / leverage = USD margin

1)

 margin =AccountInfoDouble(ACCOUNT_MARGIN);                        //-Размер зарезервированных залоговых средств на счете  в валюте депозита

2)不要使用

3)公式和你的一样,只是把 "current_%%%%%USD "换成了开仓价

4) 参数是固定的


正确的

 
Alekseu Fedotov:

1)

2)不要使用

3)公式和你的一样,只是把 "current_%%%%%USD "换成了开仓价

4) 参数是固定的


正确的

谢谢你!

2)发现信息说公式是一样的,只是在最后还是把所有的东西都除以2,但不知道这是否真的。

3) 仓位的开盘价,通过OrderOpenPrice() ?

5) 另一个问题,如果计划开仓,那么在此之前必须计算订单的所有未来成本(保证金金额,利润和亏损金额,但在这里我们还需要计算点值,检查自由资金的可用性,限制自由资金的百分比,以便一次性承担风险,我是否错过了其他东西?还是有其他方法?是否有缩水,是否也应该计算?

5.1) 我如何计算点值?

5.2) 我如何检查我是否有可用的资金?

我问这些问题,是因为我自己很难理解,因为有很多具体的问题,比如会计。