私のアプローチコアはエンジンです。 - ページ 128

 
Vasiliy Sokolov:

くそっ、本当に何もわかってないのか、それともこうやって手抜きをしようとしてるのか?

どのコマでも、基本的かつ最も複雑なのは、一貫性の表示です。注文がオープンであれば表示されるはずで、取引タブになければパネルにも表示されないはずです。これは初歩的なことで、概念的には「とてもシンプル」です。しかし、「非常にシンプル」にするためには、パネルは状態モデルに基づいている必要があります。そのようなものはなく、ユーザーオブジェクトに詰め込まれた文字列の、ローカルで一貫性のない曲線データベースを持っているのです。

そして今、あなたは問題がないことを証明しようとしている、それはすべて空中から吸い出されたものであると。 テーブルの中の表示されないオーダーは問題ないこと.テーブルの上にある注文が、実はとっくに終了していること--これもまた正常なことなのです。そ して、ポジションの数が20に制限されていることを除けば、全般的にすべてがとても普通で良いのです。

社内手段で開閉を固定化する実装が 課題であることはご理解いただけたと思います。これは、テーブルそのもののメカニズムには関係ありません。USER機構です!

エンジンやテーブルの実装を批判するよりも、注文の開閉を 修正する仕組みをちゃんと書いた方がいい。

そして、すべてがRIGHTに機能する

 
Реter Konow:

  1. そのためには、ティックやタイマーのオーダーに対してユーザー自身がループを書き、そのティックと配列に書かれたティックを照らし合わせる必要があります。配列にチケットがない場合は、注文が開始されたばかりであることを意味し、E_Main_form_1__PnL(OrderTicket(),OrderProfit()) が呼ばれるはずです。

4.これらの順序サイクルを正しく書けば、テーブルは正しく動作するのですが......。

忘れてましたけど...。

しかし、だからといってダイナミックテーブルそのものが機能しないわけではありません。

ユーザーは、ドキュメントに精通していなければなりません。どの配列に何を入れて、どのように更新すればいいのか、すべて分かっているのでしょうか?私は、あなたのコードから、どのように、何が行われ、どこに、何が挿入されるかを理解するための、完全に動作するデモを書くように頼んだのですが、あなたは私のTORを消し、曲がったテーブルの形で私に返してきました!私は、このようなことができるようになりました。

 
Vasiliy Sokolov:

私はただ、あなたのコードや、あなたが人々のためにしていることに、大きな無視の山を感じています。しかし、具体的なことになると、たわごとが始まります。小さくても良いもの、質の高いものを1つでもいいからやってみる。何事もシンプルに解決する、初歩的なことを言うんですね。しかし、あなたはなぜか、何もないところに解答を作りましたね。2週間でこれだけの簡単なチップスをこなせなかったのはなぜですか?

否定的な意見で申し訳ありません。ただ、あなたにはがっかりさせられました。もっともっと良いものを見たいと思いました。デモの修正をお願いします。そう、それは初歩的なことで、ここに手を加える必要がある」というようなことを言わずに、リクエストに沿った、質の高い、良いものを作る。 既成概念にとらわれない解決策を提案し、抗議される可能性もある。

バシリー、感情的になるな。失礼なことをしたことは一度もありません。単に、長い間、受注活動をしていなかったので、やり方を忘れてしまっただけなのです。しかし、それはユーザーの作業です。

でも、とにかくやってみる。そんなに難しいなら...

 
Реter Konow:

ワシリー 感情を持つ必要はない。失礼なことは一切していない。ただ、長い間オーダーの仕事をしていなかったので、やり方を忘れてしまっていたのです。しかし、それはユーザーの作業です。

でも、とにかくやってみる。そんなに複雑なことなら...。

じゃあ、やれよ。私はそれほど複雑だとは思わないのですが、繰り返しますが、あなたのエンジンのドキュメントがなく、どの配列をどのパラメータで更新すればいいのかがわかりません。必要なのは、完全なソリューションという形でのデモンストレーションです。これは、あなたが何をしているのか、どのように機能しているのかを理解するための唯一の方法です。それこそ、私が期待していた通りです。作成する際には、技術的な解決策を検討します。そして一般的には、外部からの批判、たとえ専門家の批判であっても、ポジティブなものとして受け止めましょう。ネガティブなフィードバックは、通常ポジティブなフィードバックよりも価値がありますから。

 

ダイナミックテーブルの仕組みについて説明します。

1.売買ボタンがクリックされると、ボタン自体のケースブロックにある外部接続ファイルに信号が行く。

case BUTTON3___BUY:
               //------------------------------------------------------------------------------------------------------
               //What to do when button pressed or released?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                case pressed:     break;
  
                case released:  
                               
                              int ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-30*Point,Ask+50*Point,NULL,16384,0,Green);  
                              //--------------------------------------------------------------------------------------- 
                              if(ticket>0)
                                {
                                 if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
                                   {
                                    Alert("BUY order opened");
                                    //----------------------------------------------------
                                    E_Main_form_1__Order(ticket,ticket);
                                    E_Main_form_1__Opening_Time(ticket,TimeToStr(OrderOpenTime(),TIME_MINUTES|TIME_SECONDS));
                                    E_Main_form_1__Type(ticket, "BUY");
                                    E_Main_form_1__Volume(ticket,OrderLots());
                                    E_Main_form_1__Symbol(ticket, OrderSymbol());
                                    E_Main_form_1__Price(ticket, OrderOpenPrice());
                                    E_Main_form_1__Comission(ticket, OrderCommission());
                                    E_Main_form_1__Swap(ticket, OrderSwap());
                                    E_Main_form_1__PnL(ticket, OrderProfit()); 
                                    //----------------------------------------------------
                                   }
                                 //--------------------------------------  
                                 ArrayResize(Orders,OrdersTotal());
                                 Orders[OrdersTotal() - 1] = ticket;   
                                 //--------------------------------------                                    
                                }
                              else Print("Error opening BUY order : ",GetLastError());
                              //---------------------------------------------------------------------------------------
                break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;

E_Main_form_1__Price(ticket, OrderOpenPrice()); 関数に新しい チケットが送られると、新しい行が自動的に開かれることを知っている必要があります。

チケットが既に存在する場合は、自動的に目的の行が選択され、そこに新しい値が設定されます。

テーブルの行を閉じるには、関数 E_Main_form_1_CLOSE_ROW___Orders_table(ticket)を呼び出して ください。

チケットは列札を 意味します。

 
Реter Konow:

ダイナミックテーブルの仕組みについて説明します。

1.売買ボタンがクリックされると、ボタン自体のケースブロックにある外部接続ファイルに信号が行く。

E_Main_form_1__Price(ticket, OrderOpenPrice()); 関数に新しい チケットが送られると、新しい行が自動的に開かれることを知っている必要があります。

チケットが既に存在する場合は、自動的に目的の行が選択され、そこに新しい値が設定されます。

テーブルの行を閉じるには、関数 E_Main_form_1_CLOSE_ROW___Orders_table(ticket)を呼び出して ください。

チケットは列札を 意味します。

ピーターさん、タイマーの中にforループを作って、未決済の注文を調べて、注文のリストの変更をテーブルに送ってください。また、テーブルの中の注文の利益も動的に変化するようにしてください。

 
Реter Konow:

ダイナミックテーブルの仕組みについて説明します。

1.売買ボタンがクリックされると、ボタン自体のケースブロックにある外部接続ファイルに信号が行く。

E_Main_form_1__Price(ticket, OrderOpenPrice()); 関数に新しい チケットが送られると、新しい行が自動的に開かれることを知っている必要があります。

チケットが既に存在する場合は、自動的に目的の行が選択され、そこに新しい値が設定されます。

テーブルの行を閉じるには、関数 E_Main_form_1_CLOSE_ROW___Orders_table(ticket)を呼び出して ください。

チケットは列札を 意味します。

これは曲者な実装であり、ここに答えがある。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

私のアプローチコア - エンジン。

ヴァシリー・ソコロフ, 2019.01.09 13:33

Peterさん、申し訳ありませんが、お送りいただいた作品は、稀に見るハックジョブですので、お受けできません。申し訳ありませんが、あなたが送ったものを実行したのは私だけのようで、私とは別に専門知識を行う人はいないでしょう。

そこで、順を追って説明すると、課題は次のようになった。

その代わりに見えるもの。

まず、取引はパネル上で売買ボタンをクリックすることによってのみ行うことができます。標準のウィンドウからポジションを建てた場合、取引は表示さ れません。

....

今のところ、太っ腹のノーマーク です。あなたのリファインを待っています。そして、理解できるまで3Dレンダリングはしないこと!

 

仮にいくつかの動的なテーブルがあるとする。

接続プロパティファイルは、これらのテーブルで作業するためのラッパー関数を自動的に印刷します。

ここでは、その具体例をご紹介します。動的なOrders_table テーブルを描画しています。

以上が、今回入手したラッパー関数です。

void E_Main_form_1__Order(long Magic, string Value)
//----------------------------------------------------------------------------------------------------------------
void E_Main_form_1__Opening_Time(long Magic, string Value)
//----------------------------------------------------------------------------------------------------------------
void E_Main_form_1__Type(long Magic, string Value)
//----------------------------------------------------------------------------------------------------------------
void E_Main_form_1__Volume(long Magic, string Value)
//---------------------------------------------------------------------------------------------------------
void E_Main_form_1__Symbol(long Magic, string Value)
//----------------------------------------------------------------------------------------------------------------
void E_Main_form_1__Price(long Magic, string Value)
//----------------------------------------------------------------------------------------------------------------
void E_Main_form_1__Comission(long Magic, string Value)
//----------------------------------------------------------------------------------------------------------------
void E_Main_form_1__Swap(long Magic, string Value)
//----------------------------------------------------------------------------------------------------------------
void E_Main_form_1__PnL(long Magic, string Value)
//----------------------------------------------------------------------------------------------------------------
void E_Main_form_1__Close(long Magic, string Value)
//----------------------------------------------------------------------------------------------------------------
void E_Main_form_1_CLOSE_ROW___Orders_table(long Magic)
//----------------------------------------------------------------------------------------------------------------

注:各ラッパーは、名前の末尾にdyn.tableのカラム名を持っています。

特定の要素は指定されず、Magic rowのみが 指定されます。

つまり、既存の行のセルに新しい値を設定するには、そのマジックと値を送信する必要があります。

存在しない行のセルに新しい値を設定するには、そのマジコンと値を送信する必要があります。行は自動的に作成されます。

テーブルの行を破棄するには,CLOSE_ROWという 言葉でラッパーを呼び出す必要があります.

例えば、こんな感じです。

void E_Main_form_1_CLOSE_ROW___Orders_table(long Magic)

そして、その中に閉じたい列のマジクを渡します。

それだけです。

 
Vasiliy Sokolov:

ピーターさん、タイマーの中にforループを作って、未決済の注文を調べて、注文リストの変更をテーブルに送ってください。また、テーブルの中の注文の利益も動的に変化するようにしてください。

OK、私は注文を扱うためのサイクルとコードを書きますが、私はすでにリソースを介してリンクするようにエンジンを変換し、それをテストしているので、それを自分で置くためにあなたに渡します。今現在、古いリンクは戻せませんし、新しいリンクもまだ完成していません。

 
Реter Konow:

OK、オーダーと連動するループやコードは私が書きますが、リソースで通信するようにエンジンを再設計済みで、それをテストしているので、自分でセットアップするようにお渡しします。今現在、古いリンクは戻せませんし、新しいリンクもまだ完成していません。

デモとして添付したエンジンのバージョンで作業してください。

タグコノウ

つまり、既存の行のセルに新しい値を設定するには、そのマジェスティックと値を送信する必要があります。

簡単なことだと思うのですが。もし、あなたのアプローチが私の考えるように機能するならば、ダイナミックテーブルでもタイマーによる位置値の更新でも問題はないでしょう。ピーター、なんで最初にこぶを作る必要があったんだ(笑)。

理由: