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

 
(NormalizeDouble(AccountFreeMargin()/SymbolInfoDouble(Symbol(),SYMBOL_TRADE_CONTRACT_SIZE),2)-Lots*(CountTrades()+1));

编了一个公式来计算这批货,你能告诉我错误可能出在哪里吗?由于一些不正确的地方,该命令没有打开。

该公式对100美元及以上的存款,1-100及以上的杠杆仍然有效。如果没有杠杆的存款为1000美元,那么公式就不起作用了,因为我们的FreeMargin/Contract=0.01,我们不能从这个值中扣除,因为我们将不符合交易条件。


另一方面,如果FR&Margin已经考虑到了未结头寸,我们为什么要扣除它?那么它将看起来像这样

lot=NormalizeDouble(AccountFreeMargin()/SymbolInfoDouble(Symbol(),SYMBOL_TRADE_CONTRACT_SIZE),2)

我将去测试一下。

Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением...
 
geratdc: 我编了一个公式来计算这个地段,你能告诉我哪里可能有错误吗?由于一些不正确的地方,该订单没有打开。
      Лот=NormalizeDouble(0.65*AccountBalance()*AccountLeverage()/          // Использую такую формулу
                             MarketInfo(_Symbol, MODE_LOTSIZE),2);
 
STARIJ:

问候))。0.65是什么? 它是从哪里来的?

我正在考虑杠杆问题,但我得出的结论是,理论上,平衡已经与杠杆设定好了。还是我错了?


0.65是为35%的滑移率做准备还是什么?顺便说一句,这是一个好主意,因为如果你以这样的方式设置手数,你将失去一个位置,这将是一个终点!这是个好主意。

我喜欢它!在我去掉亏损后,这个公式起作用了,真酷))总之,手数是0.02,然后当三个仓位进入平仓时,紧急手数被计算为0.1,也就是5倍!这就是我的想法。然而,我的功能对紧急订单开启时的进一步损失增加很敏感,所以应该不会有任何问题。

同事,谢谢你的宝贵意见!我将去测试一下。


我还决定检查交易条件。你喜欢这个代码吗?


// Проверка Баланса
   if(cn==0 && TradeCheck==true && AccountBalance()/SymbolInfoDouble(Symbol(),SYMBOL_TRADE_CONTRACT_SIZE)<SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN))
     {
      Print("Баланс счёта не обеспечивает торговые требования");
      SendMail("EA BJH","Баланс счёта не обеспечивает торговые требования");
      ExpertRemove();  // Снять советник с графика
     }
// Проверка Lots
   else if(cn==0 && TradeCheck==true && AccountBalance()/Lots<SymbolInfoDouble(Symbol(),SYMBOL_TRADE_CONTRACT_SIZE))
     {
      Print("Lots не обеспечивает торговые требования");
      SendMail("EA BJH","Lots не обеспечивает торговые требования");
      ExpertRemove();  // Снять советник с графика
     }
附加的文件:
1.gif  10 kb
 
geratdc: 同事,谢谢你的宝贵意见!我会去测试的!"。

如果你把它翻过来--买入而不是卖出,卖出而不是买入--会更好。

试试吧,同事!!!。

这个机器人不是在陈述一个事实,而是要发出一个建议:老板,加钱。我已经浪费了那些...

 
STARIJ:

如果我们把它倒过来--买入而不是卖出,卖出而不是买入--就会好一些

试试吧,同事!!!。

机器人,而不是陈述一个事实,应该给出建议:老板,加钱。你已经浪费了他们...


没关系,有专门留下的设置来触发紧急订单--我得看看什么地段会被选中。

lot=NormalizeDouble(AccountFreeMargin()/SymbolInfoDouble(Symbol(),SYMBOL_TRADE_CONTRACT_SIZE),2);

我暂时留下了这个人。我试过用余额,我相信它在自由保证金方面会更准确,但结果是一样的。让我们稍后看看测试结果。

 
geratdc: 没关系的。

互联网恢复了!我可以写到电子邮件吗?

 
STARIJ:

应该是这样的吗?级别为-0.75和+0.75。

使用一个变量比较容易。首先是0,然后是+1 -1 +1 -1


是的,像这样。我应该如何在专家顾问中写出,当它启动时,如果我们处于两级之间的差距,它将采用我们已经反弹的最后一级的值?

 
AlGuru: 但是,我如何在EA中写下它,以便当它启动时,如果我们处于两级之间的差距,它将采用我们反弹的最后一级的值?

你说的 "击退 "是什么意思?它有没有攻击我们?什么时候打的--发射前?如果我们刚刚发射,我们怎么能反击?在发送前阅读--这一切是否有意义?

 
STARIJ:

你说的反击是什么意思?它有没有攻击我们?我们在发射前被打退了吗?如果我们只是发射,我们怎么能反击?在发送之前阅读它--它是否有意义?


好吧,不是反弹,而是从线上产生了一个反弹。只要把EA放在另一台机器/终端上,或者在电脑关闭的情况下,重新启动终端,它(EA)就会立即开始工作,计算出价格最后在什么水平,并设置正确的变量值,而不是等待价格达到预期水平。我希望我已经描述清楚了。

 
AlGuru 好吧,不是反弹,而是从线上产生了一个反弹。只要把EA放在另一台机器/终端上,或者在电脑关闭的情况下,重新启动终端,它(EA)就会立即开始工作,计算出价格最后在什么水平,并设置正确的变量值,而不是等待价格达到预期水平。我希望我已经描述清楚了。

它与另一台机器或终端有什么关系?或关机-重启。你是指打开电脑还是重新启动专家顾问?为什么必须是反弹,但如果离开水平线并交叉回来?而如果它在等待--它只是在开启时跳过一次机会。一开始你可以把它丢掉,等你做完了再回来看它。然后,这些线条从何而来,何时出现,谁把它们放进去,或者EA如何计算它们。如果把它们放在另一台电脑上或在电脑关机前,价格就会走得很远。如果这些水平是由专家顾问自己计算的,那就是另一回事了。现在看:价格已经从上层反弹,在两层之间徘徊了一个小时。然后我们打开了电脑,激活了专家顾问。很明显,我们必须为这个反弹指定行动时间。一个小时过去了,反弹被遗忘。你看,有很多的问题!而你是清楚的。你很清楚,你知道这个问题的本质。但从外面看,它是黑暗的。编程的艺术是提出大量问题并找到答案的能力。看看这个剧本--也许这里有一个理性的观点

//+-------------------------------------------------------+
//| Проверка                                     PROBA.mq4|
//+-------------------------------------------------------+
#property strict

void OnStart()
{
  bool ДостигнутПервыйУровень=false,
       ДостигнутВторойУровень=false;
  int Переменная1=0, Переменная2=0;
  double Уровень;
  int x;

  Alert("----- Снизу вверх --------");
  for(x=13; x<27; x++)
  {
    Уровень=round(sin(x)*10)/10;

    if(Уровень>0.75)
    {
      Переменная1=1;
      Переменная2=0;
    }

    if(Уровень<-0.75)
    {
      Переменная1=0;
      Переменная2=1;
    }

    Alert("  ", x, "       ", Уровень, "        ", Переменная1, "        ", Переменная2);
  }
  Alert("Номер  Уров  Пер1  Пер2");
}