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

 

oops :-)

谢谢你

 

鉴赏家们好!

这是一个EA。它在一个分形上/下开了一个头寸。我如何使止损点从分形的顶部高5点(如果买入)和低5点(如果卖出)?

P_up0=iCustom(0,0,"Ценовой канал", Chperiod,0,0);
   P_down0=iCustom(0,0,"Ценовой канал", Chperiod,1,0);
   P_up1=iCustom(0,0,"Ценовой канал", Chperiod,0,1);
   P_down1=iCustom(0,0,"Ценовой канал", Chperiod,1,1);
   Up=iCustom(0,0,"olyakish_fractals_02(для Skonti)",15,150,"Процент для отсеивания по объему",110,1,3);
   Down=iCustom(0,0,"olyakish_fractals_02(для Skonti)",15,150,"Процент для отсеивания по объему",110,3,3);
//задали все данные 

   total=OrdersTotal();
   if( total<1) 
     {
      // Проверка свободной маржи
      if(AccountFreeMargin()<(1000* Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
      // Условие открытие позиции BUY
      if( Up> Down)
        {
         Lots= GetSizeLot();
         ticket=OrderSend(Symbol(),OP_BUY, Lots,Ask,3,0,0,"",16384,0,Green);
         if( ticket>0)
           {
            if(OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
      // Условие открытие позиции SELL
      if( Up< Down)
        {
         Lots= GetSizeLot();
         ticket=OrderSend(Symbol(),OP_SELL, Lots,Bid,3,0,0,"",16384,0,Red);
         if( ticket>0)
           {
            if(OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
      return(0);
     }
    
   for( cnt=0; cnt< total; cnt++)
     {
      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   
         OrderSymbol()==Symbol())  
        {
         if(OrderType()==OP_BUY)   // длинная позиция открыта
           {
            // условие закрытие длинной позиции
            if( P_down1> P_down0|| Up< Down)
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
                 return(0); 
                }
            if( TrailingStop>0)  
              {                  
               if(Bid-OrderOpenPrice()>Point* TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point* TrailingStop && OrderStopLoss()!=OrderOpenPrice()+ X*Point)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ X*Point,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else 
           {
            // условие закрытия короткой позиции
            if( P_up1< P_up0|| Up> Down)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
               return(0); 
              }
            if( TrailingStop>0)  
              {               
               if((OrderOpenPrice()-Ask)>(Point* TrailingStop))
                 {
                  if(NormalizeDouble(OrderStopLoss(),Digits) != NormalizeDouble(OrderOpenPrice()- X*Point,Digits))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()- X*Point,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
           }
        }
     }
   return(0);
  }

我在这里使用了价格通道。

// условие закрытия короткой позиции
            if( P_up1< P_up0|| Up> Down)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
               return(0); 
              }
и
// условие закрытие длинной позиции
            if( P_down1> P_down0|| Up< Down)
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
                 return(0); 
                }

我很难确定开仓时分形的L或H!

大概是这样的!!!?

if (NormalizeDouble (MathAbs (High [ i]-5),Digits) < Price)
 
哪种乐器的价格是=5?
if (NormalizeDouble (MathAbs (High [ i]-5),Digits) < Price)

所以要乘以最下位数的价格

5*Point
 

这是我犯的一个错误。谢谢。

关于如何设置 分形的顶部,该位置被打开????

 
所有问题都是通过实验解决的--写一个脚本,运行它。
- 我们看到标准的iFractals()有以下区别
1.由分形指数组成的指标正好等于高/低点
2.不存在的分形值==0
int i;
   double f;
   for( i=0; i<50; i++) { f=iFractals(NULL,0,MODE_UPPER, i); if( f!=0) break;}
 Alert(f,"  ",High[i]," i=",i);
P.S. 从这个周期的位置往回看,在开仓的那一刻,请记住
datetime timeFractalOnOpenPos=Time[i]
 
我不明白如何在EA中显示这一点。当开仓时,记住这个分形,然后如何在平仓条件下调用它?
 
它不清楚什么是呼叫的意思。
在程序的全局变量中
-记住条形分形的时间来开仓。 利用条形的时间,我们通过iBars()知道条形的编号。
-记住分形的价格
记住分形价格--记住上涨/下跌
然后再一次做什么?
 
也许我没有这样说,我只是不知道如何编码。
 
有多少个订单,每一方有哪些订单?
 

所有区块以上

double UfractalBuy,LfractalBuy;

在开立买单时写下最近的分形

int i; double f;

     if( ticket>0)
           {
            if(OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES)) 
            {
            Print("BUY order opened : ",OrderOpenPrice());
  
   for( i=0; i<50; i++) { f=iFractals(NULL,0,MODE_UPPER, i); if( f!=0) break;}
   UfractalBuy=High[ i];
   for( i=0; i<50; i++) { f=iFractals(NULL,0,MODE_LOWER, i); if( f!=0) break;}
   LfractalBuy=Low[ i];
            }
           }

为买入订单输入另一个条件

if(P_down1>P_down0||Up<Down||Close[0]+5*Point<LfractalBuy)
原因: