MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
Вы хотите быстро проверить торговую идею, не тратя времени на программирование? Выберите в "Мастере MQL5" нужный тип торговых сигналов, подключите модули сопровождения позиций и управления капиталом - на этом вся работа закончена. Создайте свои реализации модулей или закажите их через сервис "Работа" - и комбинируйте новые модули с уже существующими.
Знание языков программирования теперь не является обязательным условием для создания торговых роботов. Если раньше это действительно служило непроходимым препятствием для реализации своих торговых стратегий, то появление Мастера MQL5 в корне изменило ситуацию. Начинающие трейдеры могут перестать тревожиться из-за отсутствия опыта программирования - с новым визардом, позволяющим быстро генерировать код советника, он не понадобится.
例えば、MACDのシグナルを見てみましょう。合計5つの買いシグナルと5つの売りシグナル(反転、シグナルラインとの交差など)が記載されています。これらの信号の値を任意のタイミングで取得する方法はありますか?つまり、各バーに対して10個の要素からなるベクトルを形成し、各要素が信号に対応し、1がその存在を示し、0が不在であることを示します。CSignalMACD クラスのどのメソッドを使用すれば、対応する値を得ることができますか?
残念ながら、この機能は標準機能としては提供されていません。
こんにちは、助けてください。私はロボットを作りました(初めてのロボット)。起動直後に「Expert initializing of robot (EURUSD,H1) failed」と表示されてシャットダウンしてしまう。それ以上の情報が見つからない。
以下は彼のコードである。
--------------------------------------
//+------------------------------------------------------------------+
|ロボット.mq5
//| 著作権 © 2012, MetaQuotes Software Corp.
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright"著作権 2012, MetaQuotes Software Corp.
#プロパティリンク "http://www.mql5.com"
#property version "1.00"
//+------------------------------------------------------------------+
//| インクルード
//+------------------------------------------------------------------+
#include <ExpertExpert.mqh>
//--- 利用可能な信号
#include <Expertrobot ↵Mqh>
//--- 利用可能な末尾
#include <ExpertTrailingTrailingNone.mqh>
//--- 利用可能な資金管理
#include <ExpertMoneyFixedLot.mqh>
//+------------------------------------------------------------------+
//| 入力
//+------------------------------------------------------------------+
//--- エキスパート用入力
input string Expert_Title ="robot"; // 文書名
ulong Expert_MagicNumber =24553; // (エキスパートマジック数
bool Expert_EveryTick =false; //--- メイン信号の入力。
//--- 主信号の入力
input int Signal_ThresholdOpen =10; // 開放する信号のしきい値 [0...100]
input int Signal_ThresholdClose =10; // 信号のしきい値でクローズ [0...100]
input double Signal_PriceLevel =0.0; // 取引を実行する価格レベル
input double Signal_StopLevel =50.0; // ストップロスレベル(単位:ポイント)
input double Signal_TakeLevel =50.0; // 利益確定レベル(単位:ポイント)
input int Signal_Expiration =4; // 保留注文の有効期限(単位:バー)
input int Signal_MaCross_FastPeriod=13; // My_MA_Cross(13,MODE_SMA,21,...) 高速MAの周期。
input ENUM_MA_METHOD Signal_MaCross_FastMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) 高速MAのメソッド。
input int Signal_MaCross_SlowPeriod=21; // My_MA_Cross(13,MODE_SMA,21,...) スローMAの周期
input ENUM_MA_METHOD Signal_MaCross_SlowMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) スローMAのメソッド。
input double Signal_MaCross_Weight =1.0; // My_MA_Cross(13,MODE_SMA,21,...) Weight [0...1.0] です。
//--- お金のための入力
input double Money_FixLot_Percent =10.0; // 割合
input double Money_FixLot_Lots =0.1; // 固定数量
//+------------------------------------------------------------------+
//| グローバルエキスパートオブジェクト
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int OnInit()
{
//--- エキスパートの初期化
if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
{
//--- 失敗
printf(__FUNCTION__+": エキスパートの初期化エラー");
ExtExpert.Deinit()を実行します。
return(-1)です。
}
//--- シグナルを作成する
CExpertSignal *signal=new CExpertSignal;
if(signal==NULL)
{
//--- 失敗
printf(__FUNCTION__+": error creating signal");
ExtExpert.Deinit()を実行します。
return(-2)です。
}
//---
ExtExpert.InitSignal(シグナル);
signal.ThresholdOpen(Signal_ThresholdOpen);
signal.ThresholdClose(Signal_ThresholdClose);
signal.PriceLevel(Signal_PriceLevel)。
signal.StopLevel(Signal_StopLevel)。
signal.TakeLevel(Signal_TakeLevel)です。
signal.Expiration(Signal_Expiration)。
//--- MA_Cross フィルタの作成
MA_Cross *filter0=new MA_Cross;
if(filter0==NULL)
{
//--- 失敗
printf(__FUNCTION__+": error creating filter0");
ExtExpert.Deinit()を実行します。
return(-3)です。
}
signal.AddFilter(filter0)を実行します。
//--- フィルタのパラメータを設定する
filter0.FastPeriod(Signal_MaCross_FastPeriod);
filter0.FastMethod(Signal_MaCross_FastMethod);
filter0.SlowPeriod(Signal_MaCross_SlowPeriod);
filter0.SlowMethod(Signal_MaCross_SlowMethod);
filter0.Weight(Signal_MaCross_Weight);
//--- 末尾のオブジェクトの作成
CTrailingNone *trailing=new CTrailingNone;
if(trailing==NULL)
{
//--- 失敗
printf(__FUNCTION__+": error creating trailing");
ExtExpert.Deinit()を実行します。
return(-4)です。
}
//--- エキスパートに末尾を追加 (自動的に削除されます)
if(!ExtExpert.InitTrailing(trailing))とする。
{
//--- 失敗
printf(__FUNCTION__+": error initializing trailing");
ExtExpert.Deinit()を実行します。
return(-5)です。
}
//--- 後続のパラメータを設定する
//--- 貨幣オブジェクトの作成
CMoneyFixedLot *money=new CMoneyFixedLot;
if(money==NULL)
{
//--- 失敗
printf(__FUNCTION__+": error creating money");
ExtExpert.Deinit()を実行します。
return(-6)です。
}
//--- エキスパートへの資金投入(自動的に削除されます))
if(!ExtExpert.InitMoney(money))とする。
{
//--- 失敗
printf(__FUNCTION__+": お金の初期化エラー");
ExtExpert.Deinit()を実行します。
return(-7)です。
}
//--- マネーパラメータの設定
money.Percent(Money_FixLot_Percent)です。
money.Lots(Money_FixLot_Lots);
//--- すべての取引オブジェクトのパラメータをチェックする
if(!ExtExpert.ValidationSettings())
{
//--- 失敗
ExtExpert.Deinit()を実行します。
return(-8)です。
}
//--- 必要なすべてのインジケータのチューニング
if(!ExtExpert.InitIndicators())
{
//--- 失敗
printf(__FUNCTION__+": インジケータの初期化エラー");
ExtExpert.Deinit()を実行します。
return(-9)です。
}
//--- OK
return(0)です。
}
//+------------------------------------------------------------------+
//| 専門家の初期化関数
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
ExtExpert.Deinit()を実行します。
}
//+------------------------------------------------------------------+
//| イベントハンドラ機能「Tick」(ティック
//+------------------------------------------------------------------+
void OnTick()
{
ExtExpert.OnTick()。
}
//+------------------------------------------------------------------+
//| トレード」イベントハンドラ機能
//+------------------------------------------------------------------+
void OnTrade()
{
ExtExpert.OnTrade()。
}
//+------------------------------------------------------------------+
//| イベントハンドラ「Timer」関数
//+------------------------------------------------------------------+
void OnTimer()
{
ExtExpert.OnTimer()。
}
//+------------------------------------------------------------------+
何が問題なのでしょう。まずどこを見ればいいのかもわからない。
ありがとうございました。
こんにちは、助けてください。私はロボットを作りました(初めてのロボット)。起動直後に「Expert initializing of robot (EURUSD,H1) failed」と表示されてシャットダウンしてしまう。それ以上の情報が見つからない。
情報が足りない。
必要性
#include <Expert\robot\robot.mqh>
起動時のパラメータ(テスター/ターミナル、サーバー、ペア、タイムフレームなど)が必要です。
PS ソースコードはファイルとして添付した方が良い。
MQL5 Wizardに関する質問です。
1) //--- お金のための入力
input double Money_FixLot_Percent =10.0; // パーセント
input double Money_FixLot_Lots =0.1; // 固定音量
これらのパラメータは何を意味するのでしょうか?そして、それらはどのように関係しているのでしょうか?
2) 保留注文を出すEAを生成 することはできますか?もしそうなら、どのように?
3) Signal_Expiration変数とは何ですか?どのように使用するのですか?
MQL5 Wizardに関する質問です。
1) //--- お金のための入力
input double Money_FixLot_Percent =10.0; // パーセント
input double Money_FixLot_Lots =0.1; // 固定音量
これらのパラメータは何を意味するのでしょうか?そして、それらはどのように関係しているのでしょうか?
2) 保留注文を出すEAを生成 することはできますか?もしそうなら、どのように?
3) Signal_Expiration変数とは何ですか?どのように使うのですか?
1) Money_FixLot_Percent パラメータは、「強制停止」のレベルを設定するために使用します。触れないでください。
Money_FixLot_Lots パラメータは、Expert Advisor が市場に参入する固定量 (ロット) を設定します。
これらのパラメータは相互に関連することは一切ありません。
2) ウィザードで生成されたExpert Advisorは、保留中の注文を取引することができます。そのために、 ..._PriceLevel パラメータを使用します。このパラメータの値によって、Expert Advisorは次のように動作します。
0 - マーケットエントリーは現在の価格で行われます。
>0 - 保留の指値注文を使用してマーケットエントリーが行われます (このパラメータの値によって現在の価格よりも有利になります)。
<0 - 市場参入は、保留中のストップ注文(パラメータ値で現在の価格より悪い)を使用して行われます。
3) Signal_Expiration パラメータは、保留中の注文の有効期限(現在の時間枠のバー単位)を設定します。
MQL5ウィザードでEAを 生成した場合、そのようなEAは同時にいくつの注文を開くことができますか?どのように規制されているのですか?
MQL5ウィザードでEAを 生成した場合、そのようなEAは同時にいくつの注文を開くことができますか?どのように制御しているのですか?
1オーダーです。規制されていない。
ウィザードは、ストラテジーテストのために設計されています。それ以上求めるなら、「ファイリング」(手書き)が必要です。
2)ウィザードで 生成されたEAは すべて、保留中の注文を取引することができます。そのために、 ..._PriceLevel パラメータを使用します。このパラメータの値によって、Expert Advisorは次のように動作します。
0 - マーケットエントリーは現在の価格で行われます。
>0 - 保留の指値注文を使用してマーケットエントリーが行われます (このパラメータの値によって現在の価格よりも有利になります)。
<0 - 市場参入は、保留中の逆指値注文(パラメータ値で現在の価格より悪い)を使用して行われます。
PriceLevelパラメータは、どのような単位で測定されますか?ポイントでは?例えば、現在の価格より20ピップ高いところに保留中のストップオーダーを置きたい場合です。
PriceLevel =-0.0020 と設定すればいいのでしょうか?