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

 
Порт-моне тв:

谁能帮帮我?

为了不纠结于数字名称,你可以找到有最新积分日期的数字。然后,当这个数字被发现时,问题就在你身上:应该追踪什么事件?横向、纵向、自上而下、自下而上的交集。

要关注的事件是OnChartEvent

 

下午好!

我曾经可以在代码中设置一个限制,以便在显示器上显示指标值。但有了这个指标,什么都不灵了。也许你能帮助我在代码中加入一个限制?求你了!

谢谢你!

附加的文件:
Tipu_MACD.mq4  18 kb
 

你好。你能告诉我如何计算投标价格吗?

我如何计算一个买入价,即几个买入头寸的总利润为零的货币对,其中基础(第一)货币是美元,而点值不是恒定的,取决于价格?

对于以美元为报价(第二)货币且点值为常数的货币对,我得出了这个函数。

double Null_BUY(){ 
   double null=0; double summ_count=0; double lots_count=0; double position_count=0;
   for (int i=OrdersTotal()-1; i>=0; i--){
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
        if (OrderSymbol() == Symbol() ){
            if(OrderType()==OP_BUY ){
               position_count=Bid-((OrderProfit()+OrderSwap()+OrderCommission()) / OrderLots()*MarketInfo(Symbol(), MODE_TICKVALUE))*Point; 
               summ_count+=position_count*OrderLots();
               lots_count+=OrderLots();
            }
         }
      }
   }
   if(lots_count!=0) null=NormalizeDouble(summ_count/lots_count, Digits);
   return(null);
}
 
Forallf:

你能给我一个提示吗?我在图上画了一条线段。我需要知道该段的开始和结束价格。能否做到这一点?

我找到了一个例子。我是这样做的。

//+------------------------------------------------------------------+
//|                                                        линия.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {  
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   //Проверим что есть трендовая линия и она в единственном экземпляре:
   if(ObjectsTotal(OBJ_TREND)!=1)
   {Comment("Нарисуйте 1 трендовую линию!");}

   //Получим ИМЯ трендовой линии:
   for(int i=0;i<ObjectsTotal();i++)
     {
      string name=ObjectName(i);
      if(ObjectType(name)==OBJ_TREND)
        {
         datetime t1=ObjectGet(name,OBJPROP_TIME1);
         datetime t2=ObjectGet(name,OBJPROP_TIME2);
         double p1=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE1),Digits);
         double p2=NormalizeDouble(ObjectGet(name,OBJPROP_PRICE2),Digits);
         Comment(p1,"   ",p2);
        }
     }
  }
//+------------------------------------------------------------------+

请帮助我再做一个段,与第一个段的中间水平。我将改变第一段的长度,所以第二段的位置也应该改变。从PRICE2中抽出10支蜡烛在前面。

附加的文件:
EURUSDM12.png  25 kb
 
Forallf:

找到了一个例子。像这样做了。

请帮助我做另一个段,使之与第一段的中间水平。我将改变第一段的长度,所以第二段的位置也应相应改变。从PRICE2中抽出10支蜡烛在前面。

像这样。


369
369
  • 2021.01.07
  • www.youtube.com
лин
 
Iurii Tokman:

你去那里 -


对。
 
Forallf:
对。

这辆自行车是终端的标准特征
,称为斐波那契线

 
Iurii Tokman:

这辆自行车是终端的标准特征
,称为斐波那契线

中间那张是给我做的例子。将有一个不同的、经过计算的水平。
 
Forallf:
中间的是为我做的一个例子。将会有另一个经过计算的水平。

你可以通过了解坐标找到直线上的任何一点。在你的案例中,我们知道价格以及该段的开始和结束日期。我们也可以找到中间的价格=(开始价格+结束价格)/2。或者你使用的任何其他公式。

现在我们可以用第一个函数来求出线段上某一点的时间。

//находит дату точки (координату X) на прямой, на заданную цену (координата Y)
datetime GetPointTimeOnStraight(datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, double ePrice3, string eSymbol, int eTimeFrame)
   {
   if(ePrice2-ePrice1==0) return(0.0);
   //индекс бара соответствующий заданному времени, возможно задавать будующее время
   int eIndex1=(eTime1>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime1)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime1);
   int eIndex2=(eTime2>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime2)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime2);
   int eIndex3=eIndex1+(int)((eIndex2-eIndex1)*(ePrice3-ePrice1)/(ePrice2-ePrice1));
   return(iTime(eSymbol,eTimeFrame,eIndex3));
   }

//находит цену точки (координату Y) на прямой, на заданное время (координата X)
double GetPointPriceOnStraight(datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, datetime eTime3, string eSymbol, int eTimeFrame)
   {
   //индекс бара соответствующий заданному времени, возможно задавать будующее время
   int eIndex1=(eTime1>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime1)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime1);
   int eIndex2=(eTime2>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime2)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime2);
   if(eIndex2-eIndex1==0) return(0.0);
   int eIndex3=(eTime3>iTime(eSymbol,eTimeFrame,0))?(int)((iTime(eSymbol,eTimeFrame,0)-eTime3)/PeriodSeconds(eTimeFrame)):iBarShift(eSymbol,eTimeFrame,eTime3);
   return(ePrice1+(ePrice2-ePrice1)*(eIndex3-eIndex1)/(eIndex2-eIndex1));
   }
 
Aleksei Stepanenko:

好吧,如果你没有任何意义,那我就得给你一个提示。

我想我明白了,谢谢你!!!。

原因: