[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 655

 
Vinin:

当然、それ以外の時も。


mm、完成した塊が、まあ、128キロバイトが合体しているんだな~と思いながら、記録しました。その方が、クラッシュしたときに、より正しい状態になるからです。もちろんネタのためとはいえ、何はともあれ。

ダウンロードはしているのですが、端末を閉じるまで行き先がなく、どうしてもわかりませんでした ))

 
ToLik_SRGV
Print() の情報ありがとうございます、調べてみます。
 
sanyooooook:

このパラメータはiniteで変更することができますが、スタートでは疑問が残ります。


ありがとうございます。ウィンドウ上のTFが変わるとインジケータが再起動するので、バッファの色を変更することが可能ということです

そしてポイントは、どのTFでも、他のTFのストキャスティクスに対応するラインの色は常に同じ色であることです。つまり、1時間足のストキャスティクスが青なら、すべてのTFで青になるようにする。

もちろん、適切な色のバッファを適切なTFに割り当てればいいのですが、そうすると処理プログラムが複雑になります。そして、どのような条件下でも、1つの同じバッファを読み取るようにしたい。

 
ToLik_SRGV:

Print()は、まずここに置く必要があります。

その際、配列c1b_1[i]が空であることを確認し、0であれば比較し、当然ながら取引は開かれない。

また、関数 iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i)(extern intAvgB=25;) の平均化周期が配列c1b 自身よりArrayResize(c1b,PeriodB ) (extern int PeriodB=20;) で大きく、何も平均できないのでそこに 0 を入れているのでしょう。


はい、確かに "0 "が、何をすべきか、私に教えて - それは両方の方法(と等しい期間セット)が動作しません両方のオプション(新旧)を試してみました Print("NormalizeDouble(c1b_1 ..., nullリターン(唯一のc1b [i] 値、c1s [i] - ゼロ含む他のすべてを示しています)、私は動作状態にオプションの一つを持っていくか、少なくとも共有ヒントに役立ちます、誰が欠陥を見るのだろうか。

新品です。

// Торговые критерии   
   double c1b[];
   ArrayResize(c1b,PeriodB);
   double c1b_1[];
   ArrayResize(c1b_1,AvgB);
   for(i=1;i<=PeriodB;i++)
   {
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   {
   c1b_1[i]=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   }
   }
   
   double c1s[];
   ArrayResize(c1s,PeriodS);
   double c1s_1[];
   ArrayResize(c1s_1,AvgS);
   for(i=1;i<=PeriodS;i++)
   {
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   {
   c1s_1[i]=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   }
   }
   
   Print("NormalizeDouble(c1b_1[i],4) - ",NormalizeDouble(c1b_1[i],4));
   Print("NormalizeDouble(c1b_1[i+2],4) - ",NormalizeDouble(c1b_1[i+2],4));
   Print("NormalizeDouble(c1b_1[i+3],4) - ",NormalizeDouble(c1b_1[i+3],4)); 

if (NormalizeDouble(c1b_1[i],4)<NormalizeDouble(c1b_1[i+2],4)&&NormalizeDouble(c1b_1[i+2],4)>NormalizeDouble(c1b_1[i+3],4))
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if (NormalizeDouble(c1s_1[i],4)>NormalizeDouble(c1s_1[i+2],4)&&NormalizeDouble(c1s_1[i+2],4)<NormalizeDouble(c1s_1[i+3],4))
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

古い。

// Торговые критерии
   double c1b[];
   ArrayResize(c1b,PeriodB);
   for(i=1;i<=PeriodB;i++)
   {
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   }
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,1);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,3);
   
   double c1s[];
   ArrayResize(c1s,PeriodS);
   for(i=1;i<=PeriodS;i++)
   {
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   }
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,1);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,3);
   
   Print("NormalizeDouble(c1b_1,4) - ",NormalizeDouble(c1b_1,4));
   Print("NormalizeDouble(c1b_2,4) - ",NormalizeDouble(c1b_2,4));
   Print("NormalizeDouble(c1b_3,4) - ",NormalizeDouble(c1b_3,4));

if (NormalizeDouble(c1b_1,4)<NormalizeDouble(c1b_2,4)&&NormalizeDouble(c1b_2,4)>NormalizeDouble(c1b_3,4))
     {
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if (NormalizeDouble(c1s_1,4)>NormalizeDouble(c1s_2,4)&&NormalizeDouble(c1s_2,4)<NormalizeDouble(c1s_3,4))
     {
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

全体。

ファイル:
21_1.mq4  15 kb
 

皆さん、気になるのは、4つのタイムフレームをループしてシグナルを探す場合、例えば同じインジケーターのウィンドウが4つあり、タイムフレームが異なる場合よりもCPU負荷が高く、その都度データを呼び出すのでしょうか?

 
Rossi:

皆さん、気になるのは、4つのタイムフレームをループしてシグナルを探す場合、例えば同じインジケーターのウィンドウが4つあり、タイムフレームが異なる場合よりもCPU負荷が高く、その都度データを呼び出すのでしょうか?


実装の仕方にもよりますが。
 

int TimeMassive[15, 30, 60, 240] ;

for(int k=0; k<4; K++)

{

timeframe= TimeMassive[k] ;

for(int i=0; i<limit; i++)

Buffer[i]= iMA(NULL, timeframe, ...............................) ;

}

各時間枠にメモリを割り当てることなく、おおよそこのような感じで

 
同じです。
 
Rossi:

int TimeMassive[15, 30, 60, 240] ;

for(int k=0; k<4; K++)

{

timeframe= TimeMassive[k] ;

for(int i=0; i<limit; i++)

Buffer[i]= iMA(NULL, timeframe, ...............................) ;

}

各時間枠にメモリを割り当てることなく、おおよそこのような感じで


int TimeMassive[]={15, 30, 60, 240} ;

for(int k=0; k<4; K++)

{

timeframe= TimeMassive[k] ;

for(int i=0; i<limit; i++)

Buffer[i]= iMA(NULL, timeframe,..........................) ;

}
それはもう少し正確です
 
スタックオーバーフローの原因は何ですか?大きなテイク(テイクはボラティリティから計算し100を掛けたもの、サイズは41*100)でポジションを 開くと、スタックオーバーフローが記録され、.........ただ、それを取る。このポジションが閉じるまで、これ以上ポジションを建てない、そしてこのポジションはもちろん巨大なTPのため閉じない...。そして、EAは全く正しく動作しません。なぜなら、あらかじめ定義されたオープンポジションの合計利益に達したときに、すべてのポジションをクローズする必要があるからです...。でも、この1つのポジションがずっと2,000ポイントくらいの大きな利益を出しているのに、そうはならない...。どう戦えばいいのか?オープンポジションがスタックから溢れ出て、全てがひっくり返るような事態が発生しても安心はできない...。