エラー、バグ、質問 - ページ 444

 
Interesting:
トレーディングセッションとクォートセッションは問題解決に役立たない?

残念ながら、そうではありません。契約仕様によると、見積もりセッションは月曜日の00:00:00に開始されます。
実は、ここで ロッシュは、見積もりセッションの開始は、その中の見積もりの可用性を保証 するものではないという答えを出しています。それは、原理的には理解できることです。

今のところ、以下のチェックという形で「松葉づえ」を使っています。

input int TTL = 10; // Время "жизни" котировки
...
void Trade() {
  ...
  if (TimeCurrent() - SymbolInfoInteger(Instrumet, SYMBOL_TIME) > TTL) return;
  ...
  // Далее отправка торгового приказа на сервер.
}

どなたか、もっとエレガントな解決策を教えていただけるとありがたいのですが(多通貨のユーザーは皆、これに遭遇しているはずです)。

追伸
Konstantin Gruzdevは、彼の記事Implementing multicurrency mode in MetaTrader 5で、エレガントなバリエーションを提供しています。
しかし、このバリエーションではチャンピオンシップの条件を満たせません。

 
voix_kas:

うっそー...。というのが神経を逆なでする。:))最後の行は掲示板の投稿を手書きで修正したものなので、お許しください。=)
ところで、あなたのコードもコンパイルされませんでした(最後の行に閉じ括弧を入れるのを忘れていました)。:-Р
しかも、2〜3倍遅くなる(今、スクリプトで確認した)のですが、チェックの質は同じです。:-Р

とにかく、有効な整数を決定する適切なコードがない以上、私はComposterのアドバイスに従って、音量を小数点以下8桁まで正規化することにします。
落とし穴がないことを祈ります。

:)
 
voix_kas:
OrderCheckが 効かない?


 

参考

Функцию Sleep() нельзя вызывать из пользовательских индикаторов, так как индикаторы выполняются в интерфейсном потоке и не должны его тормозить.

本当に、本当に無理なのか、本当にやろうと思えばできるけど、慎重に?:)


インジケータから他のシンボルのデータにアクセスする際の問題。

ダニがいなければ)

 
Swan:
OrderCheckが効かない?

いや、トレードの前に一行書くんだ。

if (!OrderCheck(TradeRequest, TradeCheckResult) || (TradeCheckResult.retcode != TRADE_RETCODE_DONE)) return;

ログにはまだエラーが残っています。:(

 

また、ロットの正規化についてはどうでしょうか。

みんな、なぜ理論武装するんだ?

最小ロットよりロット増が大きくなる状況は不合理です。さて、min = 0.1、step = 1.0を想像してみてください。では、1.1、2.1、3.1、...の区画だけが許可されるのですか?これはナンセンスだ。

算数やプログラミングを鍛えていれば、選択肢は勝てる。しかし、応用的な(取引的な意味での)プログラミングの話であれば、lot_step > lot_min で、重大なエラーで プログラムを終了させ、ブローカーを緊急に変更しなければなりません、通常サーバーを設定する人の給料分もありませんから)。

何事もほどほどが大切です。私のバリアントは、異なるブローカー、口座タイプ、商品で、5年以上リアルで動作しています - エラーは一度もありませんでした。
Документация по MQL5: Программы MQL5 / Ошибки выполнения
Документация по MQL5: Программы MQL5 / Ошибки выполнения
  • www.mql5.com
Программы MQL5 / Ошибки выполнения - Документация по MQL5
 

コンポーザー
なぜ不条理なのか?簡単な例として、min_lot = 1.0, min_step = 0.3としてみましょう。という原則を満たすものである(min_lot >= lot_step).:)
正規化機能に1.3ロットのボリュームを渡すのです。そこから1.2ロットを返却します。
アップグレード版では1.3が返却されます。そのステップは、ゼロからではなく、最小ロットからという「正しい」ものです。

また、「1.0、0.1、0.01など」以外の「生活上の」ステップの存在も問題です。
ここでは、起こりうる仮定のエラーの解決に比べ、問題のコスト(パフォーマンスの損失)は無視できるほど小さいと思われます。IMHO
結局、ゼロからではなく、最小ロットからのステップという数え方の方が正しいだけなのです。

 
与えられた金額(例えば1234.56が唯一の入力パラメータ)で、現在のシンボルと価格で可能な限り最大のロット数を購入する既製のコードは どこかにありますか?内部では、最大量、最小量、正規化、レバレッジ会計、資金の十分性など、あらゆる種類のチェックが行われているはずです。要は、コードが買いを入れて、お金がない(あるだけ買う)、何かのチェックが失敗した(成功させる)、注文は入ったが買いが入っていない(死ぬが、買わずに帰ってこない)など、私に迷惑をかけないことです。 CTradeなどのクラスのどこかにこれがあることは理解しているのですが、どうでしょう?しかし、そこから何かをコピーするのは、そう簡単なことではありません。MQL5の言語ではなく、自分自身のアルゴリズムを扱いたいのです。
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
voix_kas:

いや、取引する前に一行書くんだ。

ログにはまだエラーが残っています。:(

見てみると、チャンピオンシップ口座では、すべての商品が同時に取引されている。登録)


TradeCheckResult.retcode != TRADE_RETCODE_DONE

この条件ではちょっと......。


この条件が正しいかどうかはわからない。

if(現在の価格== 0.0) return;

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
voix_kas:

コンポーザー
なぜ不条理なのか?簡単な例として、min-lot = 1.0、min-pitch = 0.3としてみましょう。という原則を満たしている(min_lot >= lot_step)。:)
正規化機能に1.3ロットのボリュームを渡すのです。そこから1.2ロットを返却します。
アップグレード版では1.3が返却されます。その歩みは、ゼロからではなく、最小ロットからという「正しい」ものです。

また、「1.0、0.1、0.01など」以外の「生活上の」ステップの存在も問題です。
ここでは、起こりうる仮定のエラーの解決に比べれば、問題のコスト(パフォーマンスの損失)は無視できるほど小さいと思われます。IMHO
結局、ゼロからではなく、最小ロットからのステップという数え方が正しいだけなのです。

"最小ロット=1.0、最小ステップ=0.3 "というのも無茶な話です。ステップは最小ロットの倍数であることが望ましい。

私はすでに自分の意見を述べました。数学とプログラミングの競技会では、min_lotの引き算の変種が勝つでしょう、それは実際の取引には必要ありません。

これ以上の議論は必要ないでしょう、みんな自分の道を切り開いてきたのですから)