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

 
Alexey Viktorov:

变量字符串x;不应该与字符串字符 "x "混淆。

我没有理解具体的任务。因此,没有具体的答案。

也许你最好考虑一下重载函数?

情况是这样的,我需要创建一个通用的function_xy,在这个函数中,主程序会理解字符串变量object_xy的名字会根据传递的参数(...,...,字符串x,字符串y)而变化。否则,在function_xy()中的进一步代码中,我将不得不手动拼出变量object_xy的名字。
比如说。

void function_xy(..., ..., string x="EURUSD", string y="GBPUSD")
{
...
string object_xy=...//то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD
...
}

否则,当在function_xy()中创建几个图形对象时,我将不得不手动分配图形函数的参数

void function_xy(..., ...,...)
{
...
string object_EURUSDGBPUSD=...//то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD
...
ObjectCreate(object_EURUSDGBPUSD,...,...)
ObjectSet(object_EURUSDGBPUSD,...,...)
ObjectSetText(object_EURUSDGBPUSD,...,...)
...
}

void function_wz(..., ...,...)
{
...
string object_USDCHFUSDJPY=...//то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD
...
ObjectCreate(object_USDCHFUSDJPY,...,...)
ObjectSet(object_USDCHFUSDJPY,...,...)
ObjectSetText(object_USDCHFUSDJPY,...,...)
...
}

有多达200个这样的功能,你能以某种方式减少和解决这个问题吗?
我希望我已经表达了我的想法。



 
Timur1988:

情况是这样的,我需要创建一个通用的function_xy,主程序理解字符串变量object_xy的名称会根据传递的参数(...,...,字符串x,字符串y)而改变。否则,在function_xy()中的进一步代码中,我将不得不手动拼出变量object_xy的名字。
比如说。

否则,当在function_xy()中创建几个图形对象时,我将不得不手动分配图形函数的参数

有多达200个这样的功能,你能以某种方式减少和解决这个问题吗?
我希望我已经表达了我的想法。

你需要做的就是写一段代码,根据X和Y形成对象名称,例如,像这样从数组中取:n=10*x+y。当x=0,y=0...9时,将选择前10个元素。 当x=1,y=0...9时,将选择后10个元素。

 
DOCTORGAD: 是否有一个代码用于打开一个带有错误检查的单一交易?确切地说,是真实的,不是为了测试...可以作为一个函数,只是一个死锁:(

检查错误有什么用--你必须对它们做出反应!!!。如何?Print("Error - ...") - 这只在调试时有效。即使这样也比Alert()好。你必须对一个错误做出反应,暂停=延迟。在某处有一篇关于它的文章。但在哪里呢?如果有人看到它--提醒我

 
Timur1988:

情况是,我需要创建一个通用函数function_xy,在这个函数中,主程序将理解字符串变量 object_xy 的名称根据传递的参数(...,...,字符串 x,字符串 y)而改变。否则,在function_xy()中的进一步代码中,我将不得不手动拼出变量object_xy的名字。
比如说。

否则,当在function_xy()中创建几个图形对象时,我将不得不手动分配图形函数的参数

有多达200个这样的功能,你能以某种方式减少和解决这个问题吗?
我希望我已经表达了我的想法。





//+------------------------------------------------------------------+
void OnStart()
  {

   function_xy();

  }
//+------------------------------------------------------------------+x1 x2 x3
void function_xy(string x="EURUSD",string y="GBPUSD")
  {
   string object_xy;
  string c = "object_EURUSDGBPUSD";
//Для начала,  склеим переданные в функцию строковые переменные 

   object_xy=StringConcatenate("object_",x,y);
   
   Alert("object_xy = ",object_xy);
   
// Cравниваем
   if(StringCompare(c,object_xy)==0)
     {
      Alert("       Ура получилось ))))))))");
      Alert("object_EURUSDGBPUSD == object_xy");
     }
//то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD 
  }
//+------------------------------------------------------------------+

如果我没有理解错的话。

它是这样的。

 
Ptichka12: 你好,一个小括号喝了我的血,我不能对它(它马上就给出一堆错误)。第一行的括号。

这是一个反编译吗?立即删除它!它在这里是被禁止的!!!。被禁止...

 
Ptichka12:

你好,一个小括号喝了我的血,我不能对它(它马上就给出一堆错误)。圆括号在第一行。


你因发布反编译的代码而被警告。
 
Artyom Trishkin:
你因为发布反编译的代码而被警告了。

对不起,我不会再这样做了......

 
Alexey Viktorov: 它必须完全重写。谁需要它?

谢谢)
为了避免重写,也许你可以将趋势线 叠加在那些>=100pts的段上。

你能告诉我如何设置趋势线点的坐标,以便从谷底到之字形的顶部绘制它吗-a。

 

你好!

两星期以来,我一直在编写一个脚本,该脚本将检查数组中的价格目前是否可用于此类订单....。

现在我在搜索阵列时陷入了僵局。由于某些原因,它没有给出预期的结果。


int start()
{
   while(!IsStopped())
    {    
      double prmas[5] = {11,22,33,44,99}; // Будем проверять каждую цену, есть ли ордер с такой ценой или нет
         for(int ordsel=0; ordsel<=4;ordsel++) {  // Цикл прохода по ценам в массиве
            for(int nmbr = 0; nmbr < OrdersTotal() ;nmbr++) {   // Проверяем каждую цену по всем ордерам
               int os = OrderSelect(nmbr, SELECT_BY_POS, MODE_TRADES); // Выбираем ордер по порядку цикла
               int maspos = ArrayBsearch(prmas,OrderOpenPrice(),5,0,MODE_ASCEND); //Ищем позицию цены в массиве по текущему проверяемому ордеру
               Alert ("Номер в цикле  ", nmbr, " Выбранный ордер  ", os, " Цена из массива ", prmas[maspos]); //Выводим скорбный результат
               Sleep(10000);  
      }
}
     if(!IsExpertEnabled()) break;
    }
return(nmbr);
}

它并没有发出错误的...

担保书。



 
Dimitry-1983:

你好!

两星期以来,我一直试图想出一个脚本,以检查数组中的价格是否现在....。

现在我被卡在了阵列搜索上。由于某些原因,它并没有给我们带来我们所期望的东西。


它是正确的。

ArrayBsearch

返回的值

返回第一个找到的元素的索引。如果没有找到所需的值,它将返回最接近的由值元素的索引,所需的值位于该元素之间。

您的订单价格(按下单时间排序)
第一个是11,00000
第二个22.00000
第三次 0.98020
第四次 0.98004
第五次 33,00000

1,2和5分别找到正确的,但对于2和3来说,最近的小值...



原因: