[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 619

 
kwadrad:

你能做什么?

开盘前更新数据,使价格正常化

维宁

我马上写道,不建议采用这种封闭方式。正在使用一个未记录的功能。但任何未结头寸的平仓时间都是零,平仓价格将等于当前的收盘价。

经过这些经历,已经很明显了)

 
kwadrad:

对此可以做些什么?

仔细观察你在开仓时 设定的价格。当然,一定有...Ask与 Bid 混淆了吗?
 
artmedia70:
仔细看一下你在开仓时设定的价格。当然,一定有...Ask与 Bid 混淆了吗?

是的,它是。我有。
 
kwadrad:

它是。谢谢你。
不客气 - 这是新手们首先感到困惑的事情,我知道...
 
有人做了一个简单的追踪止损,把挂单 移到价格后面,而不是止损水平后面吗?有可能做到吗?
我试了又试,但得到的结果是挂单像个病人一样在价格后面来回移动...

是否有可能重新制作简单的尾随功能,使其处理订单而不是停止?例如这个。

//+----------------------------------------------------------------------------+
//|  Сопровождение позиции простым тралом                                      |
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                   (-1 - любая позиция)                    |
//|    mn - MagicNumber                (-1 - любой магик)                      |
//+----------------------------------------------------------------------------+
  void TrailingPositionsSimplTR(string sy="", int op=-1, int mn=-1) {
  double p, pp;
  int    i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  p=MarketInfo(sy, MODE_POINT);
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_BUY) {
            pp=MarketInfo(sy, MODE_BID);
            if (!ProfitTrailing || (pp-OrderOpenPrice())>TrailingStopBuy*p) {
              if (OrderStopLoss()<pp-(TrailingStopBuy+TrailingStepSimplTR-1)*p) {
                ModifyOrder(sy, -1, pp-TrailingStopBuy*p, 0, clModifyBuy);//
              }
            }
          }
          if (OrderType()==OP_SELL) {
            pp=MarketInfo(sy, MODE_ASK);
            if (!ProfitTrailing || OrderOpenPrice()-pp>TrailingStopSell*p) {
              if (OrderStopLoss()>pp+(TrailingStopSell+TrailingStepSimplTR-1)*p || OrderStopLoss()==0) {
                ModifyOrder(sy, -1, pp+TrailingStopSell*p, 0, clModifySell);
              }
            }
          }
        }
      }
    }
  }
}
 
ToLik_SRGV:

Print()四舍五入到4位数,以正确地输出到控制台的类型为double(它返回iOpen() 5位小数,在这种情况下),你应该使用DoubleToStr()函数

string DoubleToStr(double value,int digits)
将一个数字值转换为一个包含指定精度格式的数字字符表示的文本字符串。

参数。

value - Величина с плавающей точкой.

digits - Формат точности, число цифр после десятичной точки (громное спасибо.


非常感谢您。
 
Roger:


看看这个EA,我已经在那里实现了它。

http://www.rogersignals.com/ru/experts.php?a=Support_Resistance

好的,谢谢,我会研究的...
 
artmedia70:
有人做了一个简单的追踪止损,把挂单移到价格后面,而不是止损水平后面吗?有可能做到吗?
我试了又试,但得到的结果是挂单像个病人一样在价格后面来回移动......

是否有可能重新制作简单的尾随功能,使其处理订单而不是停止?例如这个。

一切都太复杂了:)))
以下是我的代码

//+------------------------------------------------------------------+
void trailingOrder(int magic, int trailing){
   int index = 0;
   while(trailing > 0 && OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS)){
      if(OrderMagicNumber() == magic){
         if(OrderType() == OP_BUYSTOP){
            if(OrderOpenPrice() - Ask > Point*trailing){
               if((Ask+Point*trailing)-Ask >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point && (Ask+Point*trailing)-Ask > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point){
                  if(!OrderModify(OrderTicket(),Ask+Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку!");
               }
            }
            return;
         }
         if(OrderType() == OP_SELLSTOP){
            if(Bid - OrderOpenPrice() > Point*trailing){
               if(Bid-(Bid-Point*trailing) >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point && Bid-(Bid-Point*trailing) > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point){
                  if(!OrderModify(OrderTicket(),Bid-Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку!");
               }
            }
            return;
         }
      }
      index++;
   }
}
//+------------------------------------------------------------------+
你在方法中传入一个延迟的medge和一个期望的trall作为参数。
 
      for (i =0;i<OrdersTotal();i++)
      {
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true&&OrderMagicNumber()==MAGICMA&&OrderSymbol()==Symbol())
         {
            if (MathAbs(funk-OrderOpenPrice())>Point)
            {
               if (OrderType()==OP_BUYSTOP||OrderType()==OP_BUYLIMIT&&MathAbs(Ask-funk)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
               {
                  OrderModify(OrderTicket(),NormalizeDouble(funk,Digits),OrderStopLoss(),NormalizeDouble(funk+TakeProfiti*Point,Digits),0);
               }
               if (OrderType()==OP_SELLSTOP||OrderType()==OP_SELLLIMIT&&MathAbs(Bid-funk)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
               {
                  OrderModify(OrderTicket(),NormalizeDouble(funk,Digits),OrderStopLoss(),NormalizeDouble(funk-TakeProfiti*Point,Digits),0);
               }
            }
         }
      }
像这样,通过计算出的funk值来检索订单
 
ToLik_SRGV:

这对你来说有点太复杂了 :))
以下是我的代码

将方法作为参数传入一个延迟的medjw,以及所需的trall。

谢谢你!我想这就是了!