struct trade_settings
{
ulong slippage; // значение допустимого проскальзывания, но потом наверняка понадобится приведение в int перед подстановкой в OrderSend()
double take; // значения цены фиксации прибылиdouble stop; // значение цены защитного стопа
};
int スリッページを最初に置くと、4 バイトが割り当てられるので、8 バイトに足すか(int リザーブ)、int の代わりに long を使用します。
ヘルプより引用
Внимание: данный пример иллюстрирует неправильно спроектированные данные.
Лучше было бы сначала объявить данные take и stop большего размера типа double, а затем объявить член slippage типа uchar.
В этом случае внутреннее представление данных будет всегда одинаково независимо от значения
アライメントを必要としない正しい選択肢は、次のとおりです。
struct trade_settings
{
double take; // значения цены фиксации прибылиdouble stop; // значение цены защитного стопаint slippage; // значение допустимого проскальзывания
};
もちろん、そうなのですが......。
設計の正しさを強く疑う
ここでhttps://www.mql5.com/ru/forum/119342 はターミナルで利用可能なシンボルのリストを取得する良い機能です。この場合、このアカウントで注文シンボルとブローカーシンボル名を比較することにあまり意味を感じませんが、他のケースでは非常に便利です。
そしてこの場合、サフィックスを除外するために
教えてもらえますか?どのような設定かという項目はどこですか。つまり、レイアウト、チェックボックス、矢印などです。
どんな内容なのか、解読してください。
私たちが話していることを読み解いてください。
ありがとうございます。
条件は成立しているが、エラーはコードの別の部分にあった。:)
ヘルプには、次のように書かれています。
"MQL4では、構造要素がアライメント なしで互いに直接追従することに留意してください。"
アライメントとは どういう意味ですか?
私の理解が正しければ、整列された要素は次のようになります。
とこのように整列しない。そうだろ?
驚いたのは、プログラミングでは「コンパイラは空白をスキップする」というのが基本なのに、ここでは「何かに影響する」ということが出てきたことです......。
ヘルプには、次のように書かれています。
"MQL4では、構造要素がアライメント なしで互いに直接追従することに留意してください。"
アライメントとは どういう意味ですか?
私の理解が正しければ、整列された要素は次のようになります。
とノンアラインでこんな感じです。コメントですべてを読み解く
еще 4 байта пропуска. Обеспечили выравнивание на границу 8 байт
構造体の各要素は、異なる型とそれに対応するバイト長を持つことができますが、各要素のメモリは同じように、最大メンバーで割り当てられます。この例では、ダブル8バイトです。
実際、構造体には3つの項目しかありませんが、最初の項目は1バイトしか占めないので、最後の2つの項目と揃えるために、さらに7バイトの「空」を割り当てなければなりません。具体的な構造については、次のように記述するとわかりやすいでしょう。
では、コンパイラは各要素に対して必要なバイト数を追加するのですか?スペースということですが、この例では必要ないのでしょうか?
ちなみに、もし
構造体の種類やバイト数は違っても、各項目のメモリは同じように最大メンバーで割り当てられます。この例では、ダブル8バイトです。
もしそうだとしたら、どうせ各要素に1つしかメモリが割り当てられていないのだから、構造体の要素をどのような順番で配置してもいいのでは?
では、コンパイラは各要素に対して必要なバイト数を追加するのですか?スペースということですが、この例では必要ないのでしょうか?
ちなみに、もし
もしそうで、どうせ1つの項目に1つのメモリしか割り当てられないのであれば、構造体の要素をどのような順番で並べたらよいのでしょうか?
int スリッページを最初に置くと、4 バイトが割り当てられるので、8 バイトに足すか(int リザーブ)、int の代わりに long を使用します。
ヘルプより引用
アライメントを必要としない正しい選択肢は、次のとおりです。
アドバイスお願いします。多通貨EAを書いていて、他の通貨のaskとbidを取り出し、正規化しますが、価格にまだ余分な桁があります。。
桁は 、できれば適切な記号から「抜き」て欲しい;)