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

 
Multy:

我明白了。

顺便问一下,MQL4中是否有定时器,还是只有MQL5中才有?

可能只是这些功能。

https://www.mql5.com/ru/search?utm_campaign=MQL4.community

https://www.mql5.com/ru/search?utm_campaign=MQL4.community
 
kwadrad:

给阿克萨卡人的问题

测试仪突然停止了工作,没有刮出任何历史数据。

我应该用它来做什么?

供您参考:下载的报价档案为


它帮助我重新启动了终端,并事先删除了文件夹中下载的引言:C:\Program Files\MetaTrader - Alpari\history\Alpari-Micro2

然后重新下载报价档案

 
Noterday:
你能告诉我计算最大可能开仓量的函数吗?
让我给你一个棒子...:)
下面的函数有你需要的所有数据,可以计算出你需要的参数。我太懒了,我甚至不能敲击键盘......

你可以找到你需要的东西,然后自己修改它...代码本身是如此简单和易懂,以至于没有人会在重做它时遇到任何麻烦......

// ==========================================================================
// ------------ Функция рассчёта величины лота для открытия позиции ---------
// Если лот превышает возможный для открытия позы, то он корректируется 
// ==========================================================================

double CorrectLots(double lt, double divider=4.0)        // lt = проверяемый лот, divider = на сколько разделить
{                                                        //                                 свободные средства
   double ltcorr;
   double pnt =      MarketInfo(Symbol(),MODE_POINT);
   double mspr =     MarketInfo(Symbol(),MODE_SPREAD);
   double dig =      MarketInfo(Symbol(),MODE_DIGITS);
   double MaxLot =   MarketInfo(Symbol(),MODE_MAXLOT);
   double MinLot =   MarketInfo(Symbol(),MODE_MINLOT);
   double StpLot =   MarketInfo(Symbol(),MODE_LOTSTEP);
   double OneLot =   MarketInfo(Symbol(),MODE_MARGINREQUIRED);
   double TradeMrg = NormalizeDouble(AccountFreeMargin()/divider,dig);  // Свободные средства, разрешенные к торговле
   
   lt=MathAbs(lt);
   ltcorr=lt;                       // Зададим начальное значением ltcorr равным значению lt
   
   if (lt>=MaxLot) ltcorr=MaxLot;   // Проверим превышение допустимых ...
   if (lt<=MinLot) ltcorr=MinLot;   // ... значений лота
   
   double Money=lt*OneLot+mspr*pnt; // Вычисляем стоимость открываемой позы

   if (Money<TradeMrg)              // Если свободных средств больше, чем цена позиции - 
      {
         return(ltcorr);                                                         // ... возвращаем неизменённый лот
      }
   else if (Money>=TradeMrg)        // Если цена позиции равна или больше, чем есть свободных средств, то ...
      {
         ltcorr=MathAbs(MathFloor(TradeMrg/OneLot/StpLot)*StpLot);               // ... рассчитаем допустимый лот
         double MoneyCorr=ltcorr*OneLot+mspr*pnt;                      
         Print("Func CorrectLots: лот ",lt," скорректирован до ",ltcorr,
               " Стоимость позы до корректировки = ",Money,
               " Стоимость позы после корректировки = ",MoneyCorr
               ); 
         return(ltcorr);                                                         // ... и вернём его значение
      }
   Print("Func CorrectLots: лот вернули без изменений");
   return(ltcorr);                 // Возврат изначального лота в непредусмотренных случаях с сообщением
}

有一个问题...

为什么需要像希特勒在战争结束后的贸易...他招募孩子们加入希特勒青年团,可以说是一枪一个的浮士德子弹的肉。

没有响起任何铃声?????

IMHO,当然...

 
artmedia70:
让我给你一个棒子...:)下面的函数有所有的数据来计算你需要的参数。我太懒了,我甚至懒得敲击键盘......

你可以找到你需要的东西,然后自己修改它...代码本身是如此简单和易懂,以至于没有人会在重做它时遇到任何麻烦......

有一个问题...

为什么需要像希特勒在战争结束后的贸易...他招募孩子们加入希特勒青年团,可以说是一枪一个的浮士德子弹的肉。

没有响起任何铃声?????

IMHO,当然...


谢谢!

不打算用最大体积来 打开,只是需要根据Depot的大小来计算,以便进一步进行数学运算=))

 
Noterday:

谢谢你!

我不打算用最大容量开盘,我只需要根据Depo的大小来计算,以便进一步进行数学运算=))



用于购买。

正常化双倍数(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_BUY,lot),2)

用于出售。

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_SELL,lot),2)。

lot - 持有订单量的变量

计算结果应检查是否>0

https://www.mql5.com/ru/search

 
IgorM:


用于购买。

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_BUY,lot),2)。

用于出售。

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_SELL,lot),2)。

lot - 订单量的变量

https://www.mql5.com/ru/search

...好吧,伊戈尔,你很着急......:)

我还没来得及把手指放在键盘上,你就已经回信了......:)

 
谢谢大家!
 

你好!

你能推荐一个代码或一个分支,说明如何记住指标线 与价格的交叉点。 我在某处看到过,但找不到。我在什么地方看到过,但我找不到了。

我不知道我是否有兴趣,但我对这样的事情更感兴趣。

int start()

  { 

 double LineX = iCustom ("EURUSD", Period_H1, "Indicator",0,0);

 double lineY = iCustom ("EURUSD", Period_H1, "Indicator",1,0);

double priceA = Ask;

double priceB = Bid;

double intersectionX = (LineX == priceA) ;

double intersectionY = (LineY == priceB) ;

// а так же еще определить, какое пересечение последнее, а какое предпоследние 

// intersectionX = последнее пересечение и на оборот
// intersectionY = предпоследние пересечение и на оборот

// то есть я понимаю логику, а  вот связать в коде не могу.
 
//произошло intersectionX,   то intersectionFirst = intersectionX; intersectionSecond = intersectionY;

// произошло intersectionY, то intersectionFirst = intersectionY; intersectionSecond = intersectionX;


 }
 
belck:

你好!

你能推荐一个代码或一个分支,说明如何记住指标线与价格的交叉点。 我在某处看到过,但找不到。我在什么地方看到过,但我找不到了。

我想知道指标线是否已经越过价格,但我对这个更感兴趣。


任何交叉点最好被认为是价格(Ask/Bid)和指标线 之间的差异,即

如果(Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) > 0) Comment("价格高于指标"); else Comment("价格低于指标")。

如果你比较这些值的差异,你不需要将它们归一化来进行适当的比较

特别是对于你的问题--指标线与价格的交叉是指当Ask- -iCustom()的差值在之前的计算中低于零,然后变得更高,或者反之亦然。

你如何计算这个时刻是你自己的事--也许是通过前一个条形图,或每一个刻度,但这种组合。

double intersectionX = (LineX == priceA) ;

double intersectionY = (LineY == priceB) ;
你将被带入离散数学的迷宫,比你得到你想要的结果还要快--括号内的表达式将是0或1,这对应于假和真的数字表示。
 
IgorM:


任何交叉点都被认为是价格(Ask/Bid)和指标线之差的最佳选择,即

如果(Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) > 0) Comment("Price above indicator"); else Comment("Price below indicator")。

如果你比较这些值的差异,你不需要将它们归一化来进行适当的比较

特别是对于你的问题--指标线与价格的交叉是指当Ask- -iCustom()的差值在之前的计算中低于零,然后变得更高,或者反之亦然。

你如何计算这个时刻是你自己的事--可能是在前一个条形图上,也可能是每一个刻度线,但这种组合。

你将被带入离散数学的迷宫,比你得到你想要的结果还要快--括号内的表达式将是0或1,这对应于假和真的数字表示。

也就是说,如果我理解正确,我可以这样做。

bool intersectionX = FALSE,
     intersectionY = FALSE;
int start()

  { 
if  (Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) == 0)  {
intersectionX = TRUE;
intersectionY = FALSE;
}
if  (iCustom ("EURUSD", Period_H1, "Indicator",1,0)-Bid == 0) {
intersectionY = TRUE;
intersectionX = FALSE;
}
}
и я потом смогу intersectionY использовать только тогда когда оно TRUE, если FALSE, то такой код (intersectionY > Ask) не сработает, правильно я понимаю!?
原因: