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

 
Artyom Trishkin:
今度は、図式化したものを言葉で表現してください。高値、安値、開値、閉値を使用する。
言葉で表現した時点で、すでにToRを書いたことになるのです :)
あとは、言葉の構文をコードに置き換えるだけです。
OK、今すぐやります)
 

キャンドルサイズ=高値[i] - 低値[i]とする。

アッパーシャドウ=ハイ[i] - オープン[i]です。

キャンドル本体 = open[i] - close[i].

下影=close[i]-low[i]とする。

ローソク足本体の大きさに対する比率 - (高値[i] - 安値[i]) / (始値[i] - 終値[i])

短い影の大きさは、ある閾値を越えてはならない - ( close[i] - low[i]) <= close[i].

ローソク足の向き - 高値[i] > 始値[i] > 終値[i] > 安値[i]です。

 
Artyom Trishkin:

マウスで賭けているのです。

  • 価格の上をクリック+Ctrl - 売り指値
  • 価格以下をクリック+Ctrl -購入限度額
  • 上記価格+Ctrl+Shiftでクリック - 買い停止
  • 価格下をクリック+Ctrl+Shift - ストップ売り
また、BuyStopLimitとSellStopLimitをshifftで置くことも可能です。

MT5のテスターで、ビジュアルモードでの注文の出し方でしょうか?イベントはどのように処理 されるのですか?OnChartEvent()は動作しませんよね?

 
Vladimir Karputov:

テスターは正常に動作します。間違いはプログラムの論理にある。2つの記号は異なる人の2つの人生のようなものだ(ここで「人」は「記号」に類似している)。また、2人目は1人目と同じ時間に目覚める必要はありません(「目覚める」は「新しいバーが 現れる」と類似しています)。

つまり、新しいバーが最初のシンボルの上に、そして2番目のシンボルの上に現れるのを待つ必要があるのです。


記事「新しいバー」のイベントハンドラを 追加しました。

早速のご返信ありがとうございます。これをすべて多通貨モードで実装する方法は、これから考えます。
 

このような質問 - ローソク足の組み合わせを見つけるために、条件がリストアップされている順序は重要ですか?

    if(((high[i-1]-low[i-1]) < (high[i]-low[i])) && (open[i-1] >= Lower1[i]) && ((close[i-1]-open[i-1]) >= 3*(close[i]-open[i])) &&
      (close[i-1 <= Base[i]]) && (high[i-1] <= 0.5*(high[i]-close[i])) && (close[i-1] <= open[i]) && ((close[i]-open[i])<= 0.33*(high[i]-close[i])) &&
      ((close[i]-open[i]) >= (open[i]-low[i])) && (close[i] <= Base[i])) // когда пин-бар ниже, либо равен линии Base
 

こんにちは。ネッティングアカウントで、同じ方向の指値注文が何件ポジションになったかカウントしたい。

関数が正しく計算されないのですが、なぜですか?

int CurrentPos_sell_nettin()
  {
  string symb=_Symbol;
   int    total       =0;  // Всего сделок в списке выбранной истории
   int    count       =0;  // Счетчик сделок по символу позиции
//--- Если история позиции получена
   for(int i=0; i<PositionsTotal(); i++)
     {
      ulong pt=PositionGetTicket(i);
      long ID=PositionGetInteger(POSITION_IDENTIFIER);
      if(PositionGetString(POSITION_SYMBOL)==symb && HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60))
        {
         //--- Получим количество сделок в полученном списке
         total=HistoryDealsTotal();
         //--- Пройдем по всем сделкам в полученном списке
         for(int i=0; i<total; i++)
           {
            ulong dt = HistoryDealGetTicket(i);
            long did = HistoryDealGetInteger(dt, DEAL_POSITION_ID);
            ENUM_DEAL_ENTRY in_out=HistoryDealGetInteger(dt,DEAL_ENTRY);
            if(did==pt && in_out==DEAL_ENTRY_IN)
              {
               if(m_position.PositionType()==POSITION_TYPE_SELL)
                 {
                  count++;
                 }
              }
           }
        }
     }
//---
   return(count);
  }
 
lil_lil:

こんにちは。ネッティングアカウントで、同じ方向の指値注文が何件ポジションになったかカウントしたい。

関数が正しくカウントされないのですが、なぜですか?

HistorySelectByPositionで 開始します。そうすれば、そのポジションに関わるトレードだけを取得することができます。

 
clickaider:

このような質問 - ローソク足の組み合わせを見つけるために、条件がリストアップされている順序は重要ですか?

例を見て みましょう。30種類のパターンがあります。

 
Artyom Trishkin:

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

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

初心者の方からの質問 MQL5 MT5 MetaTrader 5

アレクセイ・コジツィン さん 2018.06.03 15:39

MT5のテスターで、ビジュアルモードで注文する方法ですか?また、イベントを どのように処理するのですか?OnChartEvent()は動作しませんよね?


 
Alexey Viktorov:

HistorySelectByPositionで 開始します。そうすれば、そのポジションに関わるトレードだけを取得することができます。

ありがとうございます。

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

int CurrentPos_sell_nettin()
  {
   string symb=_Symbol;
   int    total       =0;  // Всего сделок в списке выбранной истории
   int    count       =0;  // Счетчик сделок по символу позиции
//--- Если история позиции получена

   for(int i=0; i<PositionsTotal(); i++)
     {
      ulong pt=PositionGetTicket(i);
      long ID=PositionGetInteger(POSITION_IDENTIFIER);
      if(PositionGetString(POSITION_SYMBOL)==symb && HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60))
        {
         if(PositionSelect(symb))
           {
            long pos_id=long(PositionGetInteger(POSITION_IDENTIFIER));

            if(pos_id>0)
              {
               if(HistorySelectByPosition(ulong(pos_id)))
                  total=HistoryDealsTotal();
               //--- Пройдем по всем сделкам в полученном списке
               for(int i=0; i<total; i++)
                 {
                  ulong dt = HistoryDealGetTicket(i);
                  long did = HistoryDealGetInteger(dt, DEAL_POSITION_ID);
                  ENUM_DEAL_ENTRY in_out=HistoryDealGetInteger(dt,DEAL_ENTRY);
                  if(did==pt && in_out==DEAL_ENTRY_IN)
                    {
                     if(m_position.PositionType()==POSITION_TYPE_SELL)
                       {
                        count++;
                       }
                    }
                 }
              }
           }
        }
     }
//---
   return(count);
  }
理由: