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

 
Shniperson >> :
先生们。如何使H4交易考虑到H1柱?例如,如果(......&& Close[0](H1柱)>High[1](H1柱) ???????????

使用iClose()和iHigh() - 你可以在这些函数中设置一个任意的时间框架

 
我不明白为什么一个缓冲区的赋值不正确(缓冲区1的结果没有打印在指标窗口)。 还有第二个问题,为什么指标要计算零点栏和前一个栏(limit=2),而它可以只限制在当前零点栏?

#property indicator_separate_window
#property indicator_buffers 1

extern int FastMA=3;
extern int SlowMA=25;

double Buffer1[];


double Buffer2[];

int init()
{
SetIndexBuffer(0,Buffer1);
SetIndexBuffer(1,Buffer2);
return(0);
}

int start()
{
int limit,counted_bars;
counted_bars=IndicatorCounted(); //counted_bars=Bars-1
if(counted_bars>0) counted_bars--; //??? counted_bars=Bars-1-1
limit=Bars-counted_bars; //лимит теперь равен двум
for(int i=0; i<limit; i++){
Buffer2[i]=MathAbs(Close[i]-Open[i]);
}
for(i=0; i<limit; i++){
Buffer1[i]=Buffer2[i]*(-1);
}
}

 
尊敬的程序员,请帮助我在指标中插入一个声音,当指标过 零时发出声音。谢谢你!
附加的文件:
 
C-4 >> :
我不明白为什么一个缓冲区的分配不正确(缓冲区1的结果没有输出到指示器窗口)...

SetIndexStyle(0,DRAW_LINE); 对于绘图缓冲区缺少,对于计算缓冲区缺少IndicatorBuffers(2)



 
中奖了!当然是IndicatorBuffers(2),我以为指定SetIndexBuffer就够了。顺便说一下,即使没有SetIndexStyle(0,DRAW_LINE),我也得到了一条黑色的细线--默认设置是搞的。
 

专家们好。

我做了一个只关闭未结订单的EA!(半自动交易)。

收盘规则:主力收盘走价格通道,如果向上突破1点收盘SHELL。

如果1点下跌收盘BAY.此外,保险盈亏平衡点在一定距离。

我有一个问题,如果我做的一切都正确,代码是否正确!?

extern bool check=false; 
extern int PeriodP=12; 
extern double TrailingStop = 35;// расстояние после которого будем устанавливать безубыток
extern double X=5;//установка в + 5 пунктов! 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double P_up0, P_down0, P_up1, P_down1;
   int cnt, total;

  P_up0=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,0,0);
  P_down0=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,1,0);
  P_up1=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,0,1);
  P_down1=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,1,1);

    
   for( cnt=OrdersTotal()-1; cnt>=0; cnt--) {
      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&    OrderSymbol()==Symbol())   {
         if(OrderType()==OP_BUY) 
            {
                 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) 
            {
               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);
                    }
                 }
              }
            
           }
        }
     
   if ( check) Order_Open();
   return(0);
  }
//+------------------------------------------------------------------+

void Order_Open(){
   if (OrdersTotal()<=1) {
      OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"",20080421,0);
      OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",20080421,0);
   }
}
 
没有关闭多头头寸的条件,现在无论如何都会关闭买入指令。
如果你有一个超额的订单,一定要把RefreshRates()放在OrderSelect 之前或之后。
 
Roger >> :
没有条件关闭多头头寸,现在无论如何都会关闭买入订单。

发现了这个错误。真的很想念BUY的关闭。

至少编译已经完成,没有错误。

extern bool check=false; 
extern int PeriodP=12; 
extern double TrailingStop = 35;// расстояние после которого будем устанавливать безубыток
extern double X=5;//установка в + 5 пунктов! 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double P_up0, P_down0, P_up1, P_down1;
   int cnt, total;

  P_up0=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,0,0);
  P_down0=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,1,0);
  P_up1=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,0,1);
  P_down1=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,1,1);

    
   for( cnt=OrdersTotal()-1; cnt>=0; cnt--) {
      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&    OrderSymbol()==Symbol())   {
         if(OrderType()==OP_BUY) {  
            
            if( P_down1> P_down0) {
                 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  
            {
               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);
                    }
                 }
              }
            
           }
        
     }
   if ( check) Order_Open();
   return(0);
  }
//+------------------------------------------------------------------+

void Order_Open(){
   if (OrdersTotal()<=1) {
      OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"",20080421,0);
      OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",20080421,0);
   }
}
 

一个非常 "简单 "的问题:你如何计算1(1)手未平仓 指数的存款货币 的价格?

例子:昨天我开了1手日经,开仓时的价格是9400点。问题:我怎么知道开仓时9400点(不是存款!是手的价格)的存款货币是多少?

 
jobber писал(а)>>

一个非常 "简单 "的问题:你如何计算1(1)手未平仓 指数的存款货币的价格?

我的问题是:我如何知道9400是多少钱(不是存款!即手的价格),在开盘时的存款货币?

i>MarketInfo()对这个参数没有帮助。