MQL5への願い - ページ 59

 
diakin >> :

例えばどんなイベントですか?

例えば、練習から、ポジションのクローズ。ポジションがいつクローズされたかを知り、放出された資金を考慮に入れて他の注文を修正することです。アカウントの状態を常に監視する必要があったのです。履歴から注文を追跡しようとしたが、テストは不可能で、すべてに非常に時間がかかる。

現在処理できるイベントは、ティックのみです。

 
 
Gupm писал(а)>>

例えば、練習から、ポジションをクローズする。ポジションがいつクローズされたかを知り、放出された資金を考慮に入れて他の注文を修正することです。アカウントの状態を常に監視する必要があったのです。履歴から注文を追跡しようとしたが、テストは不可能で、すべてに非常に時間がかかる。

今、扱えるイベントはダニだけです。

しかし、とにかくstart()はtick毎に起動されます。そこで、あるイベントが発生したかどうか、あらゆるチェックを行うことができる。

 
diakin писал(а)>>

というわけで、とにかくstart()は1tickごとに実行されます。そこで、ある事象が起きたかどうか、あらゆるチェックができるのです。

そうですね、今やっていますが、注文がオブジェクトで、例えば閉じるイベントがあり、それにハンドラをバインドして、コードのこの部分を完全に分離し、デバッグなどを行うことができたら、どんなに素晴らしいことでしょう。

 
Gupm писал(а)>>

でも、注文がオブジェクトで、たとえば閉じるイベントがあり、それにハンドラをバインドすれば、コードのこの部分は完全に分離され、デバッグもできるようになります。

MQL5では簡単にできそうな気がするのですが。

;)

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, 
int magic=0, datetime expiration=0, color arrow_color=CLR_NONE, 
func OnClose) 

最後のパラメータは、注文を閉じるときに呼び出される関数名です。コンパイラは、とにかくテキストに含まれる関数を、パラメータで認識します。

そして、注文の終了(またはエラー)に関するメッセージがログに出力されているため、イベントは内部で処理されます。

しかし、もっと多くのイベントが予想され、それもOnCloseEmpty、 OnOpenEmptyなどの ように、少なくとも空の値を持つパラメータで記述されなければならないだろう。

一般的には、頻繁に呼び出される関数のテンプレートのリストを追加して、そこから必要なパラメータをすべて含む関数テンプレートを選択すると、テキストに挿入されるようにするとよいでしょう。

あとは、ヘルプを見て、関数の説明をコピーして、パラメータを編集します。

 

MQL5について要望したいのですが。

すみません、繰り返しになりますが、過去の投稿を全て読んでいないので...。

new mqlのループは、例えばこんな風に、何らかの印をつけてほしいです。

 
Duke3D писал(а)>>

...

新しいmqlのループは、例えばこのように、何らかの形で強調表示されるといいなと思います。

せめて、中括弧の自動インデント機能を持ったテキストフォーマットボタンを作ってほしい。

今、ブラケットが外れると、どこで起きたのか探すのが大変です。

さらに、行番号も追加。C言語では一般的ではありません。ステータスバーで行番号を探すより便利です。

 
diakin >> :

MQL5では簡単にできると思います。

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, 
int magic=0, datetime expiration=0, color arrow_color=CLR_NONE, 
func OnClose) 

;)

最後のパラメータは、注文を閉じるときに呼び出される関数名です。コンパイラは、とにかくテキストに含まれる関数を認識し、パラメータに含まれる関数を認識するのです。

そして、注文の終了(またはエラー)に関するメッセージがログに出力されているため、イベントは内部で処理されます。

しかし、もっと多くのイベントが予想され、それもOnCloseEmpty、 OnOpenEmptyなどの ように、少なくとも空の値を持つパラメータで記述されなければならないだろう。

一般的には、頻繁に呼び出される関数のテンプレートのリストを追加して、そこから必要なパラメータをすべて含む関数テンプレートを選択すると、テキストに挿入されるようにするとよいでしょう。

今、私はヘルプに入り、関数の説明をコピーして、パラメータを編集しなければなりません。

なぜonCloseだけなのか?onModify、onOpenはどうでしょうか?

多分、これがオブジェクトなら、こんな感じになるはずです。


TOrder order = new  TOrder(symbol, cmd,  volume, price, slippage, stoploss, takeprofit, comment);
order.addEventListener( "open", myOpenHandler);
order.addEventListener( "close", myCloseHandler);
order.addEventListener( "modify", myModifyHandler);
order.send();

Ы?

 
TedBeer писал(а)>>

なぜonCloseだけなのか?onModify、onOpenはどうでしょうか?

たぶん、orderがオブジェクトであれば、このようなものがあるはずです。

Ы?

何とも言えませんね。

int ticket=OrderSend(parameters); // MQL4からの通常の関数

order(ticket).addEvent ("open", myOpenHandler);

あるいはもっとコンパクトに

Order(ticket).OnOpen=myOpenHandler;

ここで、Order(handle) は標準的なもので、与えられたオブジェクトハンドルのプロパティにアクセスできるオブジェクトまたは構造体です。

double MyVolume=Order(ticket).Volume;


カスタムイベントはボルトオンではできない地獄のようなもの。それとも、できるのか?

Order(ticket).addEvent ("MyCustomEvent", MyCustomEventHandler);

この場合、「MyCustomEvent」はどこに記述されているのでしょうか?(標準的なイベントと前提条件の組み合わせでない場合)。

とはいえ、私の理解ではMQL5はすでに書かれているので、将来への希望ですが ;)))

 
diakin >> :

何とも言えませんね。

int ticket=OrderSend(parameters); // MQL4からの通常の関数

Order(ticket).addEvent ("open", myOpenHandler);

あるいはもっとコンパクトに

Order(ticket).OnOpen=myOpenHandler;

ここで、Order(handle) は標準的なもので、与えられたオブジェクトハンドルのプロパティにアクセスできるオブジェクトまたは構造体です。

double MyVolume=Order(ticket).Volume;


カスタムイベントはボルトオンではできない地獄のようなもの。それとも、できるのか?

Order(ticket).addEvent ("MyCustomEvent", MyCustomEventHandler);

この場合、「MyCustomEvent」はどこに記述されているのでしょうか?(標準的なイベントと前提条件の組み合わせでない場合)。

とはいえ、私の理解ではMQL5はすでに書かれているので、将来への希望ですが ;)))

まあ、関数型アプローチとOOPの寄せ集めのようなものでしょうか。思想的には、どちらか一方であるべきなのです。後方互換性のために通常の機能を残すとしても、OOPも実装しなければ、MQL5という大規模なモダナイゼーションに何の意味があるのでしょうか。

残念ながら、私たちの議論はすべて、茶葉を読むようなものです。ベータ版を提供するだけでなく、実装した言語の仕様を公開する意志がmethaquotes社には見られないので、何の役にも立ちません。それなら、製品としてリリースする前に、その言語をどうにかしてくれと言うのが道理でしょう。