[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 207

 
DemanRap: 因此,从一个点到下一个点的射线只延续到图形的右侧,但我怎样才能使它延续到左侧?
你不能向左画一条射线吗?还是你想画一条直线 而不是射线
 
我希望我的机器人能够跟踪这条射线在历史数据上的位置。 例如,我想检查它与其他分形的接近程度,而不仅仅是我最初建立它的两个分形。
 
是的。所以我的目标是要得到一条直线。
 
DemanRap: 是的。所以我的目标是要得到一条直线。

datetime time1 = …;
double price1 = …;

datetime time2 = …;
double price2 = …;

datetime timeDifference =  time2 – time1;  // добавить
double priceDifference = price2 – price1;  // добавить

ObjectCreate("trend_line1", OBJ_TREND, 0, time1, price1, time2, price2);
ObjectCreate("trend_line2", OBJ_TREND, 0, time1, price1, time1 - timeDifference, price1 - priceDifference); // добавить

为了得到一条直线,请尝试添加突出显示的线条

 
非常感谢你,但事实证明这要简单得多。 我只是画了另一条射线,并在其中交换了时间1、价格1和时间2的价格2。但我花了一整天时间才弄明白)))。
 
Aleksander:

那他们呢?- 在终端层面上的全球?

他们在变量文件中存储了一些时间:-)访问的日期,名称和类型为双倍的值。


关于GV变量的问题如下...在S.K.关于MQL4的书中,在 "GlobalVariables "一章的 "GV-Variables的属性 "一节中写到。"一个GV变量只能是double类型的"。下面,在"函数GlobalVariableDel()"部分,有一个专家globalvar.mq4的例子,内容如下。

//--------------------------------------------------------------------
// globalvar.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int    Experts;                                 // Колич. экспертов
double Depo=10000.0,                            // Заданный депозит
       Persent=30,                              // Заданный процент     
       Money;                                   // Искомые средства
string Quantity="GV_Quantity";                  // Имя GV-переменной
//--------------------------------------------------------------------
int init()                                      // Спец. функция init
  {
   Experts=GlobalVariableGet(Quantity);         // Получим тек. знач.
   Experts=Experts+1;                           // Колич. экспертов
   GlobalVariableSet(Quantity, Experts);        // Новое значение
   Money=Depo*Persent/100/Experts;              // Средства для эксп.
   Alert("Для эксперта в окне ", Symbol()," выделено ",Money);
   return;                                      // Выход из init()
  }
//--------------------------------------------------------------------
int start()                                     // Спец. функция start
  {
   int New_Experts= GlobalVariableGet(Quantity);// Новое колич. эксп.
   if (Experts!=New_Experts)                    // Если изменилось
     {
      Experts=New_Experts;                      // Теперь текущ. такое
      Money=Depo*Persent/100/Experts;           // Новое знач. средств 
      Alert("Новое значение для эксперта ",Symbol(),": ",Money);
     }
   /*
   ...
   Здесь долен быть указан основной код эксперта,
   в котором используется значение переменной Money
   ...
   */
   return;                                      // Выход из start()
  }
//--------------------------------------------------------------------
int deinit()                                    // Спец. ф-ия deinit
  {
   if (Experts ==1)                             // Если эксперт один..
      GlobalVariableDel(Quantity);              //..удаляем GV-перемен
   else                                         // А иначе..
      GlobalVariableSet(Quantity, Experts-1);   //..уменьшаем на 1
   Alert("Эксперт выгружен из окна ",Symbol()); // Сообщ. о выгрузке
   return;                                      // Выход из deinit()
  }
//--------------------------------------------------------------------

问题:为什么在这个例子中,GV变量Expert和New_Expert是int类型的,尽管如前所述,这些变量应该是double类型?

 

下午好,你能告诉我EA可能出现了什么问题吗?

//+------------------------------------------------------------------+
//|                                                           iB.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

int MagicNumber = 1981;
//-----------------------------------------
extern double  Percent        = 0.8;
extern double  Lots           = 0.1;

bool Accept()
  {
   bool TradeOpen;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
        {
         if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) TradeOpen=false;
            else TradeOpen=True;
         if (OrderType() == OP_BUY)
            {if (OrderStopLoss() < (Low[1] * Point)) 
                  OrderModify(OrderTicket(),OrderOpenPrice(),(Low[1] * Point),0,0,Green);}
         if (OrderType() == OP_SELL) 
            {if (OrderStopLoss() > (High[1] * Point)) 
                  OrderModify(OrderTicket(),OrderOpenPrice(),(High[1] * Point),0,0,Red);}
        }
     }

   return(TradeOpen);
  }
//-------------------------------------------------------------------+
int start()
  {
//----
   if (Accept())
   {
      if(High[1]<High[2] && Low[1]>Low[2])   
         if ((High[1]-Low[1])/(High[2]-Low[2])<Percent)
       {
         OrderSend(Symbol(), OP_BUYSTOP, Lots, High[1], 3, Low[2], 0, "iB", MagicNumber, 0, Green);
         OrderSend(Symbol(), OP_SELLSTOP, Lots, Low[1], 3, High[2], 0, "iB", MagicNumber, 0, Red);
       }
   }
   return(0);
  }
//+------------------------------------------------------------------+
它的编译没有任何问题,没有错误,但它没有交易。我试着注释了不同的代码块,但我没有找到罪魁祸首。我没有注意到逻辑方面的任何问题。
 
我忘记了我的旧模拟账户的密码。我在哪里可以找到它?
 
MikeM:
我忘记了我的旧模拟账户的密码。我在哪里可以找到它?


你没有在任何地方,如果你没有注意自己保存它--我向一家经纪公司的支持团队检查过。

你必须检查你的电子邮件--当你开立一个账户时,他们会向你发送其所有参数,包括密码...

 
7777877:

下午好。我试着 "感受一下差异",这就是我的想法......也就是说,我们可以(在一定程度上)真正定义一个GV变量 如下。一个GV 变量是一个所谓的 "盒子",你可以把任何类型的变量储存在里面(除了字符串,因为GV变量 只有双倍 类型,而类型转换规则不允许类型减少,也就是说,你不能把一个字符串 一个双倍)。而这个变量,我们将插入一个GV变量,"将采取这个盒子的形式"(即它将从源类型被投到双倍 类型)...总之,这个怎么样?

提前感谢您的回答
你说对了。此外,当我们从盒子里取出一个值时,它是双倍类型的,但如果我们给出一个命令,将结果写入一个int类型的变量,编译器会自动采取所有必要的步骤,将这个值放入新的盒子里。