初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 831

 
tsd Tsepkov:

ファーストネームのことなんだけど、ファーストネームを本名に変えろって書いてあるのにうまくいかない

はい、お客様のステータスが「売り手」の場合、お客様の詳細を編集することはできません。

説明を添えて、servicedeskにリクエストを書いてみて ください。

 
Vladimir Karputov:

はい、お客様のステータスが「売り手」の場合、お客様の詳細を編集することはできません。

サービスデスクへの申請 書を説明付きで書いてみてください。

それこそ、いや、編集しないとなれない。悪循環に陥る...。

あなたのセラー登録申請は、モデレーターによって拒否されました。

提供されたデータを修正してください。

 
tsd Tsepkov:

***

入力された データを修正してください。

これが理由でしょうか?写真が曲がっていたり、暗かったり、要求通りにならない...。

 
tsd Tsepkov:

それこそ、いや、編集しないとなれない。悪循環に陥る...。

あなたの売り手としての登録申請は、モデレーターによって拒否されました。

提供されたデータを修正してください。

じゃあ、その問題についてサービスデスクに書けよ。フォーラムでレールを叩くより生産的です ;)
 
VHS:

MQL5でプログラミングする場合、標準のCExpertSignalクラスのvoid Ignore(long value) { m_ignore=value; }メソッドをカスタムTrailingクラスで使用する方法を教えて下さい。どうすればアクセスできますか?

私は、ポジションをオープンしたりクローズしたりするメソッドを提供するカスタムシグナルクラスを持っています。しかし、Trailingでは、別の方法でポジションを維持したいと思いました。MySignalとMyTrailingを別々に作成した場合、先に発生した条件によってポジションがクローズされます。Trailing条件が先に発動している場合は、問題ありません。ただ、MySignalから新しい(反転)シグナルが来てポジションが反転することもあり、その時はクローズせず、新たにオープンした後にTrailingを伴って欲しいです。ベースクラスを調べてみたところ、ベースとなるシグナルクラスのm_ignoreが原因になっているような気がしています。適切なフィルタで値1を代入すれば、その通りに動作するようです。Expert AdvisorクラスのOnInitにfilter0.Ignore(0)を追加しています。しかし、私はOOPの初心者で、CExpertSignalクラスから 継承されていないMyTrailingクラスでこの値を変更する方法を理解していません(仮に filter0.Ignore(1) とします)。どうしたらよいかアドバイスをお願いします。

実は、もっと一般的な質問ですが、子孫ではない2つのクラス間で情報を渡すにはどうしたらいいのでしょうか?トレーリングクラスからシグナルクラスへ情報を転送する方法は?おそらく、グローバル変数を作り、それを介して通信することができるのでしょう。しかし、これは、OOPにおけるprotected memberのロジックに関しては、完全に曲解されているように見えます。


助けてください!すでに、ビルド無視(もちろん、それ自体は良くない、人々は基本コードにそれを含めようとした)から離れようとしましたが、まだ接続できません。3日目にして発明を試みる(まだマニュアルがない)。

MySignalクラスにprotected booleanメンバ(m_permition)を実装してSetメソッドを作り、return(0)をlong divisionに、!m_permitionをshot divisionにしてクラスコードをいじった。MyTrailingでもprotected booleanメンバm_signal_permitionを作成し、GetとSetメソッドを作成し、CheckTrailingで制御しています if(position==NULL) {m_signal_permition = true; return(false);} else m_signal_permition = false.です。

ただひとつ、どこに、どのように持っていけばいいのかがわからないのです。OnTickで単純に参照してみましたが、失敗します。

ウラジミールさんの記事「どう教えるか...」を読みました。カスタムシグナルで他のシグナルのインスタンスを作成し、それを介して通信するというアイデアは明確なようですが、私のシステムのどこかではそれが完全に調和していません:シグナルとトレイリングのクラスは互いに継承されていません。

善意の人たちよ、できる限り助けてください。

 

こんにちは、同僚たち。MT5の気配値には、プロテクション価格に加えて、過去のスプレッドやスリッページ(デフォルトではどこでも同じで、5桁の10ポイント)など、いくつかのデータが含まれています。

ポジションをオープンした後にこのようなリクエストをすることで

Print("Expert name: ",__FILE__,", Открыта поза Sell с магиком №: ",IntegerToString(m_trade.RequestMagic()),", Cпред ",SymbolInfoInteger(_Symbol,SYMBOL_SPREAD),
", Deviation ",IntegerToString(m_trade.RequestDeviation()));

こんな答えが返ってきます。

MT5テスターでは、MT4で私がスクリーンショットの特定の例に対して手動でスプレッドを13pipsに設定したように、スプレッドとスリッページの両方を一緒にカウントするというのは正しく理解されていますか?

 

こんにちは、誰か助けてください、どのように私は特定の口座番号に mt5のEAをリンクすることができますか?

 
denis basuk:

こんにちは、どなたか助けてください。mt5 Expert Advisorを特定の口座番号に リンクさせるにはどうすればよいですか?

口座番号を確認したいのですが。これは、OnInit()およびOnTick()で行う必要があります。例

 

こんにちは、私はMT4からMT5へインディケータを転送しようとしています。次のバーまでの時間を表示する簡単なインジケータを持っています。本インジケーターはOnTimerを使用しています。OnTimerの中で、void refreshClock()関数を使って更新しています。OnTimerを使用する必要がある他のインジケータにこの構造を使用しても良いのでしょうか?それとも、OnTimerにアドレスの処理を最適化するのか?

#property description "Time"
#property indicator_chart_window
#property indicator_plots   0

                                    
                                                                                             
input int Offset_Minutes = 60;                                                                                                         
input int Font__Size = 10;                                   
input color  Font_Color = clrWhite;                         
input color  Font_No_Bar_Color = clrRed;                        
input ENUM_BASE_CORNER  Corner = CORNER_RIGHT_UPPER;        
input int Time_X = 140;                                          
input int Time_Y = 0;                                            


#define  Clock_Name "Тimer"
int selectTime;
int diff;
int offsetHour;

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

int  OnInit()
{   
   EventSetMillisecondTimer(1000); 
   return(0); 
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

void OnDeinit(const int reason) 
{ 
   if(reason==REASON_REMOVE      || 
      reason==REASON_CHARTCHANGE || 
      reason==REASON_RECOMPILE   || 
      reason==REASON_CHARTCLOSE  || 
      reason==REASON_CLOSE       || 
      reason==REASON_PARAMETERS)    
   { 
     ObjectDelete(0, "Тimer");
     EventKillTimer(); 
   }
  ChartRedraw();
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

void OnTimer( )                 
{ 
   refreshClock();  
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

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[])
{
   refreshClock();
   return(rates_total);
}
void refreshClock()
{
   static bool inRefresh = false;
           if (inRefresh) return;
               inRefresh = true;
                              ShowClock(); ChartRedraw();
               inRefresh=false;
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

void ShowClock()
{
   int periodMinutes     = periodToMinutes(Period());
   int currentTime       = (int)TimeCurrent();
   int localTime         = (int)TimeLocal();
   int barTime           = (int)iTime();
   
   diff = (int)MathMax(round((currentTime-localTime)/60.0)*60,-24*3600);
   offsetHour = (int)-Offset_Minutes*60; // сдвиг в минутах
   
   
   int currentTimeReal   = localTime+offsetHour;
   int sel_localTime     = localTime+diff;
   selectTime = sel_localTime;
   
     
      color  theColor;
      string time = getTime(barTime+periodMinutes*60-selectTime,theColor);
      int times = barTime+periodMinutes*60-selectTime;
      if(times < -60 || TerminalInfoInteger(TERMINAL_CONNECTED) == false || 
      currentTimeReal-currentTime > 60 || currentTime-currentTimeReal > 60)
      time = "Time Off";
             
   if(ObjectFind(0, Clock_Name) < 0)   
   ObjectCreate(0, Clock_Name, OBJ_LABEL, 0, 0, 0);
   ObjectSetString(0, Clock_Name, OBJPROP_TEXT, "Time: " + time);
   ObjectSetString(0, Clock_Name, OBJPROP_FONT, "Verdana");
   ObjectSetInteger(0, Clock_Name, OBJPROP_FONTSIZE, Font__Size);
   ObjectSetInteger(0, Clock_Name, OBJPROP_COLOR, theColor);
        ObjectSetInteger(0, Clock_Name, OBJPROP_CORNER, Corner);
        ObjectSetInteger(0, Clock_Name, OBJPROP_XDISTANCE, Time_X);
   ObjectSetInteger(0, Clock_Name, OBJPROP_YDISTANCE, Time_Y);
      
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

string getTime(int times, color& theColor)
{
   string stime = "";
   int    seconds;
   int    minutes;
   int    hours;
   int currentTime       = (int)TimeCurrent();
   int localTime         = (int)TimeLocal();
   
   
   offsetHour = (int)-Offset_Minutes*60;
   
   int currentTimeReal   = localTime+offsetHour;
  
   if (times < 0 || TerminalInfoInteger(TERMINAL_CONNECTED) == false || 
   currentTimeReal-currentTime > 60 || currentTime-currentTimeReal > 60) {
         theColor = Font_No_Bar_Color; times = (int)fabs(times); }
   else  theColor = Font_Color;
   
   seconds = (times%60);
   hours   = (times-times%3600)/3600;
   minutes = (times-seconds)/60-hours*60;

   if (hours>0)
   if (minutes < 10)
         stime = stime+(string)hours+":0";
   else  stime = stime+(string)hours+":";
         stime = stime+(string)minutes;
   if (seconds < 10)
         stime = stime+":0"+(string)seconds;
   else  stime = stime+":" +(string)seconds;
   return(stime);
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+
  
datetime iTime(ENUM_TIMEFRAMES forPeriod=PERIOD_CURRENT)
{
   datetime times[]; if (CopyTime(Symbol(),forPeriod,0,1,times)<=0) return(TimeLocal());
   return(times[0]);
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

int periodToMinutes(int period)
{
   int i;
   static int _per[]={1,2,3,4,5,6,10,12,15,20,30,0x4001,0x4002,0x4003,0x4004,0x4006,0x4008,0x400c,0x4018,0x8001,0xc001};
   static int _min[]={1,2,3,4,5,6,10,12,15,20,30,60,120,180,240,360,480,720,1440,10080,43200};

   if (period==PERIOD_CURRENT)
       period = Period();  
            for(i=0;i<20;i++) if(period==_per[i]) break;
   return(_min[i]);  
}
 
VHS:

どなたか助けてください!すでに、内蔵のIgnore(もちろん、それ自体が良いわけではなく、人々は基本コードにそれを含めようとしました)から離れようとしましたが、まだ接続できません。3日目にして発明を試みる(まだマニュアルがない)。

MySignalクラスにprotected booleanメンバ(m_permition)を実装してSetメソッドを作り、return(0)をlong divisionとshot division if !m_permition.MyTrailingでもprotected booleanメンバm_signal_permitionを作成し、GetとSetメソッドを作成し、CheckTrailingで制御しています if(position==NULL) {m_signal_permition = true; return(false);} else m_signal_permition = false.です。

ただひとつ、どこに、どのように持っていけばいいのかがわからないのです。OnTickで単純に参照してみましたが、失敗します。

ウラジミールさんの記事「どう教えるか...」を読みました。カスタムシグナルで他のシグナルのインスタンスを作成し、それを介して通信するというアイデアは明確なようですが、私のシステムのどこかではそれが完全に調和していません:シグナルとトレイリングのクラスは互いに継承されていません。

善意の人たちよ、少しでも私を助けてください。

1週間で進歩した!CExpertクラスで Signalメソッドが見つかりました。OnTickにコードを挿入。

CExpertSignal *my_signal = ExtExpert.Signal(); my_signal.Ignore(0);

ここで、手動で括弧内の「1」を変更すると、Ingnore方式が機能します - Expert Advisorはシグナルによるトレードを行いません。

あとは、OnTickで末尾のオブジェクトの情報を取得する方法を理解するだけです。残念ながら、ExtExpert.Trailing() というメソッドは存在せず、このメソッドで実装した GetPermition をどのオブジェクトに適用したいのかが分からない。どなたか教えてください。

理由: