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

 
_new-rena:

エクスプローラにF_Pathと入力し、Enterをクリックするとファイルが開くのですが、これがうまくいきません。WinApiの情報はこんな 感じでしょうか?

書き込み、読み出し時にFILE_COMMONフラグが使用されないようにするのは誰ですか?このファイルは、システムにインストールされているすべての端末で利用可能になります。全端末の共有フォルダーに入ります。

MEファイル→共有データフォルダを開くで

 
artmedia70:

書き込み、読み出し時にFILE_COMMONフラグが使用されないようにするのは誰ですか?このファイルは、システムにインストールされているすべての端末で利用可能になります。全端末の共有フォルダーに配置されます。

MEファイル→共有データフォルダを開くで

ありがとうございます(!!)、やってみます。
 

こんにちは。パラメータを使用して取引要求を作成する際に、この問題に遭遇した方はいらっしゃいますか?

を入れると、以下のようなパラメータになります。

mrequest.action=TRADE_ACTION_DEAL;
mrequest.type_filling=ORDER_FILLING_FOK;

mrequest.type=ORDER_TYPE_BUY。

mrequest.type_filling=ORDER_FILLING_RETURN を指定すると、注文は開かれますが、無効なメソッドが使用されているとターミナルに報告されるため、プログラムで閉じることができません。FXサーバーでExpert Advisorを動かしていますが、他のサーバーではすべて正常に動作しています。このブローカーの取引ロボットを開発する際に使用できる注文執行ポリシーをどなたか書いていただけませんか?ありがとうございます。
 

アラート機能付きmq4インジケーターがあります。

例えば、こんな感じです。

//+------------------------------------------------------------------+
//|                                                    RSI-Alert.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_separate_window
//#property indicator_minimum 0
//#property indicator_maximum 100
#property indicator_buffers 3
#property  indicator_color1 LightSeaGreen
#property  indicator_color2 CLR_NONE
#property  indicator_color3 CLR_NONE
#property  indicator_width1 1
#property  indicator_width2 1
#property  indicator_width3 1
#property  indicator_style1 STYLE_SOLID
#property  indicator_style2 STYLE_DOT
#property  indicator_style3 STYLE_DOT
//---- input parameters
extern int RSIPeriod=48;
extern int ApplyTo=0;
extern bool AlertMode=true;
extern int OverBought=0;
extern int OverSold=0;
//---- buffers
double RSIBuffer[];
double RSIOBBuffer[];
double RSIOSBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator lines
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,RSIBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,RSIOBBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,RSIOSBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="RSI-Alert("+RSIPeriod+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
   SetIndexLabel(1,"OverBought");
   SetIndexLabel(2,"OverSold");
//----
   SetIndexDrawBegin(0,RSIPeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Relative Strength Index                                          |
//+------------------------------------------------------------------+
int start()
  {
   int    i,counted_bars=IndicatorCounted();
//----
   if(Bars<=RSIPeriod) return(0);
//----
   i=Bars-RSIPeriod-1;
   if(counted_bars>=RSIPeriod) i=Bars-counted_bars-1;
   while(i>=0)
   {
      RSIBuffer[i]=iForce(NULL,0,RSIPeriod,1,0,i);
      RSIOBBuffer[i]=OverBought;
      RSIOSBuffer[i]=OverSold;
      i--;
   }
   
   if(AlertMode)
   {
      if(RSIBuffer[1]<OverBought && RSIBuffer[0]>=OverBought)
         Alert("RSI = "+ RSIBuffer[i]+ ", Sell.");
      else if(RSIBuffer[1]>OverSold && RSIBuffer[0]<=OverSold)
         Alert("RSI = "+ RSIBuffer[i]+ ", Buy.");
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
サブウィンドウの左上(通常インジケータ名とパラメータが表示される場所)に、シグナルがオン(extern bool AlertMode=true;)かオフかを表示するようにするにはどうしたらよいでしょうか。
 
Nilog:

アラート機能付きmq4インジケーターがあります。

例えば、こんな感じです。

サブウィンドウの左上隅(通常、インジケータ名とパラメータが表示される場所)に、シグナルが有効(extern bool AlertMode=true;)か無効かを表示するにはどうすればよいでしょうか。
例えば、オブジェクト単位でテキストを出力する。
 

ドキュメントにはこう書かれている。

При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent(), но в индикаторах эта функция в тестере не вызывается. Даже если индикатор имеет обработчик OnChartEvent() и этот индикатор используется в тестируемом эксперте, то сам индикатор не будет получать никаких пользовательских событий.

現時点では、この文は関係ありません。この関数がテスターで呼び出されるインジケーターでは、少なくとも1つのインジケーターは、テスターの別のインジケーターによって生成されたイベントを受け取ることができます。

問題は、インジケータがこの関数の呼び出しを受けると、グローバルレベルで宣言された変数に格納されているデータにアクセスできなくなり、逆に、この関数で行われたすべての変更は、グローバルアクセスレベルの変数に格納されないという点です。

1. オブジェクトはグローバルに宣言され、OnInit 関数で初期化される。OnCalculate関数からアクセスすることはできますが、OnChartEvent関数でエラーメッセージが表示されます - invalid pointer

2.ある変数の内容をジャーナルに出力する関数がある(変数はグローバルに宣言されている)。OnCalculateからこの関数を呼び出すと期待される値が得られ、OnChartEventから同じ関数を呼び出すと無意味な値が得られます。

 

ごきげんよう。

イベント、特にOnChartEvent()関数を インジケータで使用する際、問題に直面しました。Expert Advisorで使用する場合は問題ありませんが、インジケータでは正常に動作しません。つまり、イベントは発生するが、既存のフィールドを変更する方法がない。例

//------------------------------------------------------------------------------
int k;
intOnInit()
{
k = 0;
ihandleDE = iCustom(_Symbol, _Period, "DrawExtremums");
//< ...>
return(INIT_SUCCEEDEDED);
}

intOnCalculate(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[])
{
Print("OnCalculate():k =", k);
//< ...>
return(rates_total)

}

voidOnChartEvent(const int id,
)const long &lparam,
const double &dparam,
const string &sparam)
{
string nameEv = "EXTR_UP";
if (sparam == nameEv)
{
Print("OnChartEvent()"。 k = ", k);
k++;

}.

}

//----------------------------------------------------------------------------------------------

その結果、私たちはこうなる。

"OnCalculate(): k = 0"- は常に

"OnChartEvent(): k = 0,...,123332"- 0から...までをカウントします。

どうしてこうなるのか、どうして!?何か解決する方法はありますか?お分かりになる方がいらっしゃいましたら、ご回答をお願いいたします。

追伸:この不具合はstrategy testerでのみ 発生し、実時間ではすべて正常に動作します。

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
dariamap:

ごきげんよう。

イベント、特にOnChartEvent()関数を インジケータで使用する際、問題に直面しました。Expert Advisorで使用する場合は問題ありませんが、インジケータでは正常に動作しません。つまり、イベントは発生するが、既存のフィールドを変更する方法がない。例

//------------------------------------------------------------------------------
int k;
intOnInit()
{
k = 0;
ihandleDE = iCustom(_Symbol, _Period, "DrawExtremums");
//< ...>
return(INIT_SUCCEEDEDED);
}

intOnCalculate(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[])
{
Print("OnCalculate():k =", k);
//< ...>
return(rates_total)

}

voidOnChartEvent(const int id,
)const long &lparam,
const double &dparam,
const string &sparam)
{
string nameEv = "EXTR_UP";
if (sparam == nameEv)
{
Print("OnChartEvent()"。 k = ", k);
k++;

}.

}

//----------------------------------------------------------------------------------------------

その結果、私たちはこうなる。

"OnCalculate(): k = 0"- は常に

"OnChartEvent(): k = 0,...,123332"- 0から...までをカウントします。

どうしてこうなるのか、どうして!?何か解決する方法はありますか?お分かりになる方がいらっしゃいましたら、ご回答をお願いいたします。

追伸:この不具合はstrategy testerでのみ 発生し、実時間ではすべて正常に動作します。

こんばんは。ターミナルとストラテジーテスターは異なるプログラムであり、テスターとターミナルのExpert Advisor/Indicatorの性能は異なる可能性があります。クライアント端末ではうまくいくことが、Strategy Testerではうまくいかないことがよくあります。サービスデスクに連絡し、証明書を提出し、修理を依頼する。
 
Tapochun:
こんばんは。ターミナルとストラテジーテスターは異なるプログラムであり、テスターとターミナルのEA/インジケーターの動作は大きく異なる可能性があるためです。クライアント端末ではうまくいくことが、Strategy Testerではうまくいかないことがよくあります。サービスデスクに連絡して、証明書を提出し、修理を依頼してください。
ありがとうございました。問題が私でなくてよかった)
 
extern string Symbol1= "EURUSD";
extern string Symbol2= "GBRUSD";

  double Sell1=iFractals(Symbol1,240,MODE_UPPER,2);
  double Sell2=iFractals(Symbol2,240,MODE_UPPER,2);
Sell1とSell2のフラクタルが同時に開かれたときに、注文が開かれるようにするには、どのようなコマンドを書けばよいか教えてください。