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

 

その結果、インジケーターウィンドウに何も表示されないのはなぜか、説明してください。

コード

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 レッド
//---- バッファ
double Buf_0[]。

int init()
{
//---- インジケータ

SetIndexBuffer(0,Buf_0)を設定。
SetIndexStyle(0,DRAW_LINE, STYLE_SOLID,2)を設定します。
//----
return(0)です。
}

int start()
{
int i, counted_bars=IndicatorCounted();
i=Bars-counted_bars-1です。


while(i>=0)
{
Buf_0[i]=Close[i]/Close[i+1];
i--;
}
return(0)です。
}
//+------------------------------------------------------------------+

 
Abzasc:
どこが正確なのか


この条件は、(up>=1|down>=1), alerts, 少なくともどちらかが0より大きい場合にフィルタリングされるはずですが、そうではありません。

以下は

 
Dimka-novitsek:


この条件は、(up>=1||down>=1)の場合、アラート、それらの少なくとも1つは、ゼロよりも大きくなるはずですが、そうではありませんフィルタリングする必要があります。

こちら


int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
for (y=1; y>=0;y--) // первое выражение 
{ double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
if (up>=1||down>=1){
Alert("Previous upper fractal is:", up, " Previous lower fractal is:", down);Alert ("y",y);}}

return(0);
}
 
Galion:


エディタウィンドウを2つに分割しただけです :)よし、ダブルクリックのことは忘れよう。MQL4ファイルのシンタックスハイライトを 設定しましたか?もしそうでなければ、MQLコードのファイルを開いた後、エディターのシンタックスボタンを押して、リストの一番下にあるMQL4を選択してください - ハイライトはMetaEditorと全く同じになります

 
でも、どこがどう間違っているのか理解できない?
 
いや、でも無視しても、y=1を入れても何も変わらないよ!確認したんだ。
 
Dimka-novitsek:
でも、どこがどう間違っているのか理解できない?

余分なものを取り除いた。

int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
// for (y=5;y>=0;y--)
//{ 
double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
if (up>=1||down>=1){
Alert("Previous upper fractal is:", up, " Previous lower fractal is:", down);Alert ("y",y);}
//}
//----

//----
return(0);
}

と、こんな感じです。

それだけ?

 
dzhini:

質問の仕方が悪かったのでしょう。取引は1時間のタイムフレームで行われ、いつ取引が行われるかは不明ですが、日中の1回である必要があります。この機能を切り替えられるようにしたい。もしかしたら、誰かがそのようなコードを持っているかもしれません。


コードの断片を探す必要はありません。一生かけて探しても何も見つからないこともあるのです。自分でコードフラグメントを作る方法を探した方がいい。お渡ししたコードは、バカみたいにコピーするためではなく、特に非常にシンプルなので、最初から最後まで理解していただくためです。このコードの仕組みはこうです。成行注文のリストを参照し、その金額と今日開いた履歴の注文を合計します。合計が0より大きい場合、その注文は今日すでに開始されており、取引は できません。今日何件の注文を開けることができるかを考慮できるスイッチが必要な場合、簡単な操作でコードに追加することができます。あなたの問題は、あなたのプログラムのアルゴリズムを持っていないこと、あなたのプログラムがどのように、どのような順序で動くべきかを理解していないことです。アルゴリズムを作らないと、頭の中がぐちゃぐちゃになる。

 
ほら、話してみて、一発でわかったよ ))) がツボにはまったようです~(問題解決のアルゴリズムから飛び出せなかった)。たくさんのヒントをありがとうございました。今、私は提案されたすべてのオプション、つまりどのようなケースでどれが機能するかを把握しました。
 
dzhini:
まあ、あなたと話して、すぐにすべてを理解した )))) は、微調整に見えた - あなたは正しかった(私は私の問題解決のアルゴリズムから飛び出すことができませんでした)。たくさんのヒントをありがとうございました。これで、どのような場合にどれが有効なのか、提案された選択肢をすべて把握することができました。

私が示した注文検索ループは、注文マスターを考慮しないことに注意してください - これは、EAが自分の注文を他の注文と区別することができるような特性です。これは、EAが注文を出したときに割り当てられる番号で、すべての注文が同じ番号(または、必要に応じて自動生成される異なる番号)を持ちます。トレーダーが手動で注文を出す場合、マジックナンバーは常にゼロとなります。つまり、EAにmagic = 0を追加すると、EAがトレーダーのマニュアルトレードを妨害することになるのです。もし、EAがトレーダーの注文をそのままにして、自分の注文だけを操作したい場合は、ウィザードに0以外の値を設定する必要があります。この場合、Expert Advisorは、そのような魔力を持たないすべての注文を他人のものとみなし、触れないようにします。