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

 
psyman:

Neverness,你为什么在这里写这个?

在水槽里另起炉灶,在那里派发大象,向你致敬。

好吧,我马上告诉了版主。

主持人先生,让我们在一个单独的主题中讨论交易理论。

到目前为止,主持人是反对的。

也许主持人并没有自己的 "交易理论"。

 
inter78:

你好!我也想问一下图表之间的切换问题。有28或30个图表开放。我深思熟虑地用捷径切换它们,如果它们符合条件,我就打开位置。我有10或20个。或5。这并不重要。重要的是,其他的事情碍于情面,没有关于开放职位的信息。我试图将ID送入全局变量。但它返回的数字完全不同。有人向我解释说,ID是大而无当的。我通过一个文件试了一下。它以TXT格式返回,并不转换为长文本。我在代码中手动输入了ID--看来是可以的。当我转移字段时,它打开了所需的图表。 我应该怎么做才正确?

double和long具有相同的长度--8字节。

为了在双倍数中保存长数(反之亦然),你可以使用 "联合"。


比如说。

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long id=ChartID();
   
   double X=LongToDouble(id);
   long   Y=DoubleToLong(X);
   
   Print("id=",id," X=",X," Y=",Y);
  }


//+------------------------------------------------------------------+
union eightbytes
   {
   double   dbl;
   long     lng;
   } VALUE;

double LongToDouble(long value)
   {
   VALUE.lng=value;
   return(VALUE.dbl);
   }

long DoubleToLong (double value)
   {
   VALUE.dbl=value;
   return(VALUE.lng);
   }
 
neverness:

好吧,我直接告诉了版主这件事。

主持人先生,让我们在一个单独的主题 中讨论交易理论

到目前为止,版主是反对的。

也许主持人并没有自己的 "交易理论"。

你必须去理论 小丑 的分部,在那里他们喜欢画一些你不懂的东西,也不知道为什么。

论坛上有很多类似的线程--至少要讨论一下!

От теории к практике
От теории к практике
  • 2017.12.01
  • www.mql5.com
Добрый вечер, уважаемые трейдеры! Решил было на какое-то время покинуть форум, и сразу как-то скучно стало:)))) А просто читать, увы - неинтересно...
 
Taras Slobodyanik:

Double和long具有相同的长度--8字节。

要将一个长字符串保存为一个双字符串(反之亦然),你可以使用 "联合"。


比如说。

对不起,塔拉斯,你能不能有一段代码,如何将ID发送到一个全局变量,并在不失真的情况下检索它?
 
inter78:
对不起,塔拉斯,你就不能有一点关于如何发送ID到全局变量 并提取它而不失真的代码吗?

所以一切都准备好了,只需要添加写入/读取

string GVname="gvName";

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   //создаем временную глобальную переменную
   if (!GlobalVariableCheck(GVname))
      GlobalVariableTemp(GVname);
   
   long  id=ChartID();
   
   //сохраняем long как double
   GV_Save(LongToDouble(id));
   
   //читаем double и переводим в long
   long  Y=DoubleToLong(GV_Read());
   
   Print("id=",id," Y=",Y);
  }

//+------------------------------------------------------------------+
union eightbytes
   {
   double   dbl;
   long     lng;
   } VALUE;

double LongToDouble(long value)
   {
   VALUE.lng=value;
   return(VALUE.dbl);
   }

long DoubleToLong (double value)
   {
   VALUE.dbl=value;
   return(VALUE.lng);
   }


//+------------------------------------------------------------------+
double GV_Read()
{
if (!GlobalVariableCheck(GVname))
   GlobalVariableTemp(GVname);
   
return(GlobalVariableGet(GVname));
}
//+------------------------------------------------------------------+
void GV_Save(double value)
{
GlobalVariableSet(GVname, value);
}
 
Taras Slobodyanik:

所以,它都已经设置好了,只需要添加写作/阅读

非常感谢您!我不知道以前是否有人尝试过做这样一个指标?我一直没能找到一个像我这样的人。我想很多人都会对它感兴趣。
 
Vitaly Muzichenko:

做OnInit()初始化

不,它不会在当前栏上发出信号。也许_时间变量 可以在指标加入图表后第一次计算完所有数据后重置

我怎么知道指标已经把所有东西都计算了一遍?
 
Ghabo:

我把指标在图表上,然后...警报,但信号是5条。在进一步的工作中,它发出了应有的提示音。

如何让它在启动时不再发出哔哔声?

if(М_А>0.0)  
{
if(time!=Time[0])
   {
    time=Time[0]; 
    AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
   }
 }

在函数AL()中,所有可能的警报。

什么是M_A?它包含什么,它从哪里获取数据?

你需要在检查时间的同时检查当前条形上的信号的有效性。而你只是检查M_A值。你从哪里得到它?

 
Artyom Trishkin:

什么是M_A?它包含什么,它的数据来自哪里?

你需要在当前条形图上检查信号的有效性和时间。而你只需检查M_A值。你从哪里得到它?

调用一个指标。

М_А =NormalizeDouble(iCustom(NULL,0,"Morning_All_Best",0,i),Digits);

我如何检查有效性?

 
Ghabo:

调用指标。

我如何检查其有效性?

1.你为什么要做规范化?在指标周期中工作的操作过于昂贵,这里不需要。

2."超过零 "是什么意思?这个自定义指标 会发出什么信号?在数据窗口(Ctrl+D)中,该指标的缓冲值显示的是什么?

原因: