int global1 = 1;
int global2 = 2;
void myfunction(int g1, int g2)
{
global1 = g1;
global2 = g2;
}
int start()
{
// До выполнения функции: global1=1, global2=2 <--- то что объявили в начале кода
myfunction(3, 4);
// После выполнения функции: global1=3, global2=4 <--- то что присвоили в функции
}
MaxZ: Единственная проблема состоит в том, что если советник с данным кодом запустить в тестере, а переменной PERIOD присвоить значение PERIOD_M1, то обе функции iBarShift возвращают -1, т.е. функции не удалось найти в истории бар на ТФ M1 с таким временем...Почему так происходит, не знаю.
よし、別の見方もしてみよう。
vteor12は、(dVolume+vback1)/k1(係数1)と書くことができる。
vrealUP12は、(dVolume+vback1)/k2(係数2)と書くことができる。
指標となるイデオロギーを説明しようとしたとき、それはいくつかの理論的なレベルと実際のレベルの比較で構成されています。このレベルを得るために、同じ値(dVolume+vback1)をある理論値(k1)と実際の値(k2)と比較(つまり分割)します。k1物事を正式名称で表現するために、私が作っていることは明らかです。あるいは、思い込みとでもいいましょうか。さて、これは何かと比較しなければならない。この場合、グラフそのものほど客観的で真実味のあるものはない。そこで私は、オープニングとクロージングの差を、ある期間の底値と捉えています。そして、ここでの唯一の仕事は、それを同じ桁にすることであり、そのために1000倍されるのである。
隣人ローソク足のいくつかの異なるバリエーションを電卓で計算してみると、この非常に単純な計算式による結果の多様さに驚くかもしれません。
そして、学校の論理という点では、あなたの言うとおりです。Volume+Volume/Priceを追加しています、学校ではできないですよね。:))
私はパス...:)))
当初、ディスプレイの不具合はなかったのでしょうか?解決したのですか?
私はパス...:)))
当初、ディスプレイに何か問題があったのでは?解決したのですか?
そうです、ちなみに私はそうでした。ヒストグラムではなく、線 であることを考慮していませんでした。線は2点であること。すべてのバリエーションを記述しているわけではなく、2本続けて上昇した場合のみ記述しているため、2本目の上昇ローソクの後に下降ローソクがあった場合、インジケータは何も描画しませんでした。そして、それは正しかった。それがわかってから、ヒストグラムに修正したんです。
ちなみに、足し算と引き算のルールに関する私の推理を鵜呑みにしないでください。:)))
そして、そのコードの続きを教えていただけると大変ありがたいです。まさに「始まり」でした。ローソク足が2本並んだら、同じ原理で3本、4本...と数えていきたい。どうやら、ローソク足の検索をしながら、コードをループさせればいいようですね?まだできないんです。しかし、何によって分けられているかにこだわってはいけません。:)))
から移植されました。
こんにちは。ついに初めてのEAを書きましたその仕組みがよくわからないのです。このEAでは、ある条件を満たすと2つの保留注文が設定されます。両方の注文のストップロスは、保留中の売り(買い)注文のHigh[1] (Low[1]) に等しく、テイクプロフィットは常にストップロスに対するpipsに等しくなります。ストラテジーテスターで、利益がストップロスと必ずしも一致しないことに気づきました。 どうしてこのようなことが起こるのか、アドバイスをお願いします。これはストップオーダーが計算されるコードです(プログラム内でストップオーダーが変更される場所は他にありません)。
関数内で複数のグローバル変数に値を割り 当てることは可能でしょうか。
できます。
グローバルに変数を宣言 する - start()関数の前に。EAの関数内部で、好きなように値を変更してください。関数から戻った後、これらの変数は、どこかで再び変更するまで、関数内部で割り当てた値を保持しています。
こんにちは!関数内で複数のグローバル変数に値を代入することが可能かどうか、またその場合、これらの変数はどこで宣言する必要があるのか、教えてください。
例myfunctionの内部では、2つのグローバル変数に 値を代入しています。この方法で、3つ、4つ、n個の変数に値を割り当てることもできます。
でも、その質問には引っ掛かりがあると思うんです...。
はい、ちなみに、自分で整理しました。ヒストグラムではなく、ラインであることを考慮していませんでした。そして、その線は2点を必要とします。すべてのバリエーションを記述しているわけではなく、2本続けて上昇した場合のみ記述しているため、2本目の上昇ローソクの後に下降ローソクがあった場合、インジケータは何も描画しませんでした。そして、それは正しかった。それがわかったところで、ヒストグラムに変換してみました。
ところで君、足し算引き算のルールに関する私の推理を鵜呑みにしないで、実験だと思ってくれ。:)))
そして、そのコードの続きを教えていただけると大変ありがたいです。まさに「始まり」でした。ローソク足が2本並んだら、同じ原理で3本、4本...と数えていきたい。どうやら、ローソク足の検索をしながら、コードをループさせればいいようですね?まだできないんです。しかし、何によって分けられているかにこだわってはいけません。:)))
しかし、この問題を解決するには、カウンターを持つループ "for "ではなく、後前提 条件を持つループ "while "を使用するのが一番です。なぜなら、強気または弱気のローソク足が何本並ぶかわからないからです。
そんなに難しいなら、もっと簡単な問題から始めてください。例えば、aからbまでの数字をs刻みで表示する。あるいは、ループでnの階乗を求める。
また、練習として、両方のタイプのループ("for "と "while")を使って、これらの問題を解いてみましょう。そうすれば、インジケーターの改善に着手することができます。
言語にはpost-whileループはありませんよ、MaxZ さん。
人の役に立ちたいという気持ちは立派ですが、やはり自分自身がもっと言葉を知らなければなりません。
この言語には、post-whileループは存在しない。
ループを次のように整理すると、ちょうどよい後件が得られます。
しかし、あなたの訂正を受け入れます。ありがとうございます。MQL4では、確かに2つのループタイプがあるので。"for"(カウンタ付き)と "while"(前提条件付き)です。3つ目のタイプ(後件付き)は、意図的にしか編成できない。
人の役に立ちたいという気持ちは立派ですが、やはり自分自身がもっと言葉を知らなければなりません。
知らないことは、そこに行かない。
そして、それ以外のミスは、すべてうっかりしていたのです。最近、気が抜けてしまって...。ただ、人の役に立ちたいだけなんです。
MaxZ: Единственная проблема состоит в том, что если советник с данным кодом запустить в тестере, а переменной PERIOD присвоить значение PERIOD_M1, то обе функции iBarShift возвращают -1, т.е. функции не удалось найти в истории бар на ТФ M1 с таким временем... Почему так происходит, не знаю.
おそらく、この機能はテスターではモデル化されていないのでしょう(確認はしていません)。特に、exact(関数の4番目のパラメータ)はデフォルトでfalseに設定されているためです。