任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 710

 
sponger:
你可以这样做:Km=MathMax(i/r,Point); //用除法,它就不会是零了!你可以这样做。
 
borilunad:
你可以这样做:Km=MathMax(i/r,Point); //用除法,它就不会是零了! 你可以这样做。

哇!!!头!非常感谢!经过极其繁琐的四个小时的工作,我终于找到了如何粘住这个功能,使测试者不骂人)出来,大约是这样的。

double a=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m1,0); //返回n个周期的最小价格的柱状指数

double b=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m1,0); //返回最大价格的n个周期的条形索引。

double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,a); //返回最低价格的条形价格值。

double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,b); //返回最高价格的柱子的价格。

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0); //返回最后一个柱子的收盘价

double xm1=(PriceCloseBar-MinLOWPeriod)/(MathMax((MaxHIGHPeriod-MinLOWPeriod)/100,Point)。

打印(xm1)。

而且还使配方更加光滑;)

谢谢你!

 
Жалко, кнопочки "Спасибо" нету(
 

sponger:

可惜没有 "谢谢你 "的按钮。

但还有一个神奇的按钮:SRC,当你使用它时,代码(或其片段)在提问者的帖子中变得更整洁、更易读,为提问者的业力加分,并增加那些会看这个代码并决定提供帮助的人的数量。

只是嘘声。.因此,在SRC 按钮的魔法的秘密知识中,一般来说,只有那些阅读网站上的手册的神圣文本 的人是致力于此的。例如,诸如这些

并在此成功地掌握了 解决进一步问题的秘密知识!
 
sponger:

哇!!!头!非常感谢!经过极其繁琐的四个小时的工作,我终于找到了如何粘住这个功能,使测试者不至于发誓)得出的结果大约如下。

double xm1=(PriceCloseBar-MinLOWPeriod)/(MathMax((MaxHIGHPeriod-MinLOWPeriod)/100,Point)。

打印(xm1)。

而且还使配方更加光滑;)

谢谢!

不客气!我百分之百地同意迪帕奇 的观点!好运!
 
void ChagingLots(int Magic,double percent,double lot)
{ 
  double t=2,             //коэффициент при делении,для того чтобы узнать цену закрытия
         PriceCl,         //цена закрытия части ордера
         takeprofit;      //нужна для вычислений
  int count = 0,order;
  for(int i=OrdersTotal()-1;i>=0;i--)    //пробегаемся по массиву ордеров
     {
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
          {
            if(OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
              {
                 if(OrderType()== OP_BUY)        //если ордер на покупку
                 {
                 takeprofit = OrderTakeProfit();   //вычисляем тейк ордера
                 PriceCl    = NormalizeDouble((takeprofit + OrderOpenPrice())/t,Digits);  //примерную цену закрытия
                 order = OrderTicket();    //получили ордер
                 if(Bid>PriceCl) //если текущая цена оказалась выше нашей цены ,то закрываем часть ордера
                 {OrderClose(order,NormalizeDouble(lot*percent/100,2),PriceCl,3);} 
                 }
                 if( OrderType()== OP_SELL )// для продажи аналогично
                 {
                   takeprofit = OrderTakeProfit();
                   PriceCl    = NormalizeDouble((takeprofit + OrderOpenPrice())/t,Digits);
                   order = OrderTicket();
                   if(Bid<PriceCl)
                   {OrderClose(order,NormalizeDouble(lot*percent/100,2),Bid,3);}
                 }
              }
          }
     }
     
}

大家好)

我试图写一个函数来关闭一部分位置,但当我在测试器中运行时,138号 文件弹出一个错误,我不明白是什么问题。 请帮助。

下面是一个专家顾问,这个功能应该在其中工作)

附加的文件:
zigzagx.mq4  16 kb
 
LBatters:

大家好)

我试图写一个函数来关闭一部分位置,但当我在测试器中运行时,138号文件弹出一个错误,我不明白是什么问题。 请帮助。

我有一个EA,这个功能应该在那里工作)。

你是否在Dock中查看了这个错误的含义!?从那里你会找到答案!

在什么价位买入收盘?那卖家呢?

 

大家好
我的问题更多的是与methaquotes开发人员有关,但尽管如此...


Сколько баров храниться история? Т.е. с каким максимальным по сдвигу баром можно работать?

代码。

Print(iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,1200));

Print(iClose(Symbol(),0,1200));

在测试这一转变时,终端在两种情况下输出0.0

但是

Print(iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,120));

Print(iClose(Symbol(),0,120)); 

在测试中一切正常

是否有可能以某种方式调整可用历史的大小?也许有人遇到过这样的问题,并且已经找到了解决方案?
提前感谢!

 

大家好。

我试图通过Kim更新一个简单的拖曳式EA,在关闭所有市场订单后删除挂单,但失败了(

我已添加了删除待处理订单的功能。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Удаление ордеров                                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  bool fd;
  int  err, i, it, k=OrdersTotal(), ot;

  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            for (it=1; it<=NumberOfTry; it++) {
              if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
              while (!IsTradeAllowed()) Sleep(5000);
              fd=OrderDelete(OrderTicket(), clDelete);
              if (fd) {
                if (UseSound) PlaySound(SoundSuccess); break;
              } else {
                err=GetLastError();
                if (UseSound) PlaySound(SoundError);
                Print("Error(",err,") delete order ",GetNameOP(ot),": ",ErrorDescription(err),", try ",it);
                Sleep(1000*5);
              }
            }
          }
        }
      }
    }
  }
}

我还面临另一个问题,我应该无法解决,因为我不太擅长编码。

我想我应该写一个条件,比如说。

这只是另一个EA的一个例子。

   if(AccountProfit()<-TargetLoss || AccountProfit()>TargetProfit) 
     {
      ClosePosFirstProfit();
      if(DeleteOrders) DeleteOrders();
     }


请帮助我。

附加的文件:
tral.mq4  19 kb
 
各位MQL-4行家,MQ4代码如何卸载并再次加载一个指标?