//--------------------------------------------------------------------// globalvar.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------------int Experts; // Колич. экспертовdouble Depo=10000.0, // Заданный депозит
Persent=30, // Заданный процент
Money; // Искомые средстваstring Quantity="GV_Quantity"; // Имя GV-переменной//--------------------------------------------------------------------int init() // Спец. функция init
{
Experts=GlobalVariableGet(Quantity); // Получим тек. знач.
Experts=Experts+1; // Колич. экспертовGlobalVariableSet(Quantity, Experts); // Новое значение
Money=Depo*Persent/100/Experts; // Средства для эксп.Alert("Для эксперта в окне ", Symbol()," выделено ",Money);
return; // Выход из init()
}
//--------------------------------------------------------------------int start() // Спец. функция start
{
int New_Experts= GlobalVariableGet(Quantity);// Новое колич. эксп.if (Experts!=New_Experts) // Если изменилось
{
Experts=New_Experts; // Теперь текущ. такое
Money=Depo*Persent/100/Experts; // Новое знач. средств Alert("Новое значение для эксперта ",Symbol(),": ",Money);
}
/*
...
Здесь долен быть указан основной код эксперта,
в котором используется значение переменной Money
...
*/return; // Выход из start()
}
//--------------------------------------------------------------------int deinit() // Спец. ф-ия deinit
{
if (Experts ==1) // Если эксперт один..GlobalVariableDel(Quantity); //..удаляем GV-переменelse// А иначе..GlobalVariableSet(Quantity, Experts-1); //..уменьшаем на 1Alert("Эксперт выгружен из окна ",Symbol()); // Сообщ. о выгрузкеreturn; // Выход из deinit()
}
//--------------------------------------------------------------------
その通りだ。さらに、箱から値を取り出すとdouble型になるが、その結果をint型の変数に書き込むという命令があれば、コンパイラは自動的にその値を新しい箱に入れるために必要なすべての手段を講じる。 。
最後に念のため、最後の段落の私の感想をご確認ください...。そこで、上記のような専門家にお願いしてみましょう。
それから、文字列の中。
GV-variable」というボックスに整数型Expertsの変数を入れて保存しています(double型に変換しています)。そして、もし(仮に)Expert Advisorに文字列があったとして
int New_Experts=Experts;
というのは、int型の変数に結果を書き込むコマンドがあることを意味します。この場合、コンパイラは。
* は、double 型の変数の値を取り出してしまう。
* Experts 変数の値に必要な変更を加えます。
* この値を変数New_Expertsに代入し、...
* 変数 New_Experts の値を "int" ボックスに入れる。
つまり、変数の型は、ある値の外部ラッパー/パッケージでしかないということですね? そして、ダウングレードは数値に対してのみ許可され、文字列は数値に 変換されないので、GV変数は文字列型にはなりえません。
そうだろ?
ご回答をよろしくお願いいたします。
そうでないもの for (f=1;f<Bars;f++) { Price1 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,f)) / MarketInfo(Symbol_1, MODE_POINT)Price2 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,f)) / MarketInfo(Symbol_2, MODE_POINT); Spread = Price1 - Price2; Print ("Price1=" + Price1, " Price2="+Price2");
if (Spread==0){t=f; break;}.
} Price12 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,t)) / MarketInfo(Symbol_1, MODE_POINT); Price22 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,t)) / MarketInfo(Symbol_2, MODE_POINT); Spread2 = Price12 - Price22; 。
if (MathAbs(Spread2) >= razdvizka && Spread2 < 0) { open trade }.
スプレッドが0になったバーを固定し、そこからスプレッドを制御したい。
if(MathAbs(Spread)<eps) { .........。のように、条件を満たす点が見つかるかどうかという結果を制御する必要があります。IMHOでは、例えば次のように別の関数を作成する方が良いと思います。
こんにちは
インジケータに、d1などのように常に同じ期間を表示するための#プロパティが あるかどうかご存知ですか?
で、MetaTraderでタイムフレームを切り替えても切り替わらないのでしょうか?
しゃい
------------------------------------------
まあ何人のプロが......。
help!!!!
スクリプトからインジケータを呼び出す方法、ウィンドウに表示させる必要があります。
こんばんは!EAコードの変更にご協力お願いします。
1.テストではすべてうまくいきますが、取引では最初の取引を手動で開始しなければならず、ストップとテイクも手動です。新しいティックになったら自動的に取引を開始するようにしたいのですが。
2.ストップロスを トリガーした場合、次のポジションは前回のロットの2倍で建てられるので、ロットは理論上無限大に増える可能性がある(私の場合、最大51.2)ので、閾値を変更できるように制限したい(例えば、0.8)です。閾値に達してストップがかかると、EAは切断されず、0.1からやり直されます。
助けてください。何の役にも立たずに一日中苦労している。
オーダーはピックアップ(メインBAY、セールズストップはセーフティとして保留)。
閉店間際にノーロスで売れ残り、同じ場所で再び延期。
最後に念のため、最後の段落の私の感想をご確認ください...。そこで、上記のような専門家にお願いしてみましょう。
それから、文字列の中。
GV-variable」というボックスに整数型Expertsの変数を入れて保存しています(double型に変換しています)。そして、もし(仮に)Expert Advisorに文字列があったとして
というのは、int型の変数に結果を書き込むコマンドがあることを意味します。この場合、コンパイラは。
* は、double 型の変数の値を取り出してしまう。
* Experts 変数の値に必要な変更を加えます。
* この値を変数New_Expertsに代入し、...
* 変数 New_Experts の値を "int" ボックスに入れる。
つまり、変数型は、ある値の単なる外部ラッパー/パッケージ以外の何ものでもないのですね。そして、ダウングレードは数値に対してのみ許可され、文字列は数値に変換されないので、GV変数は文字列型にはなり得ないのです。
そうだろ?
回答ありがとうございました。
そうではありません。ポイントは、Experts変数がすでにint型であるため、値を代入する前に型変換を行う必要があること、つまり、コンパイラが
*double型の 値(プログラム上では名前はなく、単にコンパイラが知っているメインメモリかCPUレジスタのアドレスに書き込まれます)を取り出しました。
* 上記の変数の値に必要なすべての変更を加え、Experts変数に新しい値(int型!)を書き込みました。
* この値(int!型)を変数New_Expertsに代入しました。両者は同じ型なので、あるメモリ位置から別のメモリ位置へ値を転送するだけでよい。
追伸:自分の行いをここまで細かく把握している人がいるのは素晴らしいことだと思います。実際、冗談抜きで。連絡を取り合うこと。
こんばんは!EAコードの変更にご協力お願いします。
1.テストではすべてうまくいきますが、取引では最初の取引を手動で開始しなければならず、ストップとテイクも手動です。価格が新しいティックに達したときに、EAが自動的に取引を開始するようにしたいのですが。
ストップロスをトリガーした場合、次のポジションは前回のロットの2倍で建てられるので、ロットは理論上無限大に増える可能性がある(私の場合、最大51.2)ので、閾値を変更できるように制限したい(例えば、0.8)です。閾値に達してストップがかかると、EAは切断されず、0.1からやり直されます。
試してみてください。
皆さん、こんにちは。
利用可能な注文をすべてクローズするスクリプトがあるのですが。
その中の3行が理解できない。
難しくなければ、初心者のためにロシア語に翻訳してください。
チュートリアルを勉強しましたが、これほど長い論理表現には出会えませんでした。
添付しているスクリプトありがとうございます。