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

 
Marat Sultanov:
そこには、私が理解できなかったコードの部分がある。自分で修正する必要があります。


具体的に何を見せてくれるのか...。

 
Rafael Sahibgareev:


具体的に何を見せてくれるのか...。


コードをダウンロードする -Marat Sultanoは そこに不明な点を書きました。
 

Maratさん、コードの件ではお世話になりました ......。

もう一つの質問ですが、次のコードセクションのループを正しく配置する方法を教えてください .........。

//--- цикл расчета 
      
        {
        
         //--- если предыдущая свеча имеет параметры больше MSC
         if(IsLossCandle)
            if(ASSHighBuf[i-1]>=max_size_candel)
               BufferLossCanle[i]=low[i-1];
                 {
                  if(IsTopShadow)
                     if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1]) && IMaDifBuff[i]-IMaDifBuff[i-1]>0 || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]>0))
                        BufferTop[i]=low[i-1];
                  if(IsLowerShadow)
                     if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1]) && IMaDifBuff[i]-IMaDifBuff[i-1]<0 || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]<0))
                        BufferLower[i]=high[i-1];
                 }
        }


//--- return value of prev_calculated for next call 
   return(rates_total);
  }
 
Rafael Sahibgareev:

Maratさん、コードの件ではお世話になりました ......。

もう一つの質問ですが、以下のコードに対して、ループを正しく配置する方法を教えてください...................................。

こんな感じです。

//--- цикл расчета
   const int Limit = fmax(prev_calculated, 1);

   for(int i=Limit; i<rates_total; ++i)
   {
      //--- если предыдущая свеча имеет параметры больше MSC
      if(IsLossCandle)
      {
         if(ASSHighBuf[i-1]>=max_size_candel) BufferLossCanle[i]=low[i-1];

         if(IsTopShadow)
         {
            if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1] && IMaDifBuff[i]-IMaDifBuff[i-1]>0) || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]>0))
            {
               BufferTop[i]=low[i-1];
            }
         }

         if(IsLowerShadow)
         {
            if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1] && IMaDifBuff[i]-IMaDifBuff[i-1]<0) || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]<0))
            {
               BufferLower[i]=high[i-1];
            }
         }
      }
   }

//--- return value of prev_calculated for next call 
   return(rates_total);
}

私はあなたのコードの断片に困惑しているだけです。

if(ASSHighBuf[i-1]>=max_size_candel)
   BufferLossCanle[i]=low[i-1];
     {

なぜ、中括弧がそこに立っていなければならないのか?実装しなかった意図はありますか?(条件付きelse 演算子について言及しています)

 

Marat 改めてありがとうございます。私は22年前、学校で最後のコードを書きました。

他のオペレータの犠牲になって、次の4人のオペレータのブレーカーとしてどこに置くか......というところに座っていたんです。

自分で何とかできそうだ・・・・・・・。

Maratさん、この計算が「ループ」を使わずにできるのかどうか、アドバイスかリンクを教えてください ......。

 
Rafael Sahibgareev:

Marat 改めてありがとうございます。私は22年前、学校で最後のコードを書きました。

他のオペレータの犠牲になって、次の4人のオペレータのブレーカーとしてどこに置くか......というところに座っていたんです。

自分で何とかできそうだ・・・・・・・。

Maratさん、"loop "を使わなくても計算できるのなら、アドバイスかリンクを教えてください......。

すみません、あなたの目的を聞いてもいいですか、議論したコードの一部からどんな結果を得たいのですか?あなたの意図を理解すれば、私はあなたを助けることがより簡単になります :)
 

興味本位で聞いたサイクルについて......。こんなことがあるのだろうか......。

それ自体はトリッキーなことなく、最初の演算子 "もし "は、その後、禁断の動作は、方向分類演算子を動作させないでください.......

さらに将来的には、ゼロバーで動作するように、コードを変更する予定です。

を超えたスプレッドになったときに、この同じ禁止分類子がティックに表示されるように...クラスタリングフィルタを追加しないインジケータスキャルパー...です。

実は、すべてのパターンはダニの中に住んでいると理解しているのですが......。

 

バーを通過するためのサイクルが必要です。最後の1、2小節だけならループなしでもいいのですが、十数小節を分析する必要がある場合は、ループを使った方がいいですよね?

ループを使わないでいると、中国語のコードになるのは必至です :)

 

ラファエル この順番で読むことをおすすめします。

  1. 条件付きif-else文
  2. のオペレーター
  3. Whileループ演算子
  4. コンティニューオペレーターコンティニュー
  5. 継続演算子ブレーク

そして、吸い込まれたら、さらに奥へ。

  1. オペレーター
  2. 言語の基礎知識
実務での使用頻度別に分けてみました。複雑なことは何もなく、要点がつかめれば十分です。


 

アドバイスやお勧めをありがとうございました!今日はもう遅いので、明日もう一度ヘルプや記事を読んでみます...。

option[0]を含む直近3本のバーだけに興味があったのですが......。

後で私はおそらくもっと15-20を必要とする......私はサイクルなしで行うことはできません.......

また、心から感謝しています...。

理由: