オープンポジションをグループ分けする - ページ 12

 
Sergey Voytsekhovsky:
TakeProfitのたびにマイナス、マーケットエントリーの たびにプラスが表示されるようになりました。口語的なスラングで申し訳ないのですが、私は完全に独学で、このテーマでコミュニケーションできる人がいません。


しかも独学で。とにかく、コードを切って切って切りまくった...。あなたとの対話がなかったら、もう少し後にこのような問題が見つかっていたかもしれません...。

プロパティを読む前に取引を選択できるように、コードに追加すべきですね。

    HistoryDealSelect(trans.deal);

あるいは選択の成否を確認するため。

    if(!HistoryDealSelect(trans.deal))
      Print(GetLastError());
 
Alexey Viktorov:

しかも独学で。とにかく、コードを切って切って切りまくった...。もし、あなたとの対話がなければ、このような問題に気づくのはもう少し遅かったと思います...。

話すのはいつでもいいし、その会話が役に立つか立たないかは後でわかるものだ。したがって、最もおしゃべりな人は、平均してminPolusを増加させるが、maxPolusを減少させる。それはちょっと口惜しいですね。

Надо добавить в код выбор сделки перед чтением свойств.

или с проверкой успешности выбора.

声に出して考えているのか、それとも私に勧めているのか?

 

機能で

bool  HistoryDealSelect( 
   ulong  ticket     // тикет сделки 
   );

一応読んでみたが、まだ使い方がわからない

Функция HistoryDealSelect() очищает в mql5-программе список сделок, доступных для обращений, и копирует в него одну единственную сделку, если выполнение HistoryDealSelect() завершилось успешно.
 

次の課題-知見を募り、議論する。

トランザクションチケット TRでポジションをクローズ)を、このトランザクションによってクローズされたポジションチケットを 返すようにするにはどうしたらいいですか?

2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   take profit triggered #6571  buy 0.01 EURUSD 1.16343 tp: 1.16389 [#6572  sell 0.01 EURUSD at 1.16389]
2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   deal #6572  sell 0.01 EURUSD at 1.16389 done (based on order #6572)
2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   deal performed [#6572  sell 0.01 EURUSD at 1.16389]
2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   order performed sell 0.01 at 1.16389 [#6572  sell 0.01 EURUSD at 1.16389]
2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   Закрыта позиция ---Тикет сделки--- 6572 ---Позицию в структуре ArrayDealOut пометить на удаление ------------

実際のポジションを格納しなければならない構造を持っているということです。ゲームから離れると、掃除が必要になる。

???

 
Sergey Voytsekhovsky:

少なくとも、何かについて話すことは常に有益であり、その会話が有益であるかどうかは後でわかることです。つまり、おしゃべりな人ほど平均的にminPolusを増やし、maxPolusを減らしているのです。それはちょっと口惜しいですね。

声に出して考えているのか、それとも私に勧めているのか?

ただ勧めるだけでなく、最近削除した行を自分のコードに戻しました。

 
Sergey Voytsekhovsky:

機能で

気をつけないといけないのは、そこに機能が書いてあるのですが、まだ使い方がわからないんです。

選択する場所にもよりますがOnTradeTransactionでは そのような危険はない。一般的には、注文、取引、ポジションのプロパティにアクセスする前に選択する習慣を身につけるべきでしょう。

また、選択後に実行がある関数に切り替わり、その関数で別の選択が行われた場合、リストには最後に選択されたオプションが含まれることを忘れないでください。

 
Sergey Voytsekhovsky:

次の課題-知見を募り、議論する。

トランザクションチケット TRでポジションをクローズ)を、このトランザクションによってクローズされたポジションチケットを 返すようにするにはどうしたらいいですか?

実際のポジションを格納しなければならない構造を持っているということです。ゲームから離れると、掃除が必要になる。

???

まあ、単純な話なんですけどね...。

/*********************TradeTransaction function**********************/
void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
 {
  if(trans.type == TRADE_TRANSACTION_DEAL_ADD && trans.symbol == _Symbol)
   {
    if(!HistoryDealSelect(trans.deal))
      Print(GetLastError());
    /******************** Если открылась позиция********************/
    if(HistoryDealGetInteger(trans.deal, DEAL_ENTRY) == DEAL_ENTRY_IN)
      Print("********** открытие сделка ", trans.deal, " позиция ", trans.position);
    /******************** Если закрылась позиция********************/
    if(HistoryDealGetInteger(trans.deal, DEAL_ENTRY) == DEAL_ENTRY_OUT)
     {
      if(HistoryDealGetInteger(trans.deal, DEAL_REASON) == DEAL_REASON_TP)
       {
        Print("********** закрытие по тейку сделка ", trans.deal, " позиция ", trans.position);
       }
      if(HistoryDealGetInteger(trans.deal, DEAL_REASON) == DEAL_REASON_SL)
       {
        Print("********** закрытие по стопу сделка ", trans.deal, " позиция ", trans.position);
       }
     }
   }
 }/*******************************************************************/
CN      0       19:20:27.920    !00 (GBPUSD.m,H1)       2020.02.03 12:01:20   ********** закрытие по стопу сделка 27 позиция 26
CG      0       19:20:27.920    !00 (GBPUSD.m,H1)       2020.02.03 12:01:20   ********** открытие сделка 28 позиция 28
HJ      0       19:20:28.023    Trade   2020.02.03 12:01:40   stop loss triggered #28  buy 0.1 GBPUSD.m 1.30698 sl: 1.30598 tp: 1.30798 [#29  sell 0.1 GBPUSD.m at 1.30598]
GE      0       19:20:28.023    Trades  2020.02.03 12:01:40   deal #29  sell 0.1 GBPUSD.m at 1.30598 done (based on order #29)
 JF      0       19:20:28.023    Trade   2020.02.03 12:01:40   deal performed [#29  sell 0.1 GBPUSD.m at 1.30598]
CD      0       19:20:28.023    Trade   2020.02.03 12:01:40   order performed sell 0.1 at 1.30598 [#29  sell 0.1 GBPUSD.m at 1.30598]
GI      0       19:20:28.023    Trade   2020.02.03 12:01:40   market buy 0.1 GBPUSD.m sl: 1.30512 tp: 1.30712 (1.30598 / 1.30612 / 1.30598)
FQ      0       19:20:28.023    Trades  2020.02.03 12:01:40   deal #30  buy 0.1 GBPUSD.m at 1.30612 done (based on order #30)
 QQ      0       19:20:28.023    Trade   2020.02.03 12:01:40   deal performed [#30  buy 0.1 GBPUSD.m at 1.30612]
ON      0       19:20:28.023    Trade   2020.02.03 12:01:40   order performed buy 0.1 at 1.30612 [#30  buy 0.1 GBPUSD.m at 1.30612]
KR      0       19:20:28.025    !00 (GBPUSD.m,H1)       2020.02.03 12:01:40   CTrade::OrderSend: market buy 0.10 GBPUSD.m sl: 1.30512 tp: 1.30712 [done at 1.30612]
RM      0       19:20:28.025    !00 (GBPUSD.m,H1)       2020.02.03 12:01:40   ********** закрытие по стопу сделка 29 позиция 28
FP      0       19:20:28.025    !00 (GBPUSD.m,H1)       2020.02.03 12:01:40   ********** открытие сделка 30 позиция 30
NK      0       19:20:28.295    Trade   2020.02.03 12:02:39   take profit triggered #30  buy 0.1 GBPUSD.m 1.30612 sl: 1.30512 tp: 1.30712 [#31  sell 0.1 GBPUSD.m at 1.30712]
IS      0       19:20:28.295    Trades  2020.02.03 12:02:39   deal #31  sell 0.1 GBPUSD.m at 1.30712 done (based on order #31)
 NE      0       19:20:28.295    Trade   2020.02.03 12:02:39   deal performed [#31  sell 0.1 GBPUSD.m at 1.30712]
KI      0       19:20:28.295    Trade   2020.02.03 12:02:39   order performed sell 0.1 at 1.30712 [#31  sell 0.1 GBPUSD.m at 1.30712]
IH      0       19:20:28.295    Trade   2020.02.03 12:02:39   market buy 0.1 GBPUSD.m sl: 1.30626 tp: 1.30826 (1.30712 / 1.30726 / 1.30712)
EI      0       19:20:28.295    Trades  2020.02.03 12:02:39   deal #32  buy 0.1 GBPUSD.m at 1.30726 done (based on order #32)
 LR      0       19:20:28.295    Trade   2020.02.03 12:02:39   deal performed [#32  buy 0.1 GBPUSD.m at 1.30726]
RL      0       19:20:28.295    Trade   2020.02.03 12:02:39   order performed buy 0.1 at 1.30726 [#32  buy 0.1 GBPUSD.m at 1.30726]
HR      0       19:20:28.297    !00 (GBPUSD.m,H1)       2020.02.03 12:02:39   CTrade::OrderSend: market buy 0.10 GBPUSD.m sl: 1.30626 tp: 1.30826 [done at 1.30726]
HS      0       19:20:32.663    !00 (GBPUSD.m,H1)       2020.02.03 12:02:39   ********** закрытие по тейку сделка 31 позиция 30
KP      0       19:20:32.663    !00 (GBPUSD.m,H1)       2020.02.03 12:02:39   ********** открытие сделка 32 позиция 32
 
Alexey Viktorov:

選択する場所にもよりますがOnTradeTransactionでは そのようなリスクはありません。実際、注文、取引、ポジションのプロパティにアクセスする前に、これを選択する習慣を身につけるべきです。

また、選択後、実行がある関数に進み、それが別の選択をした場合、リスト内のリターンは最後に選択されたものになることを忘れないでください。

これだけのことをどう理解したらいいのか、私には抽象的な表現にとどまっています。

上記の問題は、既知の取引で決済されたポジションのチケットを検索して解決したところです。すぐにプリントから要求したので、最初の場所に戻ってしまいました。すべてのTakeProfitsがプリントに表示されるわけではないのです。

 
Alexey Viktorov:

単純な話なんだけどね...。

なんと、今までずっと「私の愛機」を持っていたのに、控えめに沈黙していたのですか?

ありがとうございました。

勉強になりました。 再掲載すればよかっただけです。

 
Sergey Voytsekhovsky:

なんと、今までずっと「私の愛機」を持っていたのに、控えめに黙っていたんですか?

ありがとうございました。

勉強になりましたが、私なら再投稿して終わりです。

何も起きなかった。確認のために書いて、過去のデータでデバッガーを通しただけです。デバッガーを使いこなす。 とても便利なスキルです。

ExcellいわゆるVBA(visual VBA for applications)でプログラミングを始め、そこでデバッグを知るようになったのです。その後、受信値を確認するためのプリンターに慣れるまで大変でした...。そして、mql5でデバッグが導入されたとき、私は苦しみが終わったと子供のように喜びました。