初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 879

 
lil_lil:

ありがとうございます。

今度はどうしたんですか?

私はHistorySelectByPositionから 始めることを提案しましたが、あなたはそれをifsの奥深くに押し込んで しまいましたね...。

ネッティングアカウントには、1つのシンボルにつき1つのポジションしか存在できない。ポジションIDを取得し、このポジションの形成に関与した取引のリストを取得し、取引方向と 注文タイプ別にカウントします。

 
Alexey Kozitsyn:

アルチョム 繰り返しますが、答えてください。


質問を見ませんでした :)

正直~覚えていないのですが、MT5でも使えるのでは~ないでしょうか?

しかし、テスターでは、保留中の注文を入れていたのですが・・・。そして、マウスを使って仕事をしました。でも、混乱してしまって、実際のチャートではマウスを使い、テスターではボタンを使って作業していたのかもしれません...。

当てないよ~、半年くらい前に図書館を全部小さいネジまで解体しちゃったから、もうすぐに確認できないよ。秋くらいまで作り直すのは先延ばしにしています。そのため、テスターでイベントモデルOnChartEvent() の動作を確認する方が早いです。でも、まだ時間がなくて、ごめんなさい。)

 
Artyom Trishkin:

質問を見ませんでした :)

正直~覚えていないのですが、MT5でも使えるのでは~ないでしょうか?

でも、保留の注文はテスターに入れてるんだけどな...。そして、マウスを使って仕事をしました。でも、きっと私が勘違いして、実際のチャートではマウスで操作し、テスターではボタンで操作していたのかもしれません...。

当てないよ~、半年くらい前に図書館を全部小さいネジまで解体しちゃったから、もうすぐに確認できないよ。秋くらいまで作り直すのを延期しています。そのため、テスターでイベントモデルOnChartEvent()の動作を確認する方が早いです。でも、まだ時間がなくて、ごめんなさい。)

テストコードも全部ある。

switch( id )
{
default:
   Print( __FUNCTION__,": id = "+EnumToString( (ENUM_CHART_EVENT)id ) );
}

は、残念ながらテスターでは反応なし。OnChartEvent()関数の 中で。Expert Advisorから呼び出される。

 
Alexey Kozitsyn:

テストコードは全部ある。

は、残念ながらテスターでは反応なし。OnChartEvent()関数の 中で。

また、CHART_EVENT_MOUSE_MOVE=trueが設定されているか?
 
Alexey Viktorov:

私はHistorySelectByPositionから 始めることを提案しましたが、あなたはそれをifsの奥深くに押し込んで しまいました...。

ネッティングアカウントでは、1つのシンボルにつき1つのポジションしか存在できません。ポジションIDを取得し、このポジションを形成するディールのリストを取得し、ディール方向と オーダータイプ別にカウントします。

ネッティングやヘッジのための、普遍的なカウント機能を作りたいので、そうしたのですが、無理でしょうか?

 
Artyom Trishkin:
CHART_EVENT_MOUSE_MOVE=true が設定されているか?

いや、しかし、ctrlやshiftなどのキーは押されているので、これでは解決しそうにない...。という反応だった。

 
lil_lil:

ネッティングやヘッジのための、普遍的な計数機能を作りたいので、立ち往生している、あるいは、それは不可能なのか?

可能です。ただ、アプローチの仕方が違うので、1行のコードにすべてをぶつけるのではなく、まずきちんと計画を立てる必要があるのですが...。

 
Alexey Kozitsyn:

いや、しかし、ctrlやshiftなどのキーは押されているので、これでは解決しそうにない...。何の反応もなかった。

とにかく、今は実験している暇はないんだ。自分の仕事が待っている。

もしかしたら、本当に忘れていたのかもしれません。しかし、テスターでタイムリミットを設定しているのです。かなり確率が高いです。ただ、ボタンが同じなんですよね。マウスで設定したことも知っています。でも、もしかしたらライブチャートでも...。

 
Artyom Trishkin:

おそらく。ただ、アプローチの仕方が違うので、1行のコードにすべてをぶつけるのではなく、まずはきちんと計画を立てる必要があるのですが...。

だから、とりあえず別々にやってみる。

何を見逃したのか?

int GetNum(const string aSymbol)
  {
   int    count=0;
   if(PositionSelect(aSymbol))
     {
      long pos_id=long(PositionGetInteger(POSITION_IDENTIFIER));

      if(pos_id>0)
        {
         if(HistorySelectByPosition(ulong(pos_id)))
           {
            int deals=HistoryDealsTotal();

            for(int i=0; i<deals; i++)
              {
               ulong deal_ticket=HistoryDealGetTicket(i);
               ulong order_ticket=ulong(HistoryDealGetInteger(deal_ticket,DEAL_ORDER));

               if(order_ticket>0)
                 {
                  long deal_entry=long(HistoryDealGetInteger(deal_ticket,DEAL_ENTRY));

                  if(deal_entry==DEAL_ENTRY_IN)
                    {
                     if(m_position.PositionType()==POSITION_TYPE_SELL)
                       {
                        count++;
                       }
                    }
                 }
              }
            if( count > 0 ) return(count);
           }
         else
           {
            Print("Не возможно получить историю позиции по символу ",aSymbol);
           }
        }
      else
        {
         Print("Не возможно определить идентификатор позиции по символу ",aSymbol);
        }
     }
   return( 0 );
  }
////////////
 
最初は正しくカウントされ、その後、5つの指値売りが発動されると、コメントに6と書かれます。6つ目はどこから来るのでしょうか?
理由: