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

 

我将更详细地描述它好。

主要指标位于欧元-美元对。这个指标调用了 黄金、美元指数和欧元货币等其他货币对的指标。这个指标在1分钟的货币对上工作,有时美元指数没有报价,例如,欧元有15分钟的蜡烛图,但美元指数没有这样的蜡烛图,指数被冻结,没有勾股。然后,一段时间后,16分钟的蜡烛图出现在欧元上,16分钟的蜡烛图出现在美元指数上。问题是什么?如何同步计算指标,因此只有当所有被调用的符号上的条形图在时间上重合时才会被计算,????

我试过这种结构

if((iTime(NULL,0,i)==iTime("XAUUSD",0,i))&&(iTime(NULL,0,i)==iTime("EURJPY",0,i))){

它似乎很酷,但计算只针对当天进行,没有前几天的信号。也许有标准的解决方案来实现符号的同步化????。

 
nikelodeon:

我将更详细地描述它好。

主要指标位于欧元-美元对。这个指标调用了黄金、美元指数和欧元货币等其他货币对的指标。这个指标在1分钟的货币对上工作,有时美元指数没有报价,例如,欧元有15分钟的蜡烛图,但美元指数没有这样的蜡烛图,指数被冻结,没有勾股。然后,一段时间后,16分钟的蜡烛图出现在欧元上,16分钟的蜡烛图出现在美元指数上。问题是什么?如何同步计算指标,因此只有当所有被调用的符号上的条形图在时间上重合时才会被计算????。

我试过这种结构

它似乎很酷,但计算只针对当天进行,没有前几天的信号。也许有一个标准的解决方案来同步符号????。

试着在一个计时器的循环中SymbolInfoTick() 来获取符号的数据。而那里已经按照你的需要进行了同步。

问题是,在当前符号上,程序只在该符号的tick到达时才开始。因此,你将无法及时从其他符号中获得刻度。但在一个独立运行的定时器中,你将能够从其他符号中获得刻度。

如果你需要对不是你自己的符号上的嘀嗒声作出快速反应,可以将定时器设置为毫秒级。

 
artmedia70:
而你有一个非常模糊的问题,只有你能理解。

非常欢迎你的到来!!!。谢谢你!节日快乐!

再加2分,亲爱的。1)你可以从一个单独的窗口中删除指标?

2)增加一个功能,如果当前的ATR高于ATR(对于H期),那么在这个条形图上面的ATR,会以不同的颜色突出显示吗? 或者这个值只写在这个条形图上面?

 
kocunyc89:

向你致敬!!!"。谢谢你!节日快乐!

再加2分,亲爱的。1) 你能从一个单独的窗口中删除指标吗?

2)增加一个功能,如果当前ATR超过ATR(H期),那么ATR上面的条形图将以不同的颜色突出显示? 或者该值只写在这个条形图上面?

哦,亲爱的...在这里,自己编辑吧。

//+------------------------------------------------------------------+
//|                                                 iATRwithData.mq4 |
//|              Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot ATR
#property  indicator_label1  "ATR"
#property  indicator_type1   DRAW_LINE
#property  indicator_color1  clrDodgerBlue
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  1
//+------------------------------------------------------------------+
//| enums                                                          |
//+------------------------------------------------------------------+
enum enumYN
  {
   enYes=1, // Yes
   enNo=0,  // No
  };
//+------------------------------------------------------------------+
//| input parameters                                                 |
//+------------------------------------------------------------------+
input int      PeriodATR=14;           // ATRs calculation period
int periodATR=(PeriodATR<1)?1:PeriodATR;
sinput enumYN DrawGraphic=enYes;       // Drawing ATR data over the candles
sinput int StartDrawingBar=100;        // Max bar for drawing ATRs data
int startDrawingBar;
sinput int TextSize=5;                 // Text size
sinput color TextColor=clrDodgerBlue;  // Text color
//--- indicator buffers
double         BufferATR[];
string Prefix;
//+------------------------------------------------------------------+
//| Classes                                                          |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferATR);
   
   Prefix="iATRwd("+IntegerToString(periodATR)+")";
   IndicatorSetString(INDICATOR_SHORTNAME,Prefix);
   int bars=Bars(Symbol(),Period());
   startDrawingBar=(StartDrawingBar<1)?1:(StartDrawingBar>bars)?bars:StartDrawingBar;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- delete graphics
   ObjectsDeleteAll(0,Prefix,0);
//---
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(rates_total<periodATR) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1) limit=rates_total-periodATR-1;
   //---
   for(int i=limit; i>=0; i--) {
      BufferATR[i]=iATR(Symbol(),Period(),periodATR,i);
      if(DrawGraphic && i<startDrawingBar) {
         string tm_txt=TimeToString(time[i],TIME_DATE|TIME_MINUTES);
         string nm=Prefix+"_"+tm_txt;
         string text=IntegerToString(int(BufferATR[i]/Point()));
         string tooltip="ATRs period for candle on "+tm_txt+" is "+text;
         SetArrowText(0,nm,TextColor,text,0,ANCHOR_LOWER,time[i],high[i],"Arial",TextSize,tooltip);
         }
      }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Functions                                                        |
//+------------------------------------------------------------------+
void SetArrowText(long chart_id, string name, color text_color, string text, int sub_window, 
                  long text_anchor, long text_time1, double text_price1, string font="Arial", long font_size=5, 
                  string tooltip="\n", bool selection=false, bool hidden=true) {
   
   if(ObjectFind(chart_id,name)<0) ObjectCreate(chart_id,name,OBJ_TEXT,sub_window,text_time1,text_price1);
   ObjectSetInteger(chart_id,name,OBJPROP_ANCHOR,text_anchor);
   ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,font_size);
   ObjectSetString(chart_id,name,OBJPROP_FONT,font);
   ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
   ObjectSetInteger(chart_id,name,OBJPROP_COLOR,text_color);
   ObjectSetInteger(chart_id,name,OBJPROP_FONTSIZE,font_size);
   ObjectSetInteger(chart_id,name,OBJPROP_TIME1,text_time1);
   ObjectSetDouble(chart_id,name,OBJPROP_PRICE1,text_price1);
   ObjectSetInteger(chart_id,name,OBJPROP_SELECTED,selection);
   ObjectSetInteger(chart_id,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_id,name,OBJPROP_HIDDEN,hidden);
   ObjectSetString(chart_id,name,OBJPROP_TOOLTIP,tooltip);
}
//+------------------------------------------------------------------+

还是你想让我也为你做一切?

 
artmedia70:

哦,亲爱的...在这里,你自己做。

还是我也应该为你做?

非常感谢您!好样的!"。
 
kocunyc89:
非常感谢你!善良的人
不客气。
 
晚上好,是否可以让指标在两个窗口显示缓冲数据,一部分在主图上,一部分在子图上?如果是这样,请告知如何...
 
artmedia70:

不客气。如果这不是什么秘密,为什么你需要一个时间戳,显示你的程序最后一次运行的时间--其中的时间不会改变。

只是闲来无事的好奇心...

这是为离线勾股图准备的。



 
你好。

哪些功能可以用来在两个MT4终端之间发送变量?如果可能的话,请添加一个文档的链接。
 
abeiks 在两个MT4终端之间发送变量有哪些功能?

int Flags=FILE_WRITE+FILE_TXT+FILE_COMMON。

int Info = FileOpen(fName,Flags);

FileWrite(Info,What's Up); 在另一个终端,读取。文件打开时的光标和F1 - 获得帮助