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

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

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

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

Q&A

1回答

237閲覧

エラーメッセージの意味が分かりません。MT5

H-man

総合スコア0

MQL5

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

0グッド

0クリップ

投稿2024/03/24 13:25

実現したいこと

MT5で、自動でポジションを閉じるEAを作りたいです。

表示しているMA20を跨いでローソク足が確定した場合にポジションを閉じてほしいです。
買いポジションの場合は、MAを下回って確定したら自動決済です。売りポジションの場合は、MAを上回って確定したら自動決済です。複数ポジションを持っている場合にはポジションを指定できるようにしたいと思うのですが。

前提

ここに質問の内容を詳しく書いてください。
(例)
TypeScriptで●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

警告 56行目 28列 implicit conversion tom 'number' to 'string'
エラー1 60行目 22列 'PositionClose' - undeclared identifier  
エラー2 60行目 36列 'ticket' - some operator expected 

該当のソースコード

//+------------------------------------------------------------------+
//| CloseOnMA.mq5 |
//| Copyright 2024, MetaQuotes Software Corp. |
//| 1 |
//+------------------------------------------------------------------+
#property strict

// インクルード
#include <Trade\Trade.mqh>

// 入力パラメータ
input ENUM_MA_METHOD MA_Method = MODE_SMA; // MAの計算方法
input int MA_Period = 20; // MAの期間
input int MagicNumber = 123456; // マジックナンバー
input double LotSize = 0.1; // トレードロットサイズ
input int Slippage = 3; // スリッページ

// グローバル変数
int ma_handle; // MAのハンドル

// 初期化関数
void OnInit()
{
// MAを設定
ma_handle = iMA(NULL, 0, MA_Period, 0, MA_Method, PRICE_CLOSE);
}

// エントリーポイント
void OnTick()
{
// 現在の価格を取得
double current_price = SymbolInfoDouble(Symbol(), SYMBOL_BID);

// 現在のMAの値を取得 double ma_value = iMA(NULL, 0, MA_Period, 0, MA_Method, 0); // 買いポジションの場合、MAを下回ったらポジションをクローズ if (ma_value > current_price) { ClosePositionByType(POSITION_TYPE_BUY); } // 売りポジションの場合、MAを上回ったらポジションをクローズ else if (ma_value < current_price) { ClosePositionByType(POSITION_TYPE_SELL); }

}

// 指定したポジションタイプのポジションをすべて閉じる関数
void ClosePositionByType(ENUM_POSITION_TYPE position_type)
{
int total = PositionsTotal();
for (int i = total - 1; i >= 0; i--)
{
ulong ticket = PositionGetTicket(i);
if (PositionSelect(ticket))
{
if (PositionGetInteger(POSITION_TYPE) == position_type && PositionGetInteger(POSITION_MAGIC) == MagicNumber)
{
if (!PositionClose(ticket))
{
Print("Error closing position: ", GetLastError());
}
}
}
}
}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2024/03/25 02:23

「意味」だけだとGoogle翻訳などのサービスを利用すれば訳してくれるかと思いますが、それで足りないのであればそのあたりも記載されたほうが良いかと。 MQL5は分からないですけど、エラーメッセージは難しい説明文でもなく、多くの言語で同じような表現が使われてるので、意味はなんとなくは分かります。タイトル通りに「意味が分からないから意味が知りたい」”だけ”なのであれば、回答も「翻訳してみて」”だけ”になりますが(質問書いてる間にできるよーという意味)、それで良いのでしょうか(見てる人は赤の他人なので、書かれてることが全てです)。
guest

回答1

0

エラーメッセージをコピーして検索してください。
エラーが起きた時の対応方法を身に付けることが、H-man様の今後にとって最も有意に思います。

投稿2024/03/24 23:37

Refrain

総合スコア539

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問