初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 36

 

こんにちは。

バーのキャプションがサイドではなく、ハイバーの上のバーの中央に表示されるように、コードを修正するのを手伝ってください。

#プロパティの厳密さ
#property indicator_chart_window

input int TextSize = 8; //フォントの大きさ
入力色 TextColor = clrYellow; //テキスト色
input int TextAngle = 90; //テキストの回転角度
input 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++ ) { 。
if ( ObjectFind ("candlesize "+ IntegerToString(i)))>=0 ) {
ObjectDelete("キャンドルサイズ "+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(rates_total);
}

int StepPer ()
{
int i = 0;
switch (Period())
{
ケース PERIOD_M1:
i = 5;
が壊れる。
ケース PERIOD_M5:
i = 15;
が壊れる。
ケース PERIOD_M15:
i = 25;
が壊れる。
ケースPERIOD_M30:
i = 40;
が壊れる。
ケース PERIOD_H1:
i = 60;
が壊れる。
ケース PERIOD_H4:
i = 90;
が壊れる。
ケース PERIOD_D1:
i = 220;
が壊れる。
ケース PERIOD_W1:
i = 500;
が壊れる。
ケース PERIOD_MN1:
i = 2000;
が壊れる。
のデフォルトになります。
が壊れる。
}
を返す(i)。
}

 
ed3sss:

Proof: Print("前のジョブPriceAsk-",PriceAsk);ログは空です。

詳細がわからなければ証明にならない ))))initの全文と変数の宣言を見せて ください。

また、最新のものが必要な場合、なぜアカウントライフの最初から、すべての注文をチェックするのでしょうか?- 10通貨ペアを開いている場合、他にどのような方法がありますか?

端から見ていって、時間内にサイクルを抜けることが必要です。10組がどう関係するんだ?100でも、記号は選べる。

 
Игорь:

こんにちは。

バーの上に表示される文字が、サイドではなく、ハイバーの上のバーの中央になるように、コードを修正するのを手伝ってください。

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度に設定されていますが、回転角度を考慮し、オブジェクトがHighを超える場合はアンカーポイントが下になるように設定する必要があります(あなたの場合、左のセンターポイントになるでしょう)。
 
Vitalie Postolache:

さて、回転した後、ドットは上部中央ではなく、左中央に あるため、テキストは右にずれています。

ObjectSetInteger(ChartID(),"candlesize"+IntegerToString(i),OBJPROP_ANCHOR,ANCHOR_LEFT);
アンカーポイントは0度回転させたときに設定されます。回転角度を考慮してアンカーポイントを設定する必要があり、オブジェクトがHigh以上の場合は下になり、あなたの場合は中央の左側のポイントになります。

本当にありがとうございました !!!!

すべて思い通りになりました !

改めて、誤解を招いたこと、厳しく指摘したことをお詫びします !

 
Vitalie Postolache:

詳細がわからなければ証拠にならない ))))initの全文と変数の宣言を 表示する。

時間内にループを通過して抜けるために端から10組は何の関係があるのですか?100でも、そこに一文字一文字が選ばれているんですね。

bool s=false。
double b=AccountBalance();
i=0;
for(;i<OrdersTotal();i++)
{//+----------------------------------------------------------------------------------------+for
ViborOrdera=OrderSelect(i,SELECT_BY_POS)とする。
if(OrderSymbol()!=Symbol())continue。
if(OrderType()>1)continue。
s=trueとする。
int Ticket=OrderTicket();
double Lots=OrderLots()。
ダブルプライス
if(OrderType()==1)Price=NormalizeDouble(Ask,Digits);else Price=NormalizeDouble(Bid,Digits);
//+-----------------------------------------------------------------------------------------+
ViborOrdera=OrderClose(Ticket,Lots,Price,3)です。
if(GetLastError()==6){Alert("No connection");return(0);}.
if(GetLastError()==132){Alert("Market is closed");return(0);}.
RefreshRates()。
i--;

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

OK、ここでも同じループです、なぜ注文が閉じるのでしょうか?)