質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.32%
MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

MQL5

MQL5(MetaQuotes Language 5)は、トレードロボットやカスタムインディケータを作成できる高レベル言語。MetaQuotes社の独自の取引プラットフォームのために開発されました。さまざまなサービスをリンクできるコミュニティも存在します。

Q&A

0回答

214閲覧

MQL5コードにコンバート

kohan

総合スコア10

MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

MQL5

MQL5(MetaQuotes Language 5)は、トレードロボットやカスタムインディケータを作成できる高レベル言語。MetaQuotes社の独自の取引プラットフォームのために開発されました。さまざまなサービスをリンクできるコミュニティも存在します。

0グッド

0クリップ

投稿2025/03/23 10:39

編集2025/03/24 23:09

実現したいこと

MT5のチャートに描画できるようにしたいです。

発生している問題・分からないこと

MQL4からMQL5にコンバートしているのですが、コンパイルは成功しているのですが、チャートに描画しないで全くどうしていいかわからないので、どなたか教えていただけませんか。。
チャットGPtとコパイロットとジェミニの無料版でなんとかコンバートできるところまではたどり着いたのですが、チャートに描画しないとなると、僕の知識では限界です。。
せっかくここまできたので、どなたか教えてくださいませんか、、よろしくお願いします。

エラーメッセージ

error

1エラーは出でないです。

該当のソースコード

//+------------------------------------------------------------------+
//| snake_alfa.mq5 |
//+------------------------------------------------------------------+
//| snake_alfa.mq5 |
//| Copyright 2025, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.01"
#property strict
#property indicator_chart_window

#property indicator_buffers 2
#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrWhite

// パラメーター
input int Snake_HalfCycle = 7; // Snake_HalfCycle
input int InpBars = 1000; // Custom_Bars

// バッファ
double Snake_Buffer[];
double TempBuffer[];

// 変数
double Snake_Sum, Snake_Weight, Snake_Sum_Minus, Snake_Sum_Plus;
int Snake_FullCycle;
int cnt = 0, cnt_lim = 8;

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int draw_begin;

int OnInit()
{
// バッファの設定
SetIndexBuffer(0, Snake_Buffer, INDICATOR_DATA);
SetIndexBuffer(1, TempBuffer, INDICATOR_CALCULATIONS);

// バッファ初期化
ArrayInitialize(Snake_Buffer, EMPTY_VALUE);
ArrayInitialize(TempBuffer, EMPTY_VALUE);

// その他の設定
Snake_FullCycle = Snake_HalfCycle * 2 + 1;
draw_begin = Snake_FullCycle;

PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, draw_begin);
PlotIndexSetInteger(0, PLOT_LINE_STYLE, STYLE_SOLID);
PlotIndexSetInteger(0, PLOT_LINE_WIDTH, 2);

return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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 FirstPos, ExtCountedBars = 0;

if(rates_total <= Snake_HalfCycle + draw_begin) return(0);

ExtCountedBars = prev_calculated;

if (ExtCountedBars < 0) return(-1);
if (ExtCountedBars > 0) ExtCountedBars--;
FirstPos = rates_total - ExtCountedBars - 1;

if(FirstPos > rates_total - Snake_HalfCycle - 1)
{
FirstPos = rates_total - Snake_HalfCycle - 1;
}

// Snake計算関数を呼び出し
Snake(FirstPos, rates_total, close, high, low);

// デバッグ用出力
Print("FirstPos: ", FirstPos, " rates_total: ", rates_total);

/// バッファ初期化処理改善
int buffer_clear_limit = MathMin(rates_total, InpBars);
for(int i = 0; i < rates_total - buffer_clear_limit; i++)
{
Snake_Buffer[i] = EMPTY_VALUE;
/

return(rates_total);
}

//+------------------------------------------------------------------+
//| Snake 計算ロジック |
//+------------------------------------------------------------------+
void Snake(int Pos, int rates_total, const double &close_array[], const double &high_array[], const double &low_array[])
{
if(Pos <= Snake_HalfCycle)
{
Pos = Snake_HalfCycle + 1;
}

for(int i = Pos; i >= 0; i--)
{
Snake_Buffer[i] = SnakeFirstCalc(i, close_array, high_array, low_array);
}
}

//+------------------------------------------------------------------+
//| Snake価格取得 |
//+------------------------------------------------------------------+
double SnakePrice(int Shift, const double &close_array[], const double &high_array[], const double &low_array[])
{
return ((2 * close_array[Shift] + high_array[Shift] + low_array[Shift]) / 4);
}

//+------------------------------------------------------------------+
//| Snakeの最初の計算 |
//+------------------------------------------------------------------+
double SnakeFirstCalc(int Shift, const double &close_array[], const double &high_array[], const double &low_array[])
{
double Sum = 0;
double Weight = 0;
for(int i = -Snake_HalfCycle; i <= Snake_HalfCycle; i++)
{
int index = Shift + i;
if(index >= 0)
{
Sum += (Snake_HalfCycle - MathAbs(i) + 1) * SnakePrice(index, close_array, high_array, low_array);
Weight += (Snake_HalfCycle - MathAbs(i) + 1);
}
}
return Sum / Weight;
}

上記の詳細・結果

全く解決ができないです、、

補足

特になし

追記 MQL4ファイルをドロップボックスに置きました。文字数制限を超えてしまうためです。
リンク内容

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2025/03/24 00:43

> MQL4からMQL5にコンバートしているのですが、コンパイルは成功しているのですが、チャートに描画しないで全くどうしていいかわからないので、 今現在動作していないMQL5のソースコードだけ載せてもこの質問の閲覧者には正しい動作は分かりません。もとのMQL4のソースコードも載せた方が良いですよ。 (その際はコメント欄ではなく、質問に追記、修正するかたちでお願いします) また、現在「プログラミング言語」のタグが付いていますが、teratailには「MQL」, 「MQL4」, 「MQL5」のタグもあるのでそちらも付けた方が良いと思います。
kohan

2025/03/24 10:05

MQL4のファイルをドロップボックスでアップしました。よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.32%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問