HELP!!MT4からMT5へインジケーターを変換する。 - ページ 5 1234567891011 新しいコメント Andrey 2017.02.01 10:18 #41 こんにちは、私はmql4からmql5へのインジケータを変換 しようとしています。基本的には、赤いバーが表示されたときに、MFIで音で通知してくれればいいのです。今、このサウンドコードを新しいmfiに取り付けるにはどうしたらいいのでしょうか?旧作動バージョンの例を添付しました。 ファイル: MFI_6Modeds.mq4 6 kb Vitaly Muzichenko 2017.02.24 03:14 #42 正しい方法を教えてください、これはヒーケン・アシ計算ですスタンダードからの切り抜きですfor(i=pos/*pos=1*/; i<rates_total ;i++) { haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<< haClose=(Open[i]+High[i]+Low[i]+Close[i])/4; haHigh=MathMax(High[i],MathMax(haOpen,haClose)); haLow=MathMin(Low[i],MathMin(haOpen,haClose));Openは 前のバーで検索されるべきなのに、なぜコードの次のバーで検索されるのだろうという疑問が湧いてくる。おそらくこの方法で正しいのか、それとも私が何か誤解しているのか。haOpen=(ExtOpenBuffer0[i+1]+ExtCloseBuffer0[i+1])/2; ありがとうございました。 Alexey Viktorov 2017.02.24 07:15 #43 Vitaly Muzichenko:正しい方法を教えてください、これはヒーケン・アシ計算ですスタンダードからの切り抜きですfor(i=pos/*pos=1*/; i<rates_total ;i++) { haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<< haClose=(Open[i]+High[i]+Low[i]+Close[i])/4; haHigh=MathMax(High[i],MathMax(haOpen,haClose)); haLow=MathMin(Low[i],MathMin(haOpen,haClose));Openは 前のバーで検索されるべきなのに、なぜコードの次のバーで検索されるのだろうという疑問が湧いてくる。これは正しいに違いない、それとも私が何かを誤解しているのだろうか?haOpen=(ExtOpenBuffer0[i+1]+ExtCloseBuffer0[i+1])/2; ありがとうございました。 mql5では、バーインデックスの方向は デフォルトで行われます。したがって、[i-1]はちょうど右側の最初の小節になります。 Vladimir Karputov 2017.02.24 07:30 #44 Vitaly Muzichenko:正しい方法を教えてください、これはヒーケン・アシ計算ですスタンダードからの切り抜きですfor(i=pos/*pos=1*/; i<rates_total ;i++) { haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<< haClose=(Open[i]+High[i]+Low[i]+Close[i])/4; haHigh=MathMax(High[i],MathMax(haOpen,haClose)); haLow=MathMin(Low[i],MathMin(haOpen,haClose));Openは 前のバーで検索されるべきなのに、なぜコードの次のバーで検索されるのだろうという疑問が湧いてくる。おそらく正しい方法なのか、それとも私が何か誤解しているのか。haOpen=(ExtOpenBuffer0[i+1]+ExtCloseBuffer0[i+1])/2; ありがとうございました。チャートの一番右と一番左の棒がどの指数なのかを正確に知るには、次のような簡単な方法があります。どのインディケータでも、MetaEditorで、OnCakculate()内の最初の操作でブレークポイントを置く(ステップ1)。過去データでデバッグを開始する。ブレークポイントでデバッグを開始すると同時に、デバッグが一時停止されます。そして、"time[rates_total-1]" と "time[0]" という2つの式を観測に追加します(ステップ2、3)。さて、この状況(time[]配列のインデックスの方向が デフォルトで、ArrayAsSeriesが適用されていない)において、要素time[rates_total-1]がグラフの一番右のバーになることが簡単にわかります(ステップ4)。この単純明快な方法が、インジケータにおけるインデックスの方向性を素早く確認するための一助となれば幸いです。 Vitaly Muzichenko 2017.02.24 08:42 #45 Alexey Viktorov: mql5では、バーインデックスの方向はデフォルトで行われます。したがって、[i-1]は右から1番目の小節になります。大まかに理解できたので、ArraySetAsSeriesの使い 方を忘れないようにします。問題は、mql4とmql5の両方のコードで、同じ「i-1」計算が適用されていることです。式に未来のバーではなく、前のバーと書いてあるのに、なぜ減算するのですか?ウラジーミル・カルプトフチャートの右端と左端のバーがどのインデックスなのかを正確に知るには、次のような簡単な方法があります。どのインディケータでも、MetaEditorで、OnCakculate()内の最初の操作でブレークポイントを置く(ステップ1)。過去データでデバッグを開始する。ブレークポイントでデバッグを開始すると同時に、デバッグが一時停止されます。そして、"time[rates_total-1]" と "time[0]" という2つの式を観測に追加します(ステップ2、3)。さて、この状況(time[]配列のインデックスの方向がデフォルトで、ArrayAsSeriesが適用されていない)において、要素time[rates_total-1]がグラフの一番右のバーになることが簡単にわかります(ステップ4)。この単純明快な方法が、指標における指標の方向性を素早く確認するための一助となれば幸いです。ありがとうございます、意識していませんでした。計算の正しさについて、何かご指摘はありますか? xak512 2017.03.04 20:06 #46 こんにちは。CCI ARROWSインジケーターのアラートを作りたいのですが。矢印が表示されたら、すぐに信号を出してほしい。MT5 ファイル: volatility-75-index-m5-binary-limited.png 32 kb xo6aj_ZIP_-_WinRAR.zip 12 kb Mihail Marchukajtes 2017.03.07 14:39 #47 みなさん、こんにちは!!!MT5でインジケーターを改造し始めたのですが、iTimeの関数が 理解できず、動作させることができません、どなたかインジケーターを動作する状態にドーピングしていただけないでしょうか?インジケーターが読み込むファイルは、MQL5 ⇄Files⇄evolution-dvoid⇄フォルダー内にあります。ダウンロード後、.csvにリネームしてください。ありがとうございました。 ファイル: eVOLution-dvoid.1.3_j1g.mq5 31 kb dvoid-BP.txt 4 kb Olexiy Polyakov 2017.03.27 19:53 #48 私はプログラマーではありませんが、友人の一人が、Bill Williams'Market Facilitation Index(BW MFI)のコードでは、計算が古典的な式に厳密に従って 行われていない、と言っています。 bw mfi = (高-低) / ボリューム さらに、いくつかの追加データ補正が行われます。これは実際にはエラーであり、その結果、インジケータ 不正確なデータを表示する!インジケーターのこのエラーを修正する方法(追加データの補正を削除する)をアドバイスしていただき、受信してください。 式に忠実に動作するインジケータです。bw mfi = (high - low) / volume ?・・・・・・・?//+------------------------------------------------------------------+//|MarketFacilitationIndex.mq5||MarketFacilitationIndex.//| 著作権 © 2009, MetaQuotes Software Corp.//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright "2009, MetaQuotes Software Corp.#プロパティリンク "http://www.mql5.com"//--- インジケータ設定#property indicator_separate_window#property indicator_buffers 2#property indicator_plots 1#property indicator_type1 DRAW_COLOR_HISTOGRAM#property indicator_color1 ライム、サドルブラウン、ブルー、ピンク#property indicator_width1 2//--- 入力パラメータinput ENUM_APPLIED_VOLUME InpVolumeType=VOLUME_TICK; //volumes//---- バッファdouble ExtMFIBuffer[];double ExtColorBuffer[];//+------------------------------------------------------------------+//| カスタムインジケータ初期化関数//+------------------------------------------------------------------+void OnInit(){//---- インジケータSetIndexBuffer(0,ExtMFIBuffer,INDICATOR_DATA)を設定します。SetIndexBuffer(1,ExtColorBuffer,INDICATOR_COLOR_INDEX)を設定します。//--- DataWindowの名前IndicatorSetString(INDICATOR_SHORTNAME, "BWMFI");//--- 精度を設定するIndicatorSetInteger(INDICATOR_DIGITS,_Digits)です。//----}//+------------------------------------------------------------------+//||//+------------------------------------------------------------------+void CalculateMFI(const int start,const int rates_total,const double &high[],const double &low[],const long &volume[]){int i=start;mfi_up=true、vol_up=true。//--- mfi_up と vol_up の最初の値を計算する。if(i>0){int n=iとする。while(n>0){if(ExtMFIBuffer[n]>ExtMFIBuffer[n-1]) { mfi_up=true; break; }.if(ExtMFIBuffer[n]<ExtMFIBuffer[n-1]) { mfi_up=false; break; }.//--- mfiの値が等しければ続けるn--;}n=iです。while(n>0){if(volume[n]>volume[n-1]) { vol_up=true; break; }.if(volume[n]<volume[n-1]) { vol_up=false; break; }.//--- 実量が同じなら続けるn--;}}//---while(i<rate_total && !IsStopped()){if(ボリューム[i]==0){if(i>0) ExtMFIBuffer[i]=ExtMFIBuffer[i-1];else ExtMFIBuffer[i]=0;}else ExtMFIBuffer[i]=(high[i]-low[i])/_Point/volume[i];//--- 変化を計算するif(i>0){if(ExtMFIBuffer[i]>ExtMFIBuffer[i-1]) mfi_up=true;if(ExtMFIBuffer[i]<ExtMFIBuffer[i-1]) mfi_up=false;if(volume[i]>volume[i-1]) vol_up=true;if(volume[i]<volume[i-1]) vol_up=false;}//--- 色を設定するif(mfi_up && vol_up) ExtColorBuffer[i]=0.0;if(!mfi_up && !vol_up) ExtColorBuffer[i]=1.0;if(mfi_up && !vol_up) ExtColorBuffer[i]=2.0;if(!mfi_up && vol_up) ExtColorBuffer[i]=3.0;i++;}}//+------------------------------------------------------------------+//| カスタムインジケータ反復関数//+------------------------------------------------------------------+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 start=0;//---if(start<prev_calculated) start=prev_calculated-1;//--- ティックまたはリアルボリュームで計算するif(InpVolumeType==VOLUME_TICK)とする。CalculateMFI(start,rates_total,high,low,tick_volume)を実行。さもなくばCalculateMFI(start,rates_total,high,low,volume)を実行。//--- 最後のmfiの値を正規化するif(rates_total>1){datetime ctm=TimeTradeServer(),lasttm=time[rates_total-1],nexttm=lasttm+datetime(PeriodSeconds());if(ctm<nexttm && ctm>=lasttm && nexttm!=lasttm){double correction_koef=double(1+ctm-lasttm)/double(nexttm-lasttm);ExtMFIBuffer[rates_total-1]*=correction_koef;}}//---return(rates_total);}//+------------------------------------------------------------------+ HELP !!!! convert an 事前計算された MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 Olexiy Polyakov 2017.04.01 19:33 #49 これはどのようなコードで、これをMT5のインジケーターにするにはどうしたらいいのか、教えてください。//これはボリュームベースのインジケータです。適切な音量で入力するようにしましょう。//スクワットバーは、売り買いは多いが値動きが少ない、強気と弱気の戦いである。//スクワットバーは、トレンドの終わりには85%の確率で上位3本または下位3本のうちの1本になります。//すべてのトレンドはスクワットで終わりますが、すべてのスクワットはトレンドの終わりではありません。study("Williams Squat Bars", shorttitle="Squat Bars", overlay=true)。r_hl=roc((high-low)/volume,1)r_v=roc(ボリューム,1)squat_f=(r_hl<0)かつ(r_v>0)バーカラー(squat_f ? blue : na) Alekseu Fedotov 2017.04.02 14:24 #50 Olexiy Polyakov:これはどのようなコードで、これをMT5のインジケータにするにはどうしたらいいのか教えてください。//これはボリュームベースのインジケータです。適切な音量で入力するようにしましょう。//スクワットバーは、売り買いは多いが値動きが少ない、強気と弱気の戦いである。//スクワットバーは、トレンドの終わりには85%の確率で上位3本または下位3本のうちの1本になります。//すべてのトレンドはスクワットで終わりますが、すべてのスクワットはトレンドの終わりではありません。study("Williams Squat Bars", shorttitle="Squat Bars", overlay=true)。r_hl=roc((high-low)/volume,1)r_v=roc(ボリューム,1)squat_f=(r_hl<0)かつ(r_v>0)バーカラー(squat_f ? blue : na) BW MFI スクワットバー、3バッファー(記憶が確かなら) 1234567891011 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは、私はmql4からmql5へのインジケータを変換 しようとしています。基本的には、赤いバーが表示されたときに、MFIで音で通知してくれればいいのです。今、このサウンドコードを新しいmfiに取り付けるにはどうしたらいいのでしょうか?
旧作動バージョンの例を添付しました。
正しい方法を教えてください、これはヒーケン・アシ計算です
スタンダードからの切り抜きです
{
haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<<
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
haHigh=MathMax(High[i],MathMax(haOpen,haClose));
haLow=MathMin(Low[i],MathMin(haOpen,haClose));
Openは 前のバーで検索されるべきなのに、なぜコードの次のバーで検索されるのだろうという疑問が湧いてくる。
おそらくこの方法で正しいのか、それとも私が何か誤解しているのか。
正しい方法を教えてください、これはヒーケン・アシ計算です
スタンダードからの切り抜きです
{
haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<<
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
haHigh=MathMax(High[i],MathMax(haOpen,haClose));
haLow=MathMin(Low[i],MathMin(haOpen,haClose));
Openは 前のバーで検索されるべきなのに、なぜコードの次のバーで検索されるのだろうという疑問が湧いてくる。
これは正しいに違いない、それとも私が何かを誤解しているのだろうか?
正しい方法を教えてください、これはヒーケン・アシ計算です
スタンダードからの切り抜きです
{
haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<<
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
haHigh=MathMax(High[i],MathMax(haOpen,haClose));
haLow=MathMin(Low[i],MathMin(haOpen,haClose));
Openは 前のバーで検索されるべきなのに、なぜコードの次のバーで検索されるのだろうという疑問が湧いてくる。
おそらく正しい方法なのか、それとも私が何か誤解しているのか。
チャートの一番右と一番左の棒がどの指数なのかを正確に知るには、次のような簡単な方法があります。
どのインディケータでも、MetaEditorで、OnCakculate()内の最初の操作でブレークポイントを置く(ステップ1)。
過去データでデバッグを開始する。ブレークポイントでデバッグを開始すると同時に、デバッグが一時停止されます。そして、"time[rates_total-1]" と "time[0]" という2つの式を観測に追加します(ステップ2、3)。さて、この状況(time[]配列のインデックスの方向が デフォルトで、ArrayAsSeriesが適用されていない)において、要素time[rates_total-1]がグラフの一番右のバーになることが簡単にわかります(ステップ4)。
この単純明快な方法が、インジケータにおけるインデックスの方向性を素早く確認するための一助となれば幸いです。
mql5では、バーインデックスの方向はデフォルトで行われます。したがって、[i-1]は右から1番目の小節になります。
大まかに理解できたので、ArraySetAsSeriesの使い 方を忘れないようにします。
問題は、mql4とmql5の両方のコードで、同じ「i-1」計算が適用されていることです。式に未来のバーではなく、前のバーと書いてあるのに、なぜ減算するのですか?
チャートの右端と左端のバーがどのインデックスなのかを正確に知るには、次のような簡単な方法があります。
どのインディケータでも、MetaEditorで、OnCakculate()内の最初の操作でブレークポイントを置く(ステップ1)。
過去データでデバッグを開始する。ブレークポイントでデバッグを開始すると同時に、デバッグが一時停止されます。そして、"time[rates_total-1]" と "time[0]" という2つの式を観測に追加します(ステップ2、3)。さて、この状況(time[]配列のインデックスの方向がデフォルトで、ArrayAsSeriesが適用されていない)において、要素time[rates_total-1]がグラフの一番右のバーになることが簡単にわかります(ステップ4)。
この単純明快な方法が、指標における指標の方向性を素早く確認するための一助となれば幸いです。
ありがとうございます、意識していませんでした。
計算の正しさについて、何かご指摘はありますか?
CCI ARROWSインジケーターのアラートを作りたいのですが。
矢印が表示されたら、すぐに信号を出してほしい。
MT5
みなさん、こんにちは!!!MT5でインジケーターを改造し始めたのですが、iTimeの関数が 理解できず、動作させることができません、どなたかインジケーターを動作する状態にドーピングしていただけないでしょうか?
インジケーターが読み込むファイルは、MQL5 ⇄Files⇄evolution-dvoid⇄フォルダー内にあります。
ダウンロード後、.csvにリネームしてください。
ありがとうございました。
私はプログラマーではありませんが、友人の一人が、Bill Williams'Market Facilitation Index(BW MFI)のコードでは、計算が古典的な式に厳密に従って 行われていない、と言っています。 bw mfi = (高-低) / ボリューム さらに、いくつかの追加データ補正が行われます。これは実際にはエラーであり、その結果、インジケータ 不正確なデータを表示する!
インジケーターのこのエラーを修正する方法(追加データの補正を削除する)をアドバイスしていただき、受信してください。
式に忠実に動作するインジケータです。bw mfi = (high - low) / volume ?・・・・・・・?
//+------------------------------------------------------------------+
//|MarketFacilitationIndex.mq5||MarketFacilitationIndex.
//| 著作権 © 2009, MetaQuotes Software Corp.
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp.
#プロパティリンク "http://www.mql5.com"
//--- インジケータ設定
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots 1
#property indicator_type1 DRAW_COLOR_HISTOGRAM
#property indicator_color1 ライム、サドルブラウン、ブルー、ピンク
#property indicator_width1 2
//--- 入力パラメータ
input ENUM_APPLIED_VOLUME InpVolumeType=VOLUME_TICK; //volumes
//---- バッファ
double ExtMFIBuffer[];
double ExtColorBuffer[];
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
void OnInit()
{
//---- インジケータ
SetIndexBuffer(0,ExtMFIBuffer,INDICATOR_DATA)を設定します。
SetIndexBuffer(1,ExtColorBuffer,INDICATOR_COLOR_INDEX)を設定します。
//--- DataWindowの名前
IndicatorSetString(INDICATOR_SHORTNAME, "BWMFI");
//--- 精度を設定する
IndicatorSetInteger(INDICATOR_DIGITS,_Digits)です。
//----
}
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void CalculateMFI(const int start,const int rates_total,
const double &high[],
const double &low[],
const long &volume[])
{
int i=start;
mfi_up=true、vol_up=true。
//--- mfi_up と vol_up の最初の値を計算する。
if(i>0)
{
int n=iとする。
while(n>0)
{
if(ExtMFIBuffer[n]>ExtMFIBuffer[n-1]) { mfi_up=true; break; }.
if(ExtMFIBuffer[n]<ExtMFIBuffer[n-1]) { mfi_up=false; break; }.
//--- mfiの値が等しければ続ける
n--;
}
n=iです。
while(n>0)
{
if(volume[n]>volume[n-1]) { vol_up=true; break; }.
if(volume[n]<volume[n-1]) { vol_up=false; break; }.
//--- 実量が同じなら続ける
n--;
}
}
//---
while(i<rate_total && !IsStopped())
{
if(ボリューム[i]==0)
{
if(i>0) ExtMFIBuffer[i]=ExtMFIBuffer[i-1];
else ExtMFIBuffer[i]=0;
}
else ExtMFIBuffer[i]=(high[i]-low[i])/_Point/volume[i];
//--- 変化を計算する
if(i>0)
{
if(ExtMFIBuffer[i]>ExtMFIBuffer[i-1]) mfi_up=true;
if(ExtMFIBuffer[i]<ExtMFIBuffer[i-1]) mfi_up=false;
if(volume[i]>volume[i-1]) vol_up=true;
if(volume[i]<volume[i-1]) vol_up=false;
}
//--- 色を設定する
if(mfi_up && vol_up) ExtColorBuffer[i]=0.0;
if(!mfi_up && !vol_up) ExtColorBuffer[i]=1.0;
if(mfi_up && !vol_up) ExtColorBuffer[i]=2.0;
if(!mfi_up && vol_up) ExtColorBuffer[i]=3.0;
i++;
}
}
//+------------------------------------------------------------------+
//| カスタムインジケータ反復関数
//+------------------------------------------------------------------+
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 start=0;
//---
if(start<prev_calculated) start=prev_calculated-1;
//--- ティックまたはリアルボリュームで計算する
if(InpVolumeType==VOLUME_TICK)とする。
CalculateMFI(start,rates_total,high,low,tick_volume)を実行。
さもなくば
CalculateMFI(start,rates_total,high,low,volume)を実行。
//--- 最後のmfiの値を正規化する
if(rates_total>1)
{
datetime ctm=TimeTradeServer(),lasttm=time[rates_total-1],nexttm=lasttm+datetime(PeriodSeconds());
if(ctm<nexttm && ctm>=lasttm && nexttm!=lasttm)
{
double correction_koef=double(1+ctm-lasttm)/double(nexttm-lasttm);
ExtMFIBuffer[rates_total-1]*=correction_koef;
}
}
//---
return(rates_total);
}
//+------------------------------------------------------------------+
これはどのようなコードで、これをMT5のインジケーターにするにはどうしたらいいのか、教えてください。
//これはボリュームベースのインジケータです。適切な音量で入力するようにしましょう。
これはどのようなコードで、これをMT5のインジケータにするにはどうしたらいいのか教えてください。
//これはボリュームベースのインジケータです。適切な音量で入力するようにしましょう。
BW MFI スクワットバー、3バッファー(記憶が確かなら)