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

 
打开[1] 关闭[1]
 

平衡600-1199手 0.1

平衡1200-1799手 0.2

平衡1800-2399手0.3等。

如何在EA中组织?谢谢你。

 
Maniac:

平衡600-1199手 0.1

平衡1200-1799手 0.2

平衡1800-2399手0.3等。

如何在EA中组织?谢谢你。

double Lot()
{
   double balance=AccountBalance();
   if (balance>600 && balance<1199) return(0.1);
   if (balance>1200 && balance<1799) return(0.2);
   if (balance>1800 && balance<2399) return(0.3);
return(MarketInfo(Symbol(), MODE_MINLOT));
}
 

call: ticket=OrderSend(Symbol(),OP_BUY,Lot(),Ask,3,Bid-25*Point,Ask+25*Point, "My order #",magic,0,CLR_NONE);
 
IgorM:

调用:ticket=OrderSend(Symbol(),OP_BUY,Lot(),Ask,3,Bid-25*Point,Ask+25*Point, "My order #",magic,0,CLR_NONE)。

同时,天平可能在云端,股权可能在大面积缩水。因此,地段的大小可能会显得比它能开的大,整个结构会过大......

在开放之前,最好是纠正该地段的真实可能性。

我为此做了一个函数。这是由维克多(Vinin)稍加纠正的--试试吧。

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

double CorrectLots(double lt)
{
   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()/4.0,dig);    // Свободные средства, разрешенные к торговле
   
   
   double Money=lt*OneLot+mspr*pnt;          // Вычисляем стоимость открываемой позы
   if (Money>=TradeMrg)                      // Если цена позиции равна или больше, чем есть свободных средств, то ...
      {
         lt=MathFloor(TradeMrg/OneLot/StpLot)*StpLot;  // ... рассчитаем допустимый лот
         Print("Func CorrectLots: полученный лот ",lt," скорректирован под допустимый ",lt); 
      }
      else 
         Print("Func CorrectLots: лот вернули без изменений");
   lt=MathMin(MaxLot, MathMax(MinLot, lt)); // Проверим превышение допустимых ...
   
   return(lt);                            
}

在行。

double TradeMrg = NormalizeDouble(AccountFreeMargin()/4.0,dig);    // Свободные средства, разрешенные к торговле

...自由保证金被除以4,只有四分之一的自由资金被认为有资格用于交易。

你可以去掉除以4,想放多少就放多少,甚至使用所有的保证金。

但该函数不会让你使用大于允许的批量大小。

 
artmedia70:
同时,余额宝可能处于云端,而股权则处于大额缩水状态。尊敬的是,地段的大小可能会显得比它可以打开的大,整个结构会过头......


为什么所有的事情都如此悲伤...

在我的函数中,最后一个return()将给出该工具的最小手数。 如果账户是美分账户,有很大的杠杆,那么当余额少于600时,专家顾问可能会多交易一些时间 :)

SZZY:问题是具体的,分支是给提问者提供方向。

 
IgorM:


为何如此悲伤...

在我的函数中,最后一个return()将给出该工具的最小手数。 如果账户是美分账户,有很大的杠杆,那么当余额少于600时,专家顾问可能会多交易一些时间 :)

思齐:问题很具体,支部要给提问者指明方向

好吧,慷慨地原谅我...:)不要生气,先生...:)

下面是我的版本中的一个功能。

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

double CorrectLots(double lt)
{
   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()/4.0,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);                                                       // Возврат изначального лота в непредусмотренных случаях с сообщением
}
 
IgorM:


为什么如此悲伤...

在我的函数中,最后一个return()将给出该工具的最小手数。 如果账户是美分账户,有很大的杠杆,那么当余额少于600时,专家顾问可能会多交易一些时间 :)

SZZY:问题很具体,支部要给提问者指明方向

你看,伊戈尔,那个人问了你一个问题,你给了他正确的答案,你就可以有点忘乎所以了。但在天平上跳舞是不可取的。正是因为余额可能在天上,而实际情况是--现在是拯救的时候。在这里,我们是,hr-r-r-r-r-r-ing...。......还有一大批在订单之上......。而他却倒下了...公平,也是如此,尽管它已经是
已经在那里...所以我告诉你,最好是依靠股权而不是余额...:)

 

日安!

能否请您告诉我这个新手,是否有可能在MQL4 中编写一个自定义指标,使其能够同时处理所有货币对?据我所知,指标图中最多有8条线,但我只需要一条线。也就是说,对于这一行,我能否同时获得所有货币对的数组或变量?

提前感谢您的回答。

 
Igor_Sev:

也就是说,我能否同时从所有货币对的数组或变量中获得这一行的处理数组?


从理论上讲,我没有看到任何障碍。另一个问题是你是否可以具体处理这个阵列。
 
Roger:

从理论上讲,我没有看到任何障碍。另一个问题是你是否能够处理这个阵列。


在编写工具时,我如何在程序代码中解决所有货币对?我看了一下写工具的例子,没有提到货币对,与特定的报价图相联系的货币对是默认处理的。

事情是这样的,现在Excel和VBA做这一切,我通过DDE服务器获得22个货币对的信息,使用VBA代码是指同时处理,但这并不方便,因为首先我必须等待2个小时的数据历史积累,以通过Excel图表进行分析。而且从一个程序跳到另一个程序并不方便,这就是为什么我考虑如何将其全部转移到MT4。