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

 
Stepan241 >> :

インジケータを書こうとしています。考え方は簡単で、(ブルの強さ-ベアの強さ)を平均化するのです。当然、一定期間は。



int start()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i)。
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_EMA,i)とした。
MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i)とする。
Buf_0[i]=MA_Bulls[i];
i--;
}
を返します。
}

Buf_0[i]=MA_Bears[i]は、指数プロットのある段階で制御するために、平滑化したブルだけを表示するようにしています。EXACTLYでもない。1のピリオドで滑らかにすると、実際には埋め込みブルを繰り返さなければならない。したがって、MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i);のラインが何かおかしいと結論付けました。具体的に何がわからないんですが・・・HELP me !!!!!!。マニュアルや資料を見ながら、3日間が経ちました。ありがとうございました。


まず、ブルとベアのデータアレイを形成し、次のサイクルでそれらをアイロンが、あなたはまだそれを形成していないと、すでに平滑化を適用し、何のデータを滑らかにすることはありません?

 
Urain писал(а)>>

まずブルとベアのデータ配列を形成し、次のサイクルでアイロンをかける、まだ形成していないのにすでにスムージングを使っているので、スムージングするデータがないのでは?

からの翻訳

int start()
{
  int i, limit=Bars-IndicatorCounted()-1;
  for ( i= limit; i>=0; i--){
    Bears_array[ i]=iBearsPower(NULL,0, PeriodPower,PRICE_CLOSE, i);
    Bulls_array[ i]=iBullsPower(NULL,0, PeriodPower,PRICE_CLOSE, i);
  }
  for ( i= limit; i>=0; i--){
    MA_Bears[ i]=iMAOnArray( Bears_array,0, MA_Period,0,MODE_EMA, i); 
    MA_Bulls[ i]=iMAOnArray( Bulls_array,100, MA_Period,0,MODE_SMA, i); 
  }
  return;
}
 

costy_ писал(а) >>

extern string xxxxxxxxxxxxx="x=0 сегодня х=1 вчера итд";
extern int х=0;
int середина=(iHigh(0,PERIOD_D1, х)-iLow(0,PERIOD_D1, х))/2;
if(Bid> середина)...;
if(Ask< середина)...;


extern datetime some_time=D'14:56';
int середина_some_time=(iHigh(0,0,iBarShift(0,0, some_time))-iLow(0,0,iBarShift(0,0, some_time)))/2;
if(Bid> середина_some_time)...;
if(Ask< середина_some_time)...;

ありがとうございます、近づいてきました。一点だけ、よくわからない点があります。

'14:56' - 日付リテラル文字列が不完全です このような警告がコンピュータから表示されました。

私が理解する限り、それはまだ日付を必要としますが、私は特定の日付を必要としません。 私が必要とするのは、同じ日の特定の時間の価格と毎日現在の価格を比較することです。その点を明確にしてください。

 
alsu >> :

なぜ、iCastを通して電話する必要が全くないのですか?統一のためでしょうか。それぞれ別のindicator-wrapperを書き、iCustomを通して呼び出す...。

問題は、私はこれらの2つの指標(AOとAC)を変更し、今私は変更された指標に従ってバーを色にしたいです。それとも他に方法があるのでしょうか?最近MQLを始めたばかりなのですが...。

 
Necron >> :

問題は、2つの指標(AOとAC)を作り直したことで、今は変更した指標に従ってバーを色付けしたいのです。それとも他に方法があるのでしょうか?最近、MQLを学び始めたばかりなのですが...。

では、やり直したもの、呼んだもの、何が問題なのでしょうか?例えば、修正した指標をAO, ACと呼ぶ場合、呼び出しは

iCustom(0,0,"AO",0,shift);
iCustom(0,0,"AС",0,shift);

または、独自のパラメータを追加することができます

 
future >> :

ありがとうございます、近づいてきました。一点だけ、よくわからない点があります。

'14:56' - 日付リテラル文字列が不完全で、このような警告がコンピュータから出されました。

私が理解する限り、それはまだ日付を必要としますが、私は特定の日付を必要としない、私が欲しいのは、同じ日の特定の時間の価格と毎日現在の価格を比較することです。その点を明確にしてください。


string час="15";
string мин="15";
datetime some_time=D'Year().Month().Day() час:мин';//попробуй так ____ но на тестере не будет работать, так как текущие год месяц и день 
привяжитесь к барам так проще вместо iBarShift(0,0, some_time) номер бара
 

costy_ писал(а) >>

future >>:

ありがとう

ございます、近づいてきましたね。

一点だけ、よくわからない点があります。

14:56' - date literal string is incomplete - これがコンピューターから受けた警告

です。

日付が必要なのはわかりますが、私は特定の日付は必要

ありません。



ポイントを明確にしてください。

string час="15";
string мин="15";
datetime some_time=D'Year().Month().Day() час:мин';//попробуй так ____ но на тестере не будет работать, так как текущие год месяц и день 
привяжитесь к барам так проще вместо iBarShift(0,0, some_time) номер бара

しかし、ある時間までバインドを維持することが可能かどうかを知りたい。MQL4では、各取引日の14:00のBid価格はどのように言うのでしょうか?

 

スキフォデッサ 2009.12.05 14:07


皆さん、こんにちは。

あるレベルの価格の交差回数を計算する方法を教えてください。3 (4,5...) の後に注文を開始したいのですが、最初の交差の後には注文を開始しないでください。

ありがとうございます。
------------------------------------------------------------

このアルゴリズムを試すことができます。


もし(現在のバーの価格>前のバーのリーブランド価格<レベル)なら、{カウンターを1つ増やす}。

If (counter>3) then {注文を開く; カウンタをゼロにリセット}.

では、同じことを通常の言葉で書いてみましょう(ブロックだけ書いています。 必要なところに挿入してください)。

Extern int Chet=10; // 何回クロスしたら注文を出すか。

Extern double Uroven=1.6566; // 価格がどのレベルを超えたら、カウントを開始するか。

スタート機能では、おおよそ次のような条件となります。

int k;

if(Open[0]>Uroven && Open[1]<Uroven)k=k+1;// ここでは、UPクロスを考慮 します。

if(k>Chet){OrderSend(......);k=0};

一般的には、それほど難しい問題ではありません。 MCLの本では、ALGORITHMICSの基本を解説しています

 

FOR Vinin さんが書き込みました >>。

ありがとうございます、でも役に立ちません。なぜなら、WhileループをFORループに置き換えただけだからです。

FOR Urainは(a)を書きました >>。

次の2行は、ちょうど右の配列を形成しているところです。

Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i)。
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);

Urain iMAOnArray関数は、すでに形成されている配列を渡すべきだと思ったのでしょう。 FORループで形成してもダメでしたね。それは、この関数に渡された配列(iMAOnArray)ではなく、そのNAMEだからです。そして、その配列はPERSONALLYに処理されます。

MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMA,i) の文字列の i を変更することで実現。

問題を解決しました。見た目よりもずっと奥が深いのです。この処理をExpert Advisorの中だけで適用すれば問題はないのですが、それを使ってチャートを構築すると、とにかくヒヤッとします。ポイントは、配列のインデックスが逆になっていることです。関数 iMAOnArray は直接(左から右)インデックスを持ち、チャートは右から左へのインデックスを持つ。この説明をしてくれたGarfichに感謝します。



 
Stepan241 >> :

FOR Vinin さんが書き込みました>>。

ありがとうございます、でも役に立ちません。なぜなら、WhileループをFORループに置き換えただけだからです。

FOR Urainは(a)を書きました >>。

次の2行は、ちょうど右の配列を形成しているところです。

Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i)。
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);

Urain iMAOnArray関数は、すでに形成されている配列を渡すべきだと思ったのでしょう。 FORループで形成してもダメでしたね。それは、この関数に渡された配列(iMAOnArray)ではなく、そのNAMEだからです。そして、その配列はPERSONALLYに処理されます。

MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMA,i) の文字列の i を変更することで実現。

問題を解決しました。見た目よりもずっと奥が深いのです。この処理をExpert Advisorの中だけで適用すれば問題はないのですが、チャートを作るのに使うと、とにかくヒヤヒヤします。ポイントは、配列のインデックスが逆になっていることです。関数 iMAOnArray は直接(左から右)インデックスを持ち、チャートは右から左へのインデックスを持つ。この説明をしてくれたGarfichに感謝します。

何が問題だったのかわかりませんが、Vininさんが正しく書いてくれています(forもwhileも関係ない)、要は、最初にループでデータ配列を形成し、次のループでそこからiMAを形成しているのです。

で、文字列 Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i); は配列の i 番目の値のみを埋めるものです。

をループさせないと、配列は生成されません。