if (flag_NewBar) // пересчитываем только во время прихода первого тикаfor(i=i_max;i>=0;i--) // Цикл по непосчитанным барам
mas_MA[i]=NormalizeDouble(iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,
iBarShift(g_ext_smb,g_ext_TameFrame,Time[i],false)),Digits);
if (flag_NewBar==true) // пересчитываем только во время прихода первого тикаwhile(i>=0){ // Цикл по непосчитанным барам
mas_MA[i]=NormalizeDouble(iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,i),Digits);
i--;
}
できます。いつものエキスパート/スクリプト
もしかしたら、すでに似たようなものがあるかもしれませんが、どこにあるか教えてください。または、書ける人を知っていますか?
ヘルププロ
以下のコード片は動作しません。
MA値を算出し、MA変数に代入する。
を正しく表示しますが、配列には代入されません。配列の定義は、double
ダイナミックなprintプロシージャは、配列のNULL値を表示します。
i=i_max; // ...与えられた数値を計算する。
if (flag_NewBar==true) // 最初のティック到着時のみ再計算を行う
{
while(i>=0) // 未読のバーでループする。
MA=iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,i);
MA=NormalizeDouble(MA,Digits)とする。
mas_MA[i]=MA;
i--; }
なぜエラー130が発生するのか理解できないのですが?よろしくお願いします。
以下はそのコードです。
わざとAlertを挿入して問題を確認するも、見つからない。
アラートのメッセージはこちらです。
2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50セント iK EURUSD,M1: OrderSend error130
2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 cent iK EURUSD,M1: Alert: OP_SELLLIMIT: Spread=1 Stop=10.00 Lot=0.010 Pr=1.280300 SL=1.320300 TP=1.240300です。
ヘルププロ
以下のコード片は動作しません。
MA値を算出し、MA変数に代入する。
を正しく表示しますが、配列には代入されません。配列の定義は、double
ダイナミックなprintプロシージャは、配列のNULL値を表示します。
i=i_max; // ...与えられた数値を計算する。
if (flag_NewBar==true) // 最初のティック到着時のみ再計算を行う
{
while(i>=0) // 未読のバーでループする。
MA=iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,i);
MA=NormalizeDouble(MA,Digits)とする。
mas_MA[i]=MA;
i--; }
ArrayResize(mas_MA,i_max);
皆さん、アドバイスをお願いします。0.1~0.4秒間に10~11pを過ぎるとビープ音が鳴るようなプログラムは作れないでしょうか?
なぜエラー130が発生するのか理解できないのですが?よろしくお願いします。
以下はそのコードです。
わざとAlertを挿入して問題を確認するも、見つからない。
アラートのメッセージはこちらです。
2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50セント iK EURUSD,M1: OrderSend error 130
2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 cent iK EURUSD,M1: Alert: OP_SELLLIMIT: Spread=1 Stop=10.00 Lot=0.010 Pr=1.280300 SL=1.320300 TP=1.240300です。
ステップバイステップで、始値をオーバーシュートするストップ(振り子が始値より低いため)を定数に変更し、ほぼ誤差の範囲内であることを突き止めます。
ヘルプより「保留中の注文の開始価格が正しくない場合、エラー 130(ERR_INVALID_STOPS)が発生します」。
よろしくお願いします
以下のコード片は動作しません。
MA値を算出し、MA変数に代入する。
を正しく表示しますが、配列には代入されません。配列の定義は、double
ダイナミックなprintプロシージャは、配列のNULL値を表示します。
i=i_max; // ...与えられた数値を計算する。
if (flag_NewBar==true) // 最初のティック到着時のみ再計算を行う
{
while(i>=0) // 未読のバーでループする。
MA=iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,i);
MA=NormalizeDouble(MA,Digits)とする。
mas_MA[i]=MA;
i--; }
読む
https://book.mql4.com/ru/operators/while
https://docs.mql4.com/ru/series/iBarShift
私ならこうする
ステップバイステップで、定数にオーバーシュート始値(振り子が価格より高いとして)を取るストップを変更し、エラーがどこにあるかを実質的に識別することができます。
ヘルプより「保留中の注文の開始価格が間違っている場合、エラー 130(ERR_INVALID_STOPS)が発生します」。
はい、UZH :)確かに、ペンディングの始値が現在値に近いというのはエラーになります。修正し、動作するようにしました。ありがとうございました
オブジェクトの描画に使用できるeibarshiftは0よりいくつ小さいのでしょうか? 最小値は?
ebarshiftは 時間でバーを検索しています(何も動作しません)。
ターミナルでは、最後のバーは0であり、時間はバーにリンクされている、すなわち、文字列を介して未来にこの方法のみ