Именно с этой, улучшенной и дополненной версией мы и начнем работать, чтобы постепенно превратить ее в скальперский стакан цен. Краткий обзор графической библиотеки CPanel Созданию пользовательских интерфейсов в MQL5 посвящено много статей. Среди них особенно выделяется серия Анатолия Кажарского "Графические интерфейсы", после которой сложно...
アレクセイ、ありがとう!これで 無理が明らかになった。
たしかに、正確にはmql4は持っていませんね。CiOpenクラスで データを変更しようとしています。Updateメソッドで、配列の指定した位置の要素を変更する必要があるのですが、混乱しています。
変数/配列にコピーして、すでに作業してください。
だから、そうしました。
大変お世話になりました私はプログラミングはかなり初心者です。
勉強しているうちに、コードを実装することの難しさに直面しました。https://www.mql5.com/ru/articles/3336、どのように比較するのか理解できない記事があります。
if(!CompareTiks(n_tiks[i],m_ticks[k])) とする。
Template Data Collections」が使われていて、そのようなグローバルメソッド「Compare」があるのではと推測しています。しかし、この記事のリストには、コンパイラに "Data Template Collections" の "Compare" を使うことを理解させる方法がどこにも書かれていません。 Data Template Collections" のグローバルメソッドの例も見つかっていません。
グローバルメソッドの記述に以下の項目を追加しても、結果は変わりません。
template<typename T>
int Compare(
T x, // 最初の値
)T y // 2番目の値
);
その結果、次のようなコードになりました(というより、コードにやられました)。
#ifndef MyInclude
#define MyInclude
//template<typename T>
//interface ICollection
//#include <GenericInterfaces FilterICollection.T> //GenericInterfaces FilterICollection.mqh>
template<typename T>
int Compare(
T x, // 最初の値
)T y // 2番目の値
);
class CMarketBook
{
private:
string m_symbol;
MqlTick m_ticks[];
MqlTick LastTicks[];
を保護します。
public:
void CMarketBook::CompareTicks(void);
};
//+----------------------------------------------------------------+
//|2つのティックのコレクションを比較して新しいティックを見つける|
//+----------------------------------------------------------------+
void CMarketBook::CompareTicks(void)
{
MqlTick n_ticks[];
ulong T_begin = (TimeCurrent()-(1*20))*1000;//20sec ago
m_symbol = Symbol();
int Total = CopyTicks(m_symbol, n_ticks, COPY_TICKS_ALL, T_begin, 1000);
if (Total <)1) {printf("Failed to get ticks"); return;}
if (ArraySize(m_ticks) == 0) {ArrayCopy(m_ticks, n_ticks, 0, 0,WHOLE_ARRAY);return;}
int k = ArraySize(m_ticks)-1;
int n_t = 0;
int Limit_comp = 20;
int Comp_success = 0.です。
// 新しい受信ticksを試す
for (int i = ArraySize(n_ticks)-1; i>=0 && k>=0; i--)
{
if (!Compare(n_ticks[i], m_ticks[k]))
{
n_t = ArraySize(n_ticks) - i;
k = ArraySize(m_ticks) - 1;
Comp_success = 0;
}
else
{
Comp_success += 1;
if (Comp_success >= Limit_comp) break;
k--;
};
};
//受信したティックの記憶
ArrayResize(m_ticks, Total);
ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY);
//新しいティックの開始インデックスを計算して、アクセス用バッファにコピーする
ArrayResize(LastTicks, n_t);
if (n_t > 0)
{
int index = ArraySize(n_ticks) - n_t;
ArrayCopy(LastTicks, m_ticks, 0, index, n_t);
};
};
#endif
コンパイル時に、n_ticks[i] を指している if (!Compare(n_ticks[i], m_ticks[k])) という行に対して「オブジェクトは参照渡しのみ」というエラーが発生します。
皆さん、こんにちは。
Alpari MT4 Expert Advisorをテストしています。テストを行う前に、MTはスプレッド(現在の値または特定の値)を設定するよう指示します。
アルパリでは、スプレッドが浮いています。そのため、上記のようなスプレッドサイズの設定は、私には合いません。
Q. ヒストリーのティック毎のスプレッド値をヒストリーに表示させるオプションはありますか?
あるいは、注文の開始または終了時に有効なスプレッドの値を考慮して、EAで注文の開始と終了を行うにはどうすればよいでしょうか。
皆さん、ありがとうございました。
皆さん、こんにちは。
Alpari MT4 Expert Advisorをテストしています。テストする前に、MTはスプレッド値(現在の値または提示された特定の値)を設定するよう私に勧めます。
アルパリでは、スプレッドが浮いています。そのため、前述したスプレッド値ではうまくいかないのです。
Q. ヒストリカルティックごとのスプレッド値をヒストリに表示する機能はどれですか?
あるいは、注文の開始または終了時に有効なスプレッドの値を考慮して、EA の注文の開始と終了をどのように行うべきでしょうか。
皆さん、ありがとうございました。
MT4ではできませんが、MT5では可能です。
MT 4では不可、MT 5では可能です。
貴重な情報をありがとうございました。
mql5の勉強を始めます。mql4と 非常によく似ているそうです。 私のアイデアをmql5で実装 する方法を教えていただけると本当にありがたいです。
貴重な情報をありがとうございました。
mql5の勉強を始めます。mql4と 非常によく似ているとのことです。 mql5が私のアイデアを どのように実装して いるのか、教えていただけると幸いです。
mt5では、何も発明する必要はありません。
これはかっこいい。貴重な情報をありがとうございました。
mql4からmql5への 切り替えを素早く行うには、 mql4とmql 5のマニュアルを同時に読み 、それぞれの違いに 注意した方がよいでしょう。 何事も比較して学ぶ......。皆さん、ごきげんよう。
mql5の勉強を始めました。まず、注文の開け方を研究することから始めました。注文を開くためのコードは、別のインクルードファイルに書かれていることは理解しました。私は今、このコードと取引用の最終的なバリアントをマスターしています。mql 4のオーダーオープンは、 mql5より ずっと簡単でシンプルなことに驚きました。
注文を開くためのコードが書かれたファイルがすでにあり、このコードを書く必要がないのかどうか、お聞きしたいのです。もしそのようなファイルがどこかにあれば、それをEAに接続して、必要な注文パラメータの値を設定するだけでよいのでしょうか?もし、そのようなファイルがあれば、どこで、どのように見つけるのか、また、その名前は何なのか。
このファイルの名前と場所をお聞きしたいのですが。