mql5言語の特徴、微妙なニュアンスとテクニック - ページ 63 1...565758596061626364656667686970...247 新しいコメント Pavel Verveyko 2018.01.03 15:27 #621 4にそのような機能がありますが、MQL5でどのように実装すればよいでしょうか?Expert Advisorから呼び出されるインジケータを非表示に するフラグを設定します。void HideTestIndicators ( bool hide // флаг ); Konstantin Nikitin 2018.01.03 16:02 #622 fxsaberこのため、「タップ」EAを並列に動作させる、つまり補助チャートが必要です。この例では状況が多少異なります:チャートが1つあり、その上ですでにいくつかのEAが動作しています。そして、時には新しいインジケータを開かずにOrderSendを通過させたいと考えています。もちろん、DLLなしで、チャートが渡されるようにします。そのためにフクロウのオーダー取り可能パネルを追い込み、時々マニュアルモードでオーダーを落としますが、フクロウが取った通りになっています。 fxsaber 2018.01.03 17:45 #623 コンスタンチン・ニキーチンフクロウで発注できるようにしたのですが、たまにマニュアルで発注してもフクロウの通りになってしまうんです。当初は、インジケータ自体がOBJ_CHART 上でOrder-scriptを実行する場合の仕掛けでした。 fxsaber 2018.01.08 05:29 #624 後置演算子(演算子 ++ と演算子 --)は次のように定義されます。 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム ちょっとしたミスを発見する手助けが必要です。 whroeder1, 2014.07.07 11:37プリフィックス operator++ Postfix operator++ RaRev* RaRev::operator++(void){ // prefix RaRev RaRev::operator++(int){ // postfix Alexey Volchanskiy 2018.01.08 07:48 #625 パヴェル・ヴェルヴェイコ 4にはそのような関数がありますが、MQL5ではどのように実装するのでしょうか?Expert Advisorから呼び出されるインジケータを非表示にするフラグを設定します。こんな感じです、ヘルプをご覧ください。MQL5リファレンスガイド / カスタムインジケータ / サンプルにおけるインジケータスタイル / DRAW_NONE fxsaber 2018.01.09 09:20 #626 MQL4の熟練者にとっては、MQL5でTFを操作する古くからの方法があります。 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム CopyTicks」のテスト fxsaber, 2016.10.19 07:59 // Позволяет, как в MT4, работать с таймсериями: Open[Pos], High[Pos], Low[Pos], Close[Pos], Time[Pos], Volume[Pos].// А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume.#define DEFINE_TIMESERIE(NAME,FUNC,T) \ class CLASS##NAME \ { \ public: \ static T Get( const string Symb, const int TimeFrame, const int iShift ) \ { \ T tValue[]; \ \ return((Copy##FUNC((Symb == NULL) ? _Symbol : Symb, _Period, iShift, 1, tValue) > 0) ? tValue[0] : -1); \ } \ \ T operator []( const int iPos ) const \ { \ return(CLASS##NAME::Get(_Symbol, _Period, iPos)); \ } \ }; \ \ CLASS##NAME NAME; \ \ T i##NAME( const string Symb, const int TimeFrame, const int iShift ) \ { \ return(CLASS##NAME::Get(Symb, TimeFrame, iShift)); \ } DEFINE_TIMESERIE(Volume, TickVolume, long) DEFINE_TIMESERIE(Time, Time, datetime) DEFINE_TIMESERIE(Open, Open, double) DEFINE_TIMESERIE(High, High, double) DEFINE_TIMESERIE(Low, Low, double) DEFINE_TIMESERIE(Close, Close, double)おそらく、MQL4のアプローチは、ティックヒストリーを扱う際にも有用だと思う人がいるでしょう。// Позволяет работать с тиковой историей в MQL4-стиле struct TICK_HISTORY { const string Symb; TICK_HISTORY( const string sSymb = NULL ) : Symb(sSymb) { } const MqlTick operator []( const int Pos ) const { static const MqlTick NullTick = {0}; static MqlTick Ticks[]; return((::CopyTicks(this.Symb, Ticks, COPY_TICKS_INFO, 0, Pos + 1) > Pos) ? Ticks[::ArraySize(Ticks) - Pos - 1] : NullTick); } }; const TICK_HISTORY Tick;アプリケーションif (Tick[0].bid > Tick[100].bid) // сравниваем текущий и исторический тики Print("Hello World!"); if (High[0] > Close[100]) // https://www.mql5.com/ru/forum/42122/page24#comment_2904023 Print("Hello World!"); 初心者の方からの質問 MQL5 MT5 MetaTrader CopyTicks」のテスト Questions from Beginners MQL5 Pavel Verveyko 2018.01.10 01:43 #627 アレクセイ・ヴォルチャンスキー このようなことがあるようです、ヘルプをご覧ください。MQL5リファレンスガイド / カスタムインジケータ / サンプルにおけるインジケータスタイル / DRAW_NONE どうもありがとうございます、試してみます。SDはIndicatorReleaseがこうなるはずだと言っていました。 Konstantin 2018.01.11 05:58 #628 誰が遭遇したのか、構造体のフィールドの配置はアライメント的にどうするのが正しいのか。struct A { uchar arr[20]; // тут поля заполнители double val; }; struct B { double val; // тут поля заполнители uchar arr[20]; }; 構造体のアライメントは上から下へと進みますが、20個の要素を持つ配列の場合、Aの方法が正しいように思われます。 Denis Kirichenko 2018.01.11 07:39 #629 fxsaber MQL4の熟練者にとっては、MQL5でTFを操作する古くからの方法があります。// Позволяет, как в MT4, работать с таймсериями: Open[Pos], High[Pos], Low[Pos], Close[Pos], Time[Pos], Volume[Pos]. // А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume. #define DEFINE_TIMESERIE(NAME,FUNC,T) \ class CLASS##NAME \ { \ public: \ static T Get( const string Symb, const int TimeFrame, const int iShift ) \ { \ T tValue[]; \ \ return((Copy##FUNC((Symb == NULL) ? _Symbol : Symb, _Period, iShift, 1, tValue) > 0) ? tValue[0] : -1); \ } \ \ T operator []( const int iPos ) const \ { \ return(CLASS##NAME::Get(_Symbol, _Period, iPos)); \ } \ }; \ \ CLASS##NAME NAME; \ \ T i##NAME( const string Symb, const int TimeFrame, const int iShift ) \ { \ return(CLASS##NAME::Get(Symb, TimeFrame, iShift)); \ } DEFINE_TIMESERIE(Volume, TickVolume, long) DEFINE_TIMESERIE(Time, Time, datetime) DEFINE_TIMESERIE(Open, Open, double) DEFINE_TIMESERIE(High, High, double) DEFINE_TIMESERIE(Low, Low, double) DEFINE_TIMESERIE(Close, Close, double)アプリケーション...クラス全員をMacroに入れるのはいい方法だ。デバッガでこのようなクラスを扱うことができないのが残念です:-)( Koldun Zloy 2018.01.11 15:56 #630 コンスタンチン構造上、フィールドをどのように配置するかということに遭遇した人。 構造体のアライメントは上から下へ行うことになっていますが、20要素以下のメモリが割り当てられた配列があるので、Aの方法がある意味正しいのですMQLということであれば、アライメントはありません。また、C++ということであれば、struct Bの方がよいでしょう。しかし、いずれにせよC++のアライメントはプログラマー次第です。 1...565758596061626364656667686970...247 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Expert Advisorから呼び出されるインジケータを非表示に するフラグを設定します。
このため、「タップ」EAを並列に動作させる、つまり補助チャートが必要です。
この例では状況が多少異なります:チャートが1つあり、その上ですでにいくつかのEAが動作しています。そして、時には新しいインジケータを開かずにOrderSendを通過させたいと考えています。
もちろん、DLLなしで、チャートが渡されるようにします。
そのためにフクロウのオーダー取り可能パネルを追い込み、時々マニュアルモードでオーダーを落としますが、フクロウが取った通りになっています。
フクロウで発注できるようにしたのですが、たまにマニュアルで発注してもフクロウの通りになってしまうんです。
当初は、インジケータ自体がOBJ_CHART 上でOrder-scriptを実行する場合の仕掛けでした。
後置演算子(演算子 ++ と演算子 --)は次のように定義されます。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
ちょっとしたミスを発見する手助けが必要です。
whroeder1, 2014.07.07 11:37
4にはそのような関数がありますが、MQL5ではどのように実装するのでしょうか?
Expert Advisorから呼び出されるインジケータを非表示にするフラグを設定します。
こんな感じです、ヘルプをご覧ください。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
CopyTicks」のテスト
fxsaber, 2016.10.19 07:59
// А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume.
#define DEFINE_TIMESERIE(NAME,FUNC,T) \
class CLASS##NAME \
{ \
public: \
static T Get( const string Symb, const int TimeFrame, const int iShift ) \
{ \
T tValue[]; \
\
return((Copy##FUNC((Symb == NULL) ? _Symbol : Symb, _Period, iShift, 1, tValue) > 0) ? tValue[0] : -1); \
} \
\
T operator []( const int iPos ) const \
{ \
return(CLASS##NAME::Get(_Symbol, _Period, iPos)); \
} \
}; \
\
CLASS##NAME NAME; \
\
T i##NAME( const string Symb, const int TimeFrame, const int iShift ) \
{ \
return(CLASS##NAME::Get(Symb, TimeFrame, iShift)); \
}
DEFINE_TIMESERIE(Volume, TickVolume, long)
DEFINE_TIMESERIE(Time, Time, datetime)
DEFINE_TIMESERIE(Open, Open, double)
DEFINE_TIMESERIE(High, High, double)
DEFINE_TIMESERIE(Low, Low, double)
DEFINE_TIMESERIE(Close, Close, double)
おそらく、MQL4のアプローチは、ティックヒストリーを扱う際にも有用だと思う人がいるでしょう。
アプリケーション
このようなことがあるようです、ヘルプをご覧ください。
どうもありがとうございます、試してみます。SDはIndicatorReleaseがこうなるはずだと言っていました。
誰が遭遇したのか、構造体のフィールドの配置はアライメント的にどうするのが正しいのか。
構造体のアライメントは上から下へと進みますが、20個の要素を持つ配列の場合、Aの方法が正しいように思われます。MQL4の熟練者にとっては、MQL5でTFを操作する古くからの方法があります。
アプリケーション...
クラス全員をMacroに入れるのはいい方法だ。デバッガでこのようなクラスを扱うことができないのが残念です:-)(
構造上、フィールドをどのように配置するかということに遭遇した人。
構造体のアライメントは上から下へ行うことになっていますが、20要素以下のメモリが割り当てられた配列があるので、Aの方法がある意味正しいのですMQLということであれば、アライメントはありません。
また、C++ということであれば、struct Bの方がよいでしょう。
しかし、いずれにせよC++のアライメントはプログラマー次第です。