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

 
Galim_V:

任务是找到具有最小闭合度的柱子

for(int x=0; x<=xBars -1; x++)

{

反++。

// 打印(Close[x],",",counter)。

int h = ArrayMinimum(Close[x])。

if(counter > 20) break;

}

编译员对Close说脏话

收盘价 写在一个单独的数组中,然后在ArrauMinimum小鸡外面写上
 
Alekseu Fedotov:
收盘价 写在一个单独的数组中,然后在ArrauMinimum小鸡外面写上
谢谢你!
 
Galim_V:

我们的任务是找到收盘价最低的条形图。

iHighest 和iLowest功能(现在也在MT5中)。

 
Taras Slobodyanik:

有iHighest和iLowest功能(现在也在MT5中)。

谢谢你!
 
Galim_V:

任务是找到具有最小闭合度的柱子

for(int x=0; x<=xBars -1; x++)

{

反++。

// 打印(Close[x],",",counter)。

int h = ArrayMinimum(Close[x])。

if(counter > 20) break;

}

编译员对Close发誓说

在MQL4中搜索最低/最高价格 的任务是由一行解决的。

double fMinClose = iClose(NULL, 0, iLowest(NULL, 0, MODE_CLOSE, <сколько баров>, <начинать с бара>));
 
Taras Slobodyanik:

你可以,但它不会完全是一个计时器。

谢谢你。

如何计算增量的手数?如果存款=1000,手数=0.1,存款变成2000手数=0.2。也就是说,如果押金是1500或1700,那么这批货就不会递增。

 
PolarSeaman:

谢谢你。

如何计算增量的手数?如果存款=1000,手数=0.1,存款变成2000手数=0.2。也就是说,如果押金是1500或1700,拍品不会增加。

double percentLot = 0.01,
       lot = NormalizeDouble(MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)*percentLot/10)/10, 1);

不知何故...

 
Konstantin Nikitin:

像这样...

不,不,存款1100,手数将是0.11,我需要手数不增加到2000。我如何设置设置步长=1000?

 
下午好,请你告诉我是否有可能将索引器的坐标添加到鼠标上,如果可以,请发电子邮件给我,ereminmikola@yandex.ru。
 

你好,程序员。你能不能给我一个提示,如何正确对待以下条件。

1.专家顾问打开2个市场订单(买入和卖出),在设置中指定相同的手数。- 订单的执行没有任何问题

下一个出现了问题,价格既可以向卖出方向移动,也可以向买入方向移动。我们如何安排代码,以便当n点过后,专家顾问将扫描这两笔交易在现场的盈利能力,并关闭n点后有负余额的订单?如果你有任何其他想法,请告知。

我给你的代码 - 草案,只有第一个点被执行,2个交易被打开,有TP和SL

2.当价格达到指定的点数时,我就用减去的余额关闭订单,并以相同的手数再开两个订单(买和卖)。

止损设置在第一笔订单的开盘价,也就是说,如果趋势逆转,所有3笔订单应同时关闭。


extern int    _ms = 1000;  
extern double _lots = 0.01;
extern double _TP = 80;
extern double _SL = 35;

int _mn;
double pt;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  { 
   pt = Point;
   if (Digits==3||Digits==5) {pt*=10;} else pt = Point;
   _mn = MagicNumberGenerator(_ms);
   Print("The magic number is ",_mn);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
    if (IsNewCandle())
    {
      if (TotalOpenOrders(_mn)==0)
      {
        EnterTrade(OP_BUY);
        EnterTrade(OP_SELL);
      }
    }   
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|   Открытие первых позиций                                        |
//+------------------------------------------------------------------+
void EnterTrade(int type)
{
   double price = 0; double sl = 0; double tp = 0; double lot = _lots;
   
   if      (type == OP_BUY)  price = Ask;
   else if (type == OP_SELL) price = Bid;
   
   int err = 0;
   int ticket = OrderSend(_Symbol, type, lot, price, 30, 0, 0, NULL, _mn, 0, clrGreen);
   if (ticket == -1)
   {
     err = GetLastError();
     Print("Could not place the order due to error ",err," ",ErrorDescription(err));
     if (err == ERR_TRADE_NOT_ALLOWED) Alert("You need to enable you autotrade button");
   }
   else 
   {
     if(!OrderSelect(ticket,SELECT_BY_TICKET))
     {
       err = GetLastError();
       Print("Could not select the order due to error ",err," ",ErrorDescription(err));
     }
     else 
     {
       if (OrderType()==OP_SELL)
       {
         sl = OrderOpenPrice()+(_SL*pt);
         if (_SL==0) sl = 0; 
         tp = OrderOpenPrice()-(_TP*pt);
       }  
       else if (OrderType()==OP_BUY)
       {
         sl = OrderOpenPrice()-(_SL*pt);
         if (_SL==0) sl = 0; 
         tp = OrderOpenPrice()+(_TP*pt);
       }
       if(!OrderModify(ticket, OrderOpenPrice(), sl, tp, 0, clrNONE))
       err = GetLastError();
       Print("Could not modify the order due to error ",err," ",ErrorDescription(err));
     }
   }
}