任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 465

 

你好。我前段时间开始研究MQL4,遇到了以下误解。

正如你在下面的例子中看到的,当条形图中的最高烛光达到1.3058时,订单应该关闭。该订单根据条件被关闭,但关闭价格 不是1.3058(可能高出1-3点)。 那么,我们如何正确关闭? 它是否收在 1.3058

if(High[0] >= 1.3058)

OrderClose( OrderTicket(), OrderLots(),  NormalizeDouble(Ask,Digits), 0, Red) ;
 
Mr.Dmitry:

你好。我最近开始学习MQL4,遇到了以下误解。

正如你在下面的例子中看到的,当条形图中的最高烛光达到1.3058时,订单应该关闭。该订单根据条件被关闭,但关闭价格不是1.3058(可能高出1-3点)。 那么,我们如何正确关闭? 它是否收在 1.3058

你不能。MT有滑点,这总是对经纪人有利的。
 
Mr.Dmitry:

你好。我最近开始学习MQL4,遇到了以下误解。

正如你在下面的例子中看到的,当条形图中的最高烛光达到1.3058时,订单应该关闭。 该订单根据条件被关闭,但关闭价格不是1.3058(可能高出1-3点)。 那么,我们如何正确关闭? 想让你的订单在 1.3058价关闭

好吧,想象一下,在最后一个交易日,价格是1.3057,而在目前的交易日,价格是1.3059。

以后不要说订单没有成交。你没有正确地进行检查。你必须在 "多或等于 "或 "少或等于 "上做文章,而不是其他。

 
artmedia70:

想象一下这样的情况:在最后一个交易日,价格是1.3057,而在当前交易日,价格变成了1.3059。

你不应该说该订单没有结束。你检查得不对。你应该检查 "多于或等于 "或 "少于或等于"。


这就是我所做的>=。以上只是一个例子(请原谅同义词),问题不在于订单没有关闭,而在于它没有按照我的意愿关闭。

borilunad
没办法,MT规定了滑点,滑点总是对经纪人有利的。
所以根本就没有办法?悲伤((.
 
Zhunko:
你可以写一个脚本,画出这条线。将这个脚本绑定到一个热键上。


谢谢你,我可以试一试。
 
Mr.Dmitry:

这就是我所做的>=。上面的例子只是一个例子(请原谅同义词),问题不在于订单没有关闭,而在于它没有按照我希望的方式关闭。

我的意思是根本就没有出路?悲伤((!)
如果你最后设置了止损,你到了盈亏平衡点,开始拖曳,价格突然转向相反的方向,在这种情况下,订单被止损关闭,不是盈利,而是亏损!滑点+扩大的价差=:(()
 

大家晚上好!

你能告诉我我做错了什么吗?

int start()

{

//----

ObjectCreate("trendln1",OBJ_TREND,0)。

ObjectSet("trendln1",OBJPROP_COLOR,Red)。

//----

return(0);

}

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!P.s. 我试图写一个调用趋势线的脚本,这样就可以指定一个热键来出现趋势线。

 
okvseok:

大家晚上好!

你能告诉我我做错了什么吗?

int start()

{

//----

ObjectCreate("trendln1",OBJ_TREND,0)。

ObjectSet("trendln1",OBJPROP_COLOR,Red)。

//----

return(0);

}

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!P.s. 我试图写一个调用趋势线的脚本,这样就可以指定一个热键来出现趋势线。

创建一个对象 时,你至少应该指定一些坐标。

// Формирование линии
int fLine(string Name            // Префикс имени
         ,string Text            // Префикс описания
         ,int Number             // Номер
         ,int Bar1,double Price1 // Первая точка
         ,int Bar2,double Price2 // Вторая точка
         ,int Bar3,double Price3 // Вспомогательная точка
         ,color Цвет
         ,int Стиль=STYLE_SOLID  // Сплошная
         ,int Видимость=0        // Только на текущем таймфрейме
         ,bool Луч=false
         ,int Толщина=1
         ,bool Фон=true ){
   int Error;
   datetime Time1=Time[Bar1],
            Time2=Time[Bar2];
   if( Number>0 ) Name=Name+Number;
   if( Bar1<Bar2
    || Bar2<LastBar
    || Price1<Zero
    || Price2<Zero ){
      Error=MyError;
      if( РежимОтладки && ПечататьПредупреждения ) Print("*     "+Name+" не создан, параметры: "+DoubleToStr(Price1,Digits)
                                       +" ("+Bar1+"/"+TimeToStr(Time1)+")..."
                                       +DoubleToStr(Price2,Digits)+" ("+Bar2+"/"+TimeToStr(Time2)+")");
      return(Error);
   }
   Error=fObjectDelete(Name);
   if( Error>0 && Error<MyError ){
      return(Error);
   }
   if( ObjectCreate(Name,OBJ_TREND,0,Time1,Price1,Time2,Price2,Time[Bar3],Price3) ){
      if( Text!="" && Number>0 ){
         Text=Text+Number;
         Фон=true;
      }
      if( !ObjectSetText(Name, Text)
       || !ObjectSet(Name, OBJPROP_COLOR, Цвет)
       || !ObjectSet(Name, OBJPROP_STYLE, Стиль)
       || !ObjectSet(Name, OBJPROP_RAY, Луч)
       || !ObjectSet(Name, OBJPROP_TIMEFRAMES, Видимость)
       || !ObjectSet(Name, OBJPROP_WIDTH, Толщина)
       || !ObjectSet(Name, OBJPROP_BACK, Фон) ){
         Error=GetLastError();
         if( !РежимОтладки ) PlaySound("alert.wav");
         Print("***** "+Name+" - ошибка модификации параметров "+Error);
   }  }
   else{
      Error=GetLastError();
      if( !РежимОтладки ) PlaySound("alert.wav");
      Print("***** "+Name+" - объект не создан, ошибка "+Error);
   }
   return(Error);
}
 
tara:

在创建一个对象时,你至少应该指定一些坐标。


而如果我想指定已经用鼠标的坐标。我只需要调用趋势线 本身,但它还没有成功。这有可能吗?
 
okvseok:

而如果我想用鼠标已经指向坐标。我只是需要调用趋势线本身,但还没有触发。这有可能吗?

构建趋势线并不是最简单的事情,你用鼠标来做。