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

 
Alexey G. Smolyakov:
MQL4\Indicators\Used文件夹的完整路径。似乎没有办法离开这个文件夹。但这是一个反常现象--其他专家顾问系统在类似的文件夹中使用其指标,没有任何问题。但这个指标的问题是什么--我不明白。我翻阅了它的代码,但我没有足够的知识和经验来理解它。我怀疑它只计算最后一个小节或类似的东西。

那么一切都会好起来的

在终端按Ctrl+D - 打开数据窗口,在图表上 抛出指标,在数据窗口中你会看到指标缓冲区和它们在每个条形上的值,你可以通过iCustom()得到同样的数字。

有些指标在某些条上有EMPTY_VALUE--你会在数据窗口中看到一个空单元(不能保证指标作者没有设置0.0而不是EMPTY_VALUE--你需要检查它)。

然后当调用iCustom()时,必须将得到的值与EMPTY_VALUE进行比较。在kodobase或ZigZag EA中搜索,或在ZigZag上传至文件中搜索--在那里你会找到一个现成的例子,说明如何处理空的EMPTY_VALUE指标值。

 
Igor Makanu:

那么一切都会好起来的

在终端按Ctrl+D - 数据窗口打开,在图表上 抛出指标,你会在数据窗口中看到指标缓冲区和它们在每个条形上的值,你可以通过iCustom()得到同样的数字。

有些指标在某些条上有EMPTY_VALUE--你会在数据窗口中看到一个空单元(不能保证指标作者没有设置0.0而不是EMPTY_VALUE--你需要检查它)。

然后当调用iCustom()时,必须将得到的值与EMPTY_VALUE进行比较。在kodobase或ZigZag上的专家顾问中搜索,或在ZigZag上传至文件中搜索 - 在那里你会看到一个现成的例子,说明如何处理EMPTY_VALUE指标的空值。

谢谢你,检查EMPTY_VALUE的值有帮助。
 
下午好。如何制作一个功能,显示设置中的内容(只有长线/只有短线/长线和短线)。试过这个,但不起作用
string LSset()
{
string LS;
if (SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE) == SYMBOL_TRADE_MODE_LONGONLY) LS="ONLY LONG";
if (SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE) == SYMBOL_TRADE_MODE_SHORTONLY) LS="ONLY SHORT";
if (SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE) != SYMBOL_TRADE_MODE_SHORTONLY && 
   SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE) != SYMBOL_TRADE_MODE_LONGONLY) LS="LONG & SHORT";
return(LS);
}
附加的文件:
 
Lomonosov1991:
下午好。如何制作一个功能,显示设置中的内容(只有长线/只有短线/长线和短线)。试过这个,但不起作用

它不应该这样工作。写出这样的函数是可能的,但对初学者来说很难。

 
fxsaber:

它不应该这样工作。写出这样的函数是可能的,但对初学者来说很难。

搜索规则,几年前,开发人员承诺从专家那里获得这些设置,但他们从未这样做。

解决方案https://www.mql5.com/ru/forum/121619#comment_3208150

dll解决方案,不知道你为什么需要它https://www.mql5.com/ru/forum/231434/page2#comment_6773340

ZS:没有检查过,但搜索一下主题,似乎应用图表模板时不保存这些设置的问题仍然存在。

LongOnly, ShortOnly or Long&Short?
LongOnly, ShortOnly or Long&Short?
  • 2009.11.03
  • www.mql5.com
Не подсажет ли кто нибудь как внутри советника оределить в каком режиме он запущен LongOnly, ShortOnly or Long&Short? Заранее спасибо...
 
extern int punkt=100;
extern int Ordersss=3;
extern double xxx=1.2;

int PunktsX()
{
   int P=punkt;                             
   int i;
   for(i=Ordersss; i<NumberOfPositions(); i++)
   P*=xxx;
   return(P);
}

我在平均顾问上做了一个功能。如果超过3个订单被打开,每个后续的订单将被进一步打开。

我无法纠正这个警告 由于类型转换可能导致数据丢失)。

请告知该怎么做)

 
Lomonosov1991:

我在平均顾问上做了一个功能。如果超过3个订单被打开,每个后续的订单将被进一步打开。

我无法纠正这个警告 由于类型转换可能导致数据丢失)。

请告知该怎么做)

P=(int)(P*xxx);

为了获得更准确的计算,可能最好的办法是

extern int punkt=100;
extern int Ordersss=3;
extern double xxx=1.2;

int PunktsX()
{
   double P=punkt;                             
   int i;
   for(i=Ordersss; i<NumberOfPositions(); i++)
   P*=xxx;
   return (int) P;
}
 
Konstantin Nikitin:

为了更准确地计算,可能最好这样做

谢谢你)我不知道你可以用退货来做这个。)

 
Igor Makanu:

搜索规则,几年前,开发人员承诺让这些设置可以从专家那里获得,但他们从未这样做。

解决方案https://www.mql5.com/ru/forum/121619#comment_3208150

dll解决方案,不知道为什么需要它https://www.mql5.com/ru/forum/231434/page2#comment_6773340

ZS: 还没有检查,但通过搜索主题,似乎应用图表模板时不保存这些设置的问题仍然存在。

谢谢,我会试一试的)

 
Lomonosov1991:

我将尝试一下)

关于交易、自动交易系统和策略测试的论坛

图书馆:专家

fxsaber, 2019.06.04 16:40

// MT4-советник показывает, в каком режиме Long/Short был запущен.

#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

int GetLongShortFlag( const int Chart_ID = 0 )
{
  MqlParam Params[];
  string Names[];
  
  const int Res = EXPERT::Parameters(Chart_ID, Params, Names);
  
  return(((Res & 3) << 1) + (Res & 1));
}

string LongShortToString( const int Chart_ID = 0 )
{
  const int Flag = GetLongShortFlag(Chart_ID);
  string Str = NULL;
  
  if ((bool)(Flag & SYMBOL_TRADE_MODE_LONGONLY) && (bool)(Flag & SYMBOL_TRADE_MODE_SHORTONLY))
    Str = "Long & Short";
  else if ((bool)(Flag & SYMBOL_TRADE_MODE_LONGONLY))
    Str = "Only Long";
  else if ((bool)(Flag & SYMBOL_TRADE_MODE_SHORTONLY))
    Str = "Only Short";
    
  return(Str);
}

int OnInit()
{
  Alert(LongShortToString());
  
  return(INIT_FAILED);
}
原因: