僕にとってとても役に立つ記事だ。ライブラリを使えば、すべてがずっと簡単になる!
開発者へのお願い:High[i]、Low[i]を扱うクラスを書いてください。Open[i]、Close[i]。このクラスは誰にとっても役に立つと思います!この問題は自分なりに解決したのですが、テストに時間がかかるので、正しいかどうか自信がありません。
#include <Indicators\Series.mqh> double High[]; CiHigh z;
なぜこのコードでエラーが発生するのか
'1.mq5' 1.mq5 1 1
'Series.mqh' Series.mqh 1 1
'ArrayObj.mqh' ArrayObj.mqh 1 1
'Array.mqh' Array.mqh 1 1
'Object.mqh' Object.mqh 1 1
'StdLibErr.mqh' StdLibErr.mqh 1 1
'ArrayDouble.mqh' ArrayDouble.mqh 1 1
'CiHigh' - 型のない宣言 1.mq5 12 2
1 エラー(複数可)、0 警告(複数可) 2 1
どのようにして
例えば、High[2]をプリントする。
なぜこのコードはエラーになるのか
難しいことでなければ、どのようにして
例えば、High[2]を表示する。
ドキュメントに誤植があります。このクラスはTimeSeries.mqhファイルにあります。
使用例(スクリプトは現在のチャートの直近の3つのHighを表示する):
#include <Indicators\TimeSeries.mqh> //+------------------------------------------------------------------+ //| スクリプト番組開始機能| //+------------------------------------------------------------------+ void OnStart() { //--- double High[]; CiHigh z; int count=3; if(z.Create(_Symbol,_Period)==true) { if(z.GetData(0,count,High)==count) { for(int i=0; i<count; i++) Print(i,"=",High[i]); } else Print("取得に失敗しました",count,"時系列データ"); } else Print("時系列の作成エラー"); } //+------------------------------------------------------------------+
ドキュメントに誤植があります。このクラスはTimeSeries.mqhファイルにあります。
使用例(スクリプトは現在のチャートの直近の3つの高値を出力する):
しかし、私は基本的に時系列クラスのグループが 好きではありません。なぜなら、基本的に時系列クラスはすべて1つのメソッドで構成され、機能性よりも説明的な部分が多く、通常は特定のツールのすべての時系列を持つ必要があるからです:
struct str_bars{ datetime time[]; // 現在のチャートの各バーの開始時刻を含む時系列配列 double open[]; // 現在のチャートの各バーの始値を含む時系列配列。 double close[]; // 現在のチャートの各バーの終値を含む時系列配列。 double high[]; // 現在のチャートの各バーの最高値を含む時系列配列。 double low[]; // 現在のチャートの各バーの最低価格を含む時系列配列。 }; struct str_info{ double point; // クォート通貨での現在の商品ポイントサイズ int spread; // 現在のスプレッド }; //____________________________________________________________________ class currency { public: //---- данные MqlTick TICK; // ティックデータ str_bars BAR; // 時系列データ str_info INFO; // ツール情報 int error; //---- методы int create(string sym,ENUM_TIMEFRAMES period, int numbars); int refresh(void); private: string symbol; ENUM_TIMEFRAMES per; int num; datetime lastbar_time; int tmpint1,tmpint2; int ch_load(void); }; //____________________________________________________________________
もちろん、このクラス自体はrefresh()メソッドを呼び出すことでデータを受け取る。
記事に誤りがある
double lot_price = myaccount.MarginCheck(_Symbol,otype,Lot); // ロット価格/必要なマージン数
であるべきだ。
double lot_price=myaccount.MarginCheck(_Symbol,otype,Lot,price); //--- ロット価格/必要なマージン数
素晴らしい記事だ。著者に感謝します。注文を出す前にStop_Levelをチェックすることと、スプレッドの値をチェックすることも書きたいと思います。スプレッドが変動している場合、高い値では利益にならないため、市場に参入できないからです。これにより、Expert Advisorはニュース中に取引を行わないようにすることができます。また、乖離についてもチェックしたいと思います。また、ライブラリに関する質問もあります。関数とは何でしょうか(どのような処理を表し、記述するのでしょうか)。
フリーズレベル
凍結 取引操作の距離をポイントで取得する。
| int FreezeLevel() const |
を簡単な言葉で説明してください。
そしてもう一つ質問です。例えば、現在の時点(仮に10ポイントとします)のStop_Levelのリミットを知ることができます。SL=10ポイントの注文を発注します。例えば1時間後、価格は注文で指定された価格に達しますが、この時点のStop_Levelは例えば15ピップスです。保留中の注文は機能するのでしょうか、それとも拒否されるのでしょうか。また、価格が注文で指定された価格に到達したが、スプレッドが変更された場合、注文を開始した時点の予想価格に対して、より悪い価格でエントリーまたはエグジットが可能であるということですか、それとも注文はまったく機能しないということですか?
入札が印刷されないのはなぜですか?
以下は作業ログです。
2011.01.31 20:20:18 00(eurusd,m1) eurusd 0
コード
#include <Trade\SymbolInfo.mqh> //--- CSymbolInfo クラス CSymbolInfo my_symbol; //--- CSymbolInfo クラスのオブジェクト //+------------------------------------------------------------------+ //| エキスパート初期化関数| //+------------------------------------------------------------------+ int OnInit() { return(0); } //+------------------------------------------------------------------+ |エキスパート初期化関数| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| エキスパート・ティック機能| //+------------------------------------------------------------------+ void OnTick() { my_symbol.Name(_Symbol); my_symbol.Refresh(); Print(_Symbol," ",my_symbol.Bid()); } //+------------------------------------------------------------------+
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事 Expert AdvisorプログラミングにおけるMQL5標準トレードクラスライブラリの使用 はパブリッシュされました:
作者: Samuel