初学者的问题 MQL4 MT4 MetaTrader 4 - 页 36

 

你好!

帮助我修改代码,使条形标题位于高位条形上方的条形中心,而不是在侧面。

#属性严格
#property indicator_chart_window

输入 int TextSize = 8; //字体大小
输入颜色 TextColor = clrYellow; //文本颜色
输入 int TextAngle = 90; //文本旋转角度
输入 int MaxBar = 100; //从0开始计算烛台尺寸的条数。

int OnInit()
{
return(INIT_SUCCEED)。
}

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[]。
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[]。
const int &spread[])
{
int i;
for ( i = 0; i < MaxBar; i++ ) {
如果( ObjectFind ( "candlesize "+ IntegerToString(i))>=0 ) {
ObjectDelete("candlesize "+ IntegerToString(i))
}
ObjectCreate ("candlesize "+ IntegerToString(i),
OBJ_TEXT。
0,
时间[i]。
high[i]+StepPer()*Point)。
ObjectSet ("candlesize "+IntegerToString(i),
OBJPROP_ANGLE。
文本角度
);
ObjectSetText ("candlesize "+IntegerToString(i),
DoubleToStr(NormalizeDouble((high[i]-low[i]+Point)/Point, 0), 0)。
文本大小。
NULL。
文字颜色
);
}
return(rate_total)。
}

int StepPer ()
{
int i = 0。
switch (Period())
{
case PERIOD_M1:
i = 5;
突破。
case PERIOD_M5:
i = 15;
突破。
case PERIOD_M15:
i = 25;
突破。
i = 40;
突破。
case PERIOD_H1:
i = 60;
突破。
case PERIOD_H4:
i = 90;
突破。
case PERIOD_D1:
i = 220;
突破。
case PERIOD_W1:
i = 500;
突破。
case PERIOD_MN1:
i = 2000;
突破。
默认情况下。
突破。
}
返回(i)。
}

 
ed3sss:

证明:Print("Previous job PriceAsk-",PriceAsk);日志是空的。

没有细节,就不是一个证明))))给我看看init的全文和变量的声明

另外,如果你需要最新的订单,为什么要检查所有的订单,从账户生命的一开始?- 如果有10个货币对开放,还能怎么做?

你必须从终点穿过它们,及时退出循环。10对有什么关系呢?即使是一百个,你也有选择的符号。

 
Игорь:

你好!

帮助我纠正代码,使小节上方的铭文位于高小节上方的小节中心,而不是在侧面。

学习如何使用SRC按钮来插入代码

并阅读关于OBJPROP_ANCHOR。

 
Vitalie Postolache:

学习如何使用SRC按钮来插入代码

并阅读关于OBJPROP_ANCHOR。

明白了!

对不起,太唐突了!

 
Игорь:

明白了,谢谢 !

对不起,我说得太难听了!

#property strict
#property indicator_chart_window

input int      TextSize = 8; //размер шрифта
input color    TextColor = clrYellow; //цвет текста
input int      TextAngle = 90; //угол поворота текста
input int      MaxBar = 100;  //количество баров, начиная с 0, для которых вычисляется размер свечей

int OnInit()
{
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int i;
   for ( i = 0; i < MaxBar; i++ )   {
      if ( ObjectFind ("candlesize"+ IntegerToString(i)) >=0 )   {
             ObjectDelete("candlesize"+ IntegerToString(i));
      }
      ObjectCreate ("candlesize"+ IntegerToString(i),  
                    OBJ_TEXT,  
                    0,  
                    time[i],  
                    high[i]+StepPer()*Point);
       //--- установим привязку к правому верхнему углу
      ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_UPPER);
     ObjectSet (  "candlesize"+IntegerToString(i),  
                    OBJPROP_ANGLE,  
                    TextAngle
                 );
      ObjectSetText ( "candlesize"+IntegerToString(i),  
                      DoubleToStr(NormalizeDouble((high[i]-low[i]+Point)/Point, 0), 0),  
                      TextSize,  
                      NULL,  
                      TextColor
                     );
   }
   return(rates_total);
}

int StepPer ()
{
     int i = 0;
     switch (Period())
     {
          case PERIOD_M1:
          i = 5;
          break;
          case PERIOD_M5:
          i = 15;
          break;
          case PERIOD_M15:
          i = 25;
          break;
          case PERIOD_M30:
          i = 40;
          break;
          case PERIOD_H1:
          i = 60;
          break;
          case PERIOD_H4:
          i = 90;
          break;
          case PERIOD_D1:
          i = 220;
          break;
          case PERIOD_W1:
          i = 500;
          break;
          case PERIOD_MN1:
          i = 2000;
          break;
          default:  
          break;
     }
     return (i);
}  
我把它放进去了,但它仍然偏离中心,而且在错误的杆上!?
 
#property strict
#property indicator_chart_window

input int      TextSize = 8; //размер шрифта
input color    TextColor = clrYellow; //цвет текста
input int      TextAngle = 90; //угол поворота текста
input int      MaxBar = 100;  //количество баров, начиная с 0, для которых вычисляется размер свечей

int OnInit()
{
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int i;
   for ( i = 0; i < MaxBar; i++ )   {
      if ( ObjectFind ("candlesize"+ IntegerToString(i)) >=0 )   {
             ObjectDelete("candlesize"+ IntegerToString(i));
      }
      ObjectCreate ("candlesize"+ IntegerToString(i),  
                    OBJ_TEXT,  
                    0,  
                    time[i],  
                    high[i]+StepPer()*Point);
       //--- установим привязку к правому верхнему углу
      ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_UPPER);
     ObjectSet (  "candlesize"+IntegerToString(i),  
                    OBJPROP_ANGLE,  
                    TextAngle
                 );
      ObjectSetText ( "candlesize"+IntegerToString(i),  
                      DoubleToStr(NormalizeDouble((high[i]-low[i]+Point)/Point, 0), 0),  
                      TextSize,  
                      NULL,  
                      TextColor
                     );
   }
   return(rates_total);
}

int StepPer ()
{
     int i = 0;
     switch (Period())
     {
          case PERIOD_M1:
          i = 5;
          break;
          case PERIOD_M5:
          i = 15;
          break;
          case PERIOD_M15:
          i = 25;
          break;
          case PERIOD_M30:
          i = 40;
          break;
          case PERIOD_H1:
          i = 60;
          break;
          case PERIOD_H4:
          i = 90;
          break;
          case PERIOD_D1:
          i = 220;
          break;
          case PERIOD_W1:
          i = 500;
          break;
          case PERIOD_MN1:
          i = 2000;
          break;
          default:  
          break;
     }
     return (i);
}  
伙计们,你们能帮助一个流浪汉越过中间的接头处吗?
 
Игорь:
#property strict
#property indicator_chart_window

input int      TextSize = 8; //размер шрифта
input color    TextColor = clrYellow; //цвет текста
input int      TextAngle = 90; //угол поворота текста
input int      MaxBar = 100;  //количество баров, начиная с 0, для которых вычисляется размер свечей

int OnInit()
{
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int i;
   for ( i = 0; i < MaxBar; i++ )   {
      if ( ObjectFind ("candlesize"+ IntegerToString(i)) >=0 )   {
             ObjectDelete("candlesize"+ IntegerToString(i));
      }
      ObjectCreate ("candlesize"+ IntegerToString(i),  
                    OBJ_TEXT,  
                    0,  
                    time[i],  
                    high[i]+StepPer()*Point);
       //--- установим привязку к правому верхнему углу
      ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_UPPER);
     ObjectSet (  "candlesize"+IntegerToString(i),  
                    OBJPROP_ANGLE,  
                    TextAngle
                 );
      ObjectSetText ( "candlesize"+IntegerToString(i),  
                      DoubleToStr(NormalizeDouble((high[i]-low[i]+Point)/Point, 0), 0),  
                      TextSize,  
                      NULL,  
                      TextColor
                     );
   }
   return(rates_total);
}

int StepPer ()
{
     int i = 0;
     switch (Period())
     {
          case PERIOD_M1:
          i = 5;
          break;
          case PERIOD_M5:
          i = 15;
          break;
          case PERIOD_M15:
          i = 25;
          break;
          case PERIOD_M30:
          i = 40;
          break;
          case PERIOD_H1:
          i = 60;
          break;
          case PERIOD_H4:
          i = 90;
          break;
          case PERIOD_D1:
          i = 220;
          break;
          case PERIOD_W1:
          i = 500;
          break;
          case PERIOD_MN1:
          i = 2000;
          break;
          default:  
          break;
     }
     return (i);
}  
帮助一个流浪者,中间的接头在哪里?
我不知道它是在横梁上还是在边上,尽管我说的是中间!我不知道。
 
Игорь:

我已经插入了它,但它仍然偏离中心,而且在错误的栏上!?

好了,转动之后,点不再是在顶部中心,而是到了左侧中心,所以文字被移到了右边。

ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_LEFT);
锚点被设置为0度旋转,你需要考虑旋转的角度,如果物体过高,就把锚点设置在底部,在你的例子中,它应该是左侧中心点。
 
Vitalie Postolache:

好了,转动之后,点不再是在顶部中心,而是到了左侧中心,所以文字被移到了右边。

ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_LEFT);
锚点被设置为旋转0度,你需要考虑旋转的角度并设置锚点,如果物体超过了High,锚点将在底部,在你的情况下,它将是中心左边的一个点。

非常感谢你!!!!!

这一切都按照我想要的方式进行 !

我再次为我的误解和我的粗暴行为道歉 !

 
Vitalie Postolache:

没有细节,就不能证明))))显示init的全文和变量的声明

从终点穿过,及时退出环路。10对有什么关系?即使是一百个,你在那里也有一个逐个字符的选择。

bool s=false。
double b=AccountBalance()。
i=0;
for(;i<OrdersTotal();i++)
{//+----------------------------------------------------------------------------------------+for
ViborOrdera=OrderSelect(i,SELECT_BY_POS)。
如果(OrderSymbol()!=Symbol())继续。
如果(OrderType()>1)继续。
s=true。
int Ticket=OrderTicket()。
double Lots=OrderLots()。
双倍价格。
如果(OrderType()==1)Price=NormalizeDouble(Ask,Digits);否则Price=NormalizeDouble(Bid,Digits)。
//+-----------------------------------------------------------------------------------------+
ViborOrdera=OrderClose(Ticket,Lots,Price,3)。
如果(GetLastError()==6){Alert("No connection");return(0);}。
如果(GetLastError()==132){Alert("市场已关闭");return(0);}。
RefreshRates()。
i--;

}//+---------------------------------------------------------------------------------------+for

好吧,这里同样的循环,为什么会关闭订单?)