MQL5とMQL5 Cloud Networkのユニバーサル数学計算の追加サポートのために追加すべきものは何ですか? - ページ 6

 
Renat:

ここで、レナート。

MT5は、ストップロスがいつ発動され、テイクプロフィットがいつ発動されるかを明確に理解しています。// これは注文コメントからもわかるし、プラットフォームの処理自体からも明らかである。

そのために、(常に)要望があるのです。- SLやTPを有効にする際に、OnTradeTransactionに 適切なフラグを表示させたいのです。


しかし、適切な結合アーキテクチャがないためにこれが(理論的にも)不可能な場合は、プラットフォームのアーキテクチャが、このアクションに送られる注文にSLかTPかを確認するためのフラグを付けることを許さない、とだけ言っておいた方がいいでしょうね。

あなたにとって「不可能はない」という言葉はないのでしょうが。あなたはメタクオーツ :)

 

つまり、取引構造を見ることhttps://www.mql5.com/ru/docs/constants/structures/mqltradetransaction

TRADE_ACTION フィールドを追加します。

struct MqlTradeTransaction
  {
   ulong                         deal;             // Тикет сделки
   ulong                         order;            // Тикет ордера
   string                        symbol;           // Имя торгового инструмента
   ENUM_TRADE_TRANSACTION_TYPE   type;             // Тип торговой транзакции
   ENUM_TRADE_ACTION               action,            // Тип события, по какой причине выставлен ордер
   ENUM_ORDER_TYPE               order_type;       // Тип ордера
   ENUM_ORDER_STATE              order_state;      // Состояние ордера
   ENUM_DEAL_TYPE                deal_type;        // Тип сделки
   ENUM_ORDER_TYPE_TIME          type_time;        // Тип ордера по времени действия
   datetime                      time_expiration;  // Срок истечения ордера
   double                        price;            // Цена 
   double                        price_trigger;    // Цена срабатывания стоп-лимитного ордера
   double                        price_sl;         // Уровень Stop Loss
   double                        price_tp;         // Уровень Take Profit
   double                        volume;           // Объем в лотах
  };
発注の理由
SLトリガー
TPトリガー
ストップ・アウトによるポジションからの退出

などなど、あれば教えてください。
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торговой транзакции
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торговой транзакции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торговой транзакции - Документация по MQL5
 
sergeev:

レナトさん、ここがポイントです。

MT5では、ストップロスがいつ、テイクプロフィットがいつ発動されたかを明確に把握 することができます。// このことは、注文コメントを見ればわかりますし、プラットフォーム自体からも明らかです。

それが、彼はわかっていない、わかってはいけないのです。

すべてが実行キューを通過し、注文は単純な買い/売りに分割され、流動性プロバイダーや取引所へのゲートウェイを経由する。現実にどのように実行されるか(部分的なものも含めて)わからない。また、いきなり「旗を止めることを保証する」と宣言すると、明日にはパパクラスが「俺には効果がなかった!」と義憤に駆られて非難してくるでしょう。

 
Renat:

それが、現実にはそうではないし、そうであってはならないのです。

すべてが実行のキューで実行され、注文は単純なBUY/SELLに分割され、流動性プロバイダーや取引所へのゲートウェイを経由する。

はい、割れています。

しかし、この分割動作にはかなり特殊な動作が必要で、それはStop Loss/StackProfitを有効にすることです。そして、これらのアクションは、クライアント端末ではなく、MTのサーバーで処理 される。

ストップの有効化がMTで行われなくても、結果的にMT5で実際の注文やイベントが作成されます。

MT5サーバーの奥底に入り込めないことは承知していますが、今一度確認してください。注文の根拠となるアクションを通知することは可能ですか?

サーバー(またはゲートウェイ)がstoploop/stackprofit/stopoutなどを起動したら、とにかく注文を出すという対応になります。 // 注文がなければ何も起こりません!

そしてここに、この注文と適切なフラグを置く -この注文や イベントを配置する理由

 
TradeTransactionに特化した新しい構造を導入すべきだったのでは?
 
pronych:
TradeTransactionのためだけに、新しい構造を導入すべきだったのでは?

そんなに新しいものではありません :) 非常に完成度の高いものです。

不足しているフィールドは2つだけです。

- position identifier
- 発注理由

 
sergeev:

そう、割れるんです。

しかし、この分割のためのアクションは非常に特殊で、stoploop/stackprofitを有効にすることです。そして、この動作はクライアント端末ではなく、MTサーバーで処理 されます。

答えは簡単で、100%フラグが立つという保証はないのです。

なぜなら、トリガーとなるソースやイニシエーターは多数存在し、取引サーバーはそれだけではないからです。

 
Renat:

答えは簡単で、100%フラグが立つという保証はないのです。

なぜなら、ソースやトリガーは非常に多くあり、決してこれだけがトレードサーバーではないからです。

ストップロスの発動は、本当に複数のトレードサーバーで処理されるのでしょうか?

そのためには、トレーディングサーバーは1台あれば十分と思われました。

アクティベーションのために、オーダーが作成され、その旨がプラットフォームに通知されます。// 外部ゲートウェイによる
を流し込むと、トレードが出現します。
注文が満たされず、残りが取り下げられることは理解できる。
しかし、この注文が作成された時点で、それがストップロス注文であることを示すフラグを取引に追加することができます。
一番重要なのは、これがストップロスの注文であるという事象そのものです。

あるいは、MTでは、ストップロスがゲートウェイで処理される場合、注文なしで取引されることがあるのでしょうか。

しかし、あなたはよくご存じなので、私は反論しませんが、非常に微妙なところです。
 

papaklass:

そして、その話をするのは誰なのか?

間違いなくあなたです。

荒らす気満々じゃん、何言ってんだ?

身だしなみを整える。

 
Renat:

私たちとしては、端末を介さないエージェント間の独立した通信を考えています。例えば、あるエージェントが初期データを生成 し、フォアキャストで他のエージェント に送ることができます。

端末の関与がなければ、これでよいのです。

この「エージェントの一人」のデータは誰が作成するのでしょうか?スクリプトやインジケーターでできるようになるのでしょうか?

何のためのエージェント間のコミュニケーションなのか、できれば素人にもわかるように教えてください。

すでに数式計算機能をテストするためのスクリプトを書きましたが、いくつかの機能が不足しています)

// все данные расчетов агентов складываются в массив структур
struct MqlCloud
  {
   enum STATUS {wait,ready,error,free};
   STATUS status; // статус выполнения задачи - выполнена, выполняется, ошибка выполнения
   double input_data[]; // массив входных данных
   double out_data[];   // массив выходных данных
  };
  
long id=AccountInfoInteger(ACCOUNT_LOGIN);  

double in_data[100];
MqlCloud result[10000];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   CloudInit(id,"myprog.ex5");  // id - это кто будет платить за Cloud, myprog.ex5 - программа которая будет выполнять расчеты
   CloudData("file.dat");       // file.dat - файл с неизменными данными для расчета
   for(uint i=0; i<10000; i++)
      {
       //
       // формируем массив входных данных для расчета
          for(int n=0; n<ArraySize(in_data); n++) in_data[n]=MathRand()/SHORT_MAX; 
       //
       CloudCalculat(i,in_data); // здесь i - номер задачи, input_data - массив переменных входных данных
      }
   // выводим максимальный результат
   double max_result=0.0; 
   for(uint i=0; i<10000; i++)
      {
       if(result[i].status!=ready)
         {
          i--;
          Sleep(1000);
          continue;
         }
       max_result=MathMax(max_result,result[i].out_data[0]);
      }
   Print("Max result = ",ArrayMaximum(result[0].out_data));
  }
  
//+------------------------------------------------------------------+
void OnCloudPass(uint num_mission)
  {
   // анализируем результат выполнения задачи по ее номеру, если нужно
   double s=result[num_mission].out_data[0];
  }
//+------------------------------------------------------------------+

void CloudInit(long ID, string programm_name) {}
void CloudData(string file_dat) {}
void CloudCalculat(uint num_mission, double & idata[]) {}