[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 505

 
eugggy:
bar は、外部設定(Start_Point)で設定された時間に対する現在のバーのシフト量です。

bar = ?削除時に何を?
 
ask: 無礼講にする必要があるのか?

問題文はまだないし、あなたが走り書きしたものは疑似コードですらありません。

私が間違ってあなたをテレパスに送ったとでも?

 
sergeev:

bar = ?削除の瞬間に何を?
うまくいけば、以前の値に戻る。つまり、バーの有効期限が切れたときにその文書が必要なければ、削除しなければならないのです。
 
eugggy:
そのこれまでの価値を

まあ、うまくいくことを祈るのみです。

 
sergeev:

まあ、うまくいくことを祈るのみです。



:-)間違いを指摘することはできないのですか?
 
eugggy:
:-)間違いを指摘することはできないのですか?

:) しかし、what bar=?!!!という質問に答えると、それはできないのでは?
 
sergeev:

:) しかし、what bar=の質問に答えられないのですが、できますか? 。
まあ、話題は初心者向けだし、削除した瞬間のバーが何なのか確かめれば、EAが動くかもね。ドキュメントが閉じられると、つまり新しいバーが 現れると、変数barの値が1増加します。削除関数にbar-1、つまりすでに閉じたドキュメントの番号を入れ、前のバーが指定条件を満たさない場合、番号=変数barの現在の値から1を引いた値のドキュメントが削除されます。すでに削除された文書を削除しているため、エラーが発生するのでしょうか?
 

は誰も間違いに気づかなかったので、もう一度。

コードの間違いを教えていただけますか? ありがとうございます。

//+------------------------------------------------------------------------+
//| line.mq4 |
//|
||
//+--------------------------------------------------------+
//--- 入力パラメータ
extern bool sell = 1; // 売りの許可
extern bool buy = 1;
extern double lots = 0.1;
extern int sl = 50;
extern int tp = 150;

extern int order = 10; //

extern double bez = 15;
extern double tral_step = 15;
extern double tral_start = 10;

//+--------------------------------------------------+
//|エキスパート初期化関数
//+----------------------------------------------------------------+
int init()
{
return(0);
} }.
//+------------------------------------------------------------------------+
//| エキスパートの初期化関数 |
//+--------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}.
//+------------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------------+
int start()
{
//----
string sell_stop ="ss"; //手動でライン名
string buy_stop ="bs";

//buy----------------------------------------

//ラインを見つけて価格がタッチしたら注文
if (ObjectFind (buy_stop) > 0 ) //ライン buy_stopありのとき。
if ( ObjectGet (buy_stop, OBJPROP_PRICE1=Ask )// ラインに触れる
{
OrderSend (Symbol(),OP_BUYSTOP, lots, Ask+Point*order,3, Bid-sl*Point, Bid+tp*Point );// 注文送信
ObjectDelete (buy_stop); // ラインは削除
}


return(0;
} }
//+-------------------------

 
TESKATLIPOKA:

誰も間違いに気づいていないので、もう一度。

コードのエラーを教えてください。


以下はその例です(あなたのコードにはもっと多くのエラーがありますが、これらのエラーはコンパイラを通過することさえできません)。 。

if ( ObjectGet (buy_stop, OBJPROP_PRICE1=Ask )// касание линии
また、コンパイラから見てよりまともなコードに変更したとしても、

if ( ObjectGet (buy_stop, OBJPROP_PRICE1) == Ask )// касание линии

誤差が分からない場合は、比較前に実測値の正規化を事前に行わないと、やはり理論的に間違っていることになります。さらに悪いことに、価格が1ティックで1ピップ以上変化した場合、正規化に失敗し、条件がすり抜けることがあります。

以下の方法で交差条件を求めるのがより正しい。

if (ObjectGet (buy_stop, OBJPROP_PRICE1) <= High[0]) && (ObjectGet (buy_stop, OBJPROP_PRICE1) >= Low[0]))//  на текущей свече касание линии уже имело место


追伸:MetaTraderでは、コンパイル後のエラー箇所を見つけるのは非常に簡単です。

1.ツールボックス」タブの「ファイル」欄で、コンパイラがエラーを検出した行番号とシンボル番号をカンマ区切りで指定します。

2.同じタブの「説明」欄にあるエラーメッセージを ダブルクリックすると、コンパイラがエラーを検出した場所にエディタ内のカーソルがジャンプします。

 
eugggy:
まあ、話題は初心者向けだし、削除時のバーが確かならEAが動くかもね。
では、どうやってバーを調べればいいのか聞いてください。