どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 31

 

アドバイスお願いします。いくつかの通貨ペアの動きをもとにインジケータを作ったのですが、再計算してしまうことが起こります。何も宇宙的なことではなく、ローソク足のパラメータを参照しているのです。おそらく、それがねじれるのは

ローソク足は、あるローソク足の最初のティックの瞬間にのみ開き始め、ある商品の新しいローソク足が すでに始まっている場合、2番目の商品には形成されていません。ここに問題があると思うんです。

新しいローソク足がすべて形成されたときだけ計算させる方法があるのでは? iTime(symbol1,,1)==iTime(symbol2,,1) とか?

 

皆さん、こんにちは。

コードのロジックが正しいかどうか、アドバイスをお願いします。

コードの要点は、数式である。

TRIN=(増加ペア/減少ペア)/(増加ペア/減少ペアの体積)

double Index[];
double instr_up, instr_dn, vol_dn, vol_up;
//+------------------------------------------------------------------+
int init()
{
   SetIndexBuffer(0,Index);
   SetIndexStyle(0,DRAW_LINE);   
   string Tf;
   if(Period()==1) Tf="M1";
   if(Period()==5) Tf="M5";
   if(Period()==15) Tf="M15";
   if(Period()==30) Tf="M30";
   if(Period()==60) Tf="H1";
   if(Period()==240) Tf="H4";
   if(Period()==1440) Tf="D1";
   if(Period()==10080) Tf="W1";
   if(Period()==43200) Tf="MN";         
        string short_name="TRIN("+Depth+","+Tf+")";
        IndicatorShortName(short_name);
   IndicatorDigits(0);
   return(0);
}

//---- функция проверки цены закрытия на максимум Доллара США за период Depth
int newh(string symbol,int i)
      {
         datetime time_bar = Time[i];
         int bar_no = iBarShift(symbol, Period(), time_bar, false);
                
         if(symbol=="EURUSD" || symbol=="GBPUSD" || symbol=="AUDUSD" || symbol=="NZDUSD")
            {

               int j=iLowest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     int nh=1;                                                 
                  }
               else                                                                 
                  {
                     nh=0;                                              
                  }       
            }
         else
            {
               j=iHighest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     nh=1;                                                 
                  }
               else                                                                 
                  {
                     nh=0;                                              
                  }             
            }
         return(nh);      
      }

//---- функция проверки цены закрытия на минимум Доллара США за период Depth
int newl(string symbol,int i)
      {
         datetime time_bar = Time[i];
         int bar_no = iBarShift(symbol, Period(), time_bar, false);      
      
         if(symbol=="EURUSD" || symbol=="GBPUSD" || symbol=="AUDUSD" || symbol=="NZDUSD")
            {
               int j=iHighest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     int nl=1;                                                 
                  }
               else                                                                 
                  {
                     nl=0;                                              
                  }       
            }
         else
            {
               j=iLowest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     nl=1;                                                 
                  }
               else                                                                 
                  {
                     nl=0;                                              
                  }             
            }
         return(nl);      
      }
//+------------------------------------------------------------------+
int start()
{
   int limit=Bars-IndicatorCounted();
   for(int i=1; i<limit; i++)
          {       
            if (newh("EURUSD",i) > 0                              //-- Если пара росла, то
             {instr_up=instr_up+1;vol_up+=iVolume("EURUSD",0,i);}   //-- instr_up - увеличиваем на 1 и vol_up - увеличиваем на Volume по этой паре   
           else //if (newl("EURUSD",i) > 0)                         //-- иначе
              {instr_dn=instr_dn+1;vol_dn+=iVolume("EURUSD",0,i);}  //-- instr_dn - увеличиваем на 1 и vol_dn - увеличиваем на Volume по этой паре
              
            if (newh("GBPUSD",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("GBPUSD",0,i);}
           else //if (newl("GBPUSD",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("GBPUSD",0,i);}
            
            if (newh("USDCHF",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("USDCHF",0,i);}
           else //if (newl("USDCHF",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("USDCHF",0,i);}
            
            if (newh("USDJPY",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("USDJPY",0,i);}
           else if (newl("USDJPY",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("USDJPY",0,i);}
            
            if (newh("AUDUSD",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("AUDUSD",0,i);}
           else //if (newl("AUDUSD",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("AUDUSD",0,i);}
            
            if (newh("USDCAD",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("USDCAD",0,i);}
           else //if (newl("USDCAD",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("USDCAD",0,i);}
            
            if (newh("NZDUSD",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("NZDUSD",0,i);}
           else //if (newl("NZDUSD",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("NZDUSD",0,i);}   
     
     if (instr_dn == 0)instr_dn=EMPTY;  // -- Если 
     if (vol_dn == 0)vol_dn=EMPTY;      // -- значения
     if (instr_up == 0)instr_up=EMPTY;  // -- нулевые
     if (vol_up == 0)vol_up=EMPTY;
     
     Index[i]=(instr_up/instr_dn)/(vol_up/vol_dn);  // -- TRIN
     
     instr_up=0;instr_dn=0;vol_up=0;vol_dn=0;  // -- Обнуление
     }
     
        return(0);
}

これが出てきたのです。

トリン

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

 

アドバイスをお願いします。

1 Expert Advisorは、残高に資金を追加することができます。

2 トレーダーが自由資金を持っている場合、テスターでどのように実装できますか、それともそのまま機能しますか?

 

1.テスト目的であれば、最初の金額をしっかり設定し、適正な金額をベースにMMを構築する方が簡単です。

2.テスト目的では絶対に必要ありません。スプレッドはもっと重要です。

 
splxgf:

1.テスト目的であれば、最初の金額をしっかり設定し、適正な金額をベースにMMを構築する方が簡単です。

2.テスト目的では絶対に必要ありません。スプレッドはもっと重要です。


と1、2は、私がどのように、何をテストし、なぜそれが必要なのか知っていますか? 私の専門家が見えますか? あなたは私が何を必要としているかをよりよく教えてくれるのですか?

そして、おやつには、スプレッドは重要ではありませんが、スワップは重要です ))))

 
sdm:


と1、2は、私がどのように、何をテストし、なぜそれが必要なのか知っていますか? 私の専門家が見えますか? 私の得意なことを教えてくれるのですか?

そしてもう一つ、一口で言うと、私はスプレッドは気にしませんが、スワップは気にします ))) 専門家が違います。


あるいは、あなたはこう です。それとも、質問の仕方を学んでいないのか?
 
sdm:


と1、2は、私がどのように、何をテストし、なぜそれが必要なのか知っていますか? 私の専門家が見えますか? あなたは私が何を必要としているかをよりよく教えてくれるのですか?

そして、おやつには、スプレッドは気にしないが、スワップは気にする ))))


まあ、何を隠そう、利息がつくのであれば、コメントは控えた方がいいのですが...。スワップについては、私は1年前から注文が舞い込んでいますが、スワップは全く気になりません。

金利は この間に変化する時間があるのか、それとも将来の予測ですべて予定されているのか?

 
Vinin:

あるいは、こうです。あるいは、質問の仕方を学んでいないのかもしれません。
これらの質問は修辞的なものであり、すべての人に向けたものではなく、あくまでもコメントの一部として、あなたのリンクは不適切なものです。
 
sdm:
これらの質問は修辞的なものであり、すべての人に向けたものではありませんが、コメントの一部として、あなたのリンクは不適切です。

一回でも煽ると犬猿の仲になる。長時間の質問により、他の会員を不適切に扱った場合。
 
splxgf:


まあ、何が言いたいかというと、利息が発生するのであれば、コメントは控えたいところですが・・・。スワップについては、1年間注文があるので、スワップは全く気になりません。

金利はこの間に変化する時間があるのか、それとも将来の予測ですべて予定されているのか?

私は、1年後にスワップが利益を全て吐き出し、少ないフリー資金で良いバランスで成長し、どんな利益を得るかは問題ではありません。