[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 231

 

我正在正确地将其复制到指标文件夹中7

附加的文件:
 
hoz:

有以下情况。

我已经展示了一段存在误解的代码。所有的变量都被宣布为全局变量。在IsObjectFound() 函数中,我得到了该对象的第一个和第二个价格点的值,名称,以及该对象在当前条上的价格值。如果找到了对象,它应该以真 模式退出函数 否则以假 模式退出


该函数继续执行启动函数。这是什么?

如果出了问题,千万不要贪图调试输出,而试图检查出更多的错误。一个工作脚本的例子。

//+------------------------------------------------------------------+
//|                                             Test ObjectFound.mq4 |
//|                                         Copyright © 2013, ir0407 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2013, ir0407"
#property link      ""

#include <stderror.mqh>
#include <stdlib.mqh>

string objName;
int isObj;
double objPrice1, objPrice2, objPriceCurr; 

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
{
   if (!IsObjectFound())
   {
      Print("В окне отсуствуют объекты, поиск продолжается...");
      return (0);
   }
  return(0);
}
//+------------------------------------------------------------------+

//+-------------------------------------------------------------------------------------+
//| Блок поиска своих объектов                                                          |
//+-------------------------------------------------------------------------------------+
bool IsObjectFound(int ObjType = EMPTY)
{
   int Error;
   //Eсли объектов на графике нет, то и делать нам тут больше нечего
   if(ObjectsTotal(ObjType) == 0)
   {
      Print("Объекты на графике отсутствуют.");
      return(False);
   }
   for (int obj = 0; obj < ObjectsTotal(ObjType); obj++)
   {
      objName = ObjectName(obj);
      //Нужно убедиться что в переменной objName лежит имя объекта,
      //а не какая нибудь чепуха.
      Error = GetLastError();
      if(Error == ERR_NO_ERROR)
      {
        isObj = ObjectFind(objName);
        if(isObj == -1)
        {
          Print("Объект с именем \"", objName, "\" не найден.");
          Error = GetLastError();
          Print("Функция ObjectFind() вернула код ошибки #", Error);
          return(false);
        }
        objPrice1 = ObjectGet(objName, OBJPROP_PRICE1);
        objPrice2 = ObjectGet(objName, OBJPROP_PRICE2);
        objPriceCurr = ObjectGetValueByShift(objName,0);
        Print("objPrice1 = ", objPrice1);
        Print("objPrice2 = ", objPrice2);
        Print("objPriceCurr = ", objPriceCurr);
      }
      else
      {
        Print("Функция ObjectName() вернула код ошибки #", Error);
        return(false);
      }
   }
   return (True); // Объект найден!
}
 
ir0407:

如果工作出错,千万不要贪图调试输出,尝试检查更多的错误。一个工作脚本的例子。



伊戈尔,感谢你的宝贵意见。你是对的!我以前没有用物体工作过,现在我已经掌握了它。我一直在考虑从哪方面着手。
 
GaNDarM:


你误解了。我不想在终端机上改变我的余额值,尽管这的确是件好事:)

我需要根据之前的交易结果(盈利或亏损)来改变我的手数大小。而如何规定存款的变化(发生的损失或获得的利润)我不知道。

交易结果可以通过2种方式控制(也许还有其他方式,我喜欢):
1)记住之前的存款值,并与当前的存款值进行比较(AccountBalance())。但这种方法需要涉及到终端的全局变量,因此在EA或终端重启时,变量不会丢失其值(或将其写入文件)。

2)而且你可以从历史记录中查看以前的交易结果(在Kim的主题中寻找该功能)。

 
koSTRIKin:

我正在正确地复制它到指标文件夹7

正确的文件夹是专家/指标。以防万一,写完后检查其在文件夹中的存在。

如果它存在,在编辑器中编译任何代码后,它肯定会出现。

 
      objName = ObjectName(obj);
      //Нужно убедиться что в переменной objName лежит имя объекта,
      //а не какая нибудь чепуха.
      Error = GetLastError();
      if(Error == ERR_NO_ERROR)
如果函数具体地返回对象的名称,为什么会有废话呢?
 

伽达姆

(функцию поищите в ветке у Кима). 

分公司
 
TarasBY:

有两种方法来控制交易结果(可能还有其他方法,这些方法适合我)。
1) 记忆以前的存款值,并与当前的存款值进行比较(AccountBalance())。 但这个方法必须涉及到终端的全局变量,以便在重启EA或终端(或将其写入文件)时变量不会丢失其值。

2)而且你可以从历史记录中查看以前的交易结果(在Kim的主题中寻找该功能)。


谢谢你,我将搜索
 

为什么在INIT()中变量被分配为零?什么是错误或如何将买入和卖出价格分配给start()函数之外的变量?我试着把RefreshRates();放在它们前面,但没有变化 :(

int init()
  {
   .....
   //---
   UpL  =  Ask;     // Пик вверх изначально равен цене покупки
   DownL  =  Bid;     // Пик вниз изначально равен цене продажи
   
   return(0);
  }
//---end init--------------------------------------------------------
 

问候!

解释一下如何以编程方式获得从上周低点到本周初的条数值