[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 514 1...507508509510511512513514515516517518519520521...631 新しいコメント 削除済み 2012.11.16 08:35 #5131 Jony5Proz:こんにちは。EAについて、こんな質問があります。スイングで注文を出しているのですが、例えば、MA_1 > MA_2 ならば、買います。しかし、私が取引を終了すると、このルールは再びトリガーされます。MA_2から4本以上離れていない場合にのみポジションを建てるようにEAに指示するにはどうしたらよいですか?ありがとうございました。何かが間違っていたり、場所が間違っていても、私を蹴らないでください。この巨大なフォーラムに初めて投稿します。 https://book.mql4.com/ru/samples/expert Jony5Proz 2012.11.16 09:21 #5132 どうも、その程度の知識しかないんです。例のスクリプトにも同じ問題があります。スクリプトをオンにすると、トレンドの最後に入るので不便です。2本のバーが交差した後、4本以下のバーがある場合にのみトリガーするようにスクリプトを指示するにはどうすればよいですか? 削除済み 2012.11.16 09:31 #5133 https://www.mql5.com/ru/code/10773 最終回入浴 TarasBY 2012.11.16 09:40 #5134 Jony5Proz:どうも、その程度の知識しかないんです。例のスクリプトにも同じ問題があります。スクリプトをオンにすると、トレンドの最後に入るので不便です。2本のバーが交差した後、4本以下のバーがある場合にのみトリガーするようにスクリプトを指示するにはどうすればよいですか? スクリプトは言葉を理解しない。2本のMAがクロスした後、4小節以内にスクリプトを実行することです。 Alexander Mostovnek 2012.11.16 10:44 #5135 皆さん、新しいローソク 足が出たときだけ注文を出す方法は、すでにここで質問しています。D1タイムフレームを使用しています。私は、過去のローソク足の分析から、あるレベル(buystop_lvl と sellstop_lvl )に保留注文を置くことにしました。保留中の注文が有効になっているかどうかは関係なく、有効になっているならば成行注文も閉じているはずです。注文は最大でbuystopとsellstopの2つです。以下は、私が書いたものです。1.まず、成行注文や未決済注文が有効かどうかを確認し、有効であれば削除・決済を行う。int total=OrdersTotal(); if (total!=0 && NewBar()==true){ for (int i=0; i<total; i++) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,10); if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,10); if(OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket()); if(OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket()); } }2.そして、計算されたレベルにより、保留の注文を出す。if(NewBar() == True && OrdersTotal()==0) { OrderSend(Symbol(),OP_BUYSTOP ,Lot,buystop_lvl ,10,buystop_SL ,buystop_TP,"Expert buystop\sellstop"); Sleep(10000); OrderSend(Symbol(),OP_SELLSTOP,Lot,sellstop_lvl,10,sellstop_SL,sellstop_TP,"Expert buystop\sellstop"); }3.私が実装したNewBar関数(NewBar)。//Функция нового бара bool NewBar() { static datetime lastbar = 0; datetime curbar = iTime(Symbol(),1440,0); if(lastbar != curbar) { lastbar = curbar; return(true); } else return(false); }その結果、新しいローソク足が開くと、注文が発注され、すぐに削除されます。発注してすぐに削除される。(1)のコードをコメントアウトすると、テスターでは注文が開かない、つまり成行注文にならないのですが、どうすればいいのでしょうか?何が問題なのか、教えてください。 Andrei Trukhanovich 2012.11.16 10:48 #5136 このNewBar()関数は、2回連続で使用できません。こんな感じのものが良いですね。bool newBar = NewBar();// さらに本文中では、NewBar()をnewBarに置き換えています。 Alexander Mostovnek 2012.11.16 11:05 #5137 しまった、まだやり方がわからない。次のローソク足でのみ注文を削除し、決済するコードが必要です。しかし、その上に開くのはまた別の人たちです。これは、プログラムが再び削除に入ることを意味します。フラッグが必要ですが、どうすればいいのか、すでに脳に汗をかいています :) Andrei Trukhanovich 2012.11.16 11:15 #5138 Noterday: そして一般的には、NewBarを捨てて、最後の注文の開始時刻を見て、Time[0]と比較するのです。もっと高ければ、自分の場合、全部削除していいんですよ。 Alexander Mostovnek 2012.11.16 11:17 #5139 trend_lab: そして一般的には、NewBarを捨てて、最後の注文の開始時刻を見て、Time[0]と比較するのです。もっと高ければ、自分の場合、全部削除していいんですよ。 そうですね、やるしかないでしょうね。ありがとうございました :) TarasBY 2012.11.16 11:20 #5140 Noterday: 男、まだやり方がわからない。注文の削除と決済が次のローソク足でトリガーされるようなコードが必要です。しかし、他のローソク足もこの上で開くはずです。これは、プログラムが再び削除に入ることを意味します。何らかのフラグが必要なのですが、その方法を理解するのに既に脳に汗をかいています :) OrderSend() 関数をよく読んでください。保留中の注文のパラメータがある。expiration - Срок истечения отложенного ордера.現在の日=iTime (Symbol(), PERIOD_D1, 0)の最初に保留注文を出すと、この時間にさらに1日-1440 * 60を追加することになります。保留中の注文は、トリガがかからないと、翌日の初めに勝手に削除されます。追伸:現在のバーの終わりは、関数iBarShift()によっても制御可能です。 if (iBarShift (Symbol(), PERIOD_D1, OrderOpenTime()) == 0) return(0);など、この条件での「体の動き」を、最後の注文のOrderTicket()をたどることで、確認することができます。 1...507508509510511512513514515516517518519520521...631 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは。
EAについて、こんな質問があります。
スイングで注文を出しているのですが、例えば、MA_1 > MA_2 ならば、買います。しかし、私が取引を終了すると、このルールは再びトリガーされます。
MA_2から4本以上離れていない場合にのみポジションを建てるようにEAに指示するにはどうしたらよいですか?
ありがとうございました。
何かが間違っていたり、場所が間違っていても、私を蹴らないでください。この巨大なフォーラムに初めて投稿します。
どうも、その程度の知識しかないんです。例のスクリプトにも同じ問題があります。スクリプトをオンにすると、トレンドの最後に入るので不便です。
2本のバーが交差した後、4本以下のバーがある場合にのみトリガーするようにスクリプトを指示するにはどうすればよいですか?
どうも、その程度の知識しかないんです。例のスクリプトにも同じ問題があります。スクリプトをオンにすると、トレンドの最後に入るので不便です。
2本のバーが交差した後、4本以下のバーがある場合にのみトリガーするようにスクリプトを指示するにはどうすればよいですか?
皆さん、新しいローソク 足が出たときだけ注文を出す方法は、すでにここで質問しています。D1タイムフレームを使用しています。
私は、過去のローソク足の分析から、あるレベル(buystop_lvl と sellstop_lvl )に保留注文を置くことにしました。
保留中の注文が有効になっているかどうかは関係なく、有効になっているならば成行注文も閉じているはずです。注文は最大でbuystopとsellstopの2つです。
以下は、私が書いたものです。
1.まず、成行注文や未決済注文が有効かどうかを確認し、有効であれば削除・決済を行う。
2.そして、計算されたレベルにより、保留の注文を出す。
3.私が実装したNewBar関数(NewBar)。
その結果、新しいローソク足が開くと、注文が発注され、すぐに削除されます。発注してすぐに削除される。
(1)のコードをコメントアウトすると、テスターでは注文が開かない、つまり成行注文にならないのですが、どうすればいいのでしょうか?
何が問題なのか、教えてください。
このNewBar()関数は、2回連続で使用できません。
こんな感じのものが良いですね。
bool newBar = NewBar();
// さらに本文中では、NewBar()をnewBarに置き換えています。
そして一般的には、NewBarを捨てて、最後の注文の開始時刻を見て、Time[0]と比較するのです。もっと高ければ、自分の場合、全部削除していいんですよ。
そうですね、やるしかないでしょうね。ありがとうございました :)
男、まだやり方がわからない。注文の削除と決済が次のローソク足でトリガーされるようなコードが必要です。しかし、他のローソク足もこの上で開くはずです。これは、プログラムが再び削除に入ることを意味します。何らかのフラグが必要なのですが、その方法を理解するのに既に脳に汗をかいています :)
OrderSend() 関数をよく読んでください。保留中の注文のパラメータがある。
現在の日=iTime (Symbol(), PERIOD_D1, 0)の最初に保留注文を出すと、この時間にさらに1日-1440 * 60を追加することになります。保留中の注文は、トリガがかからないと、翌日の初めに勝手に削除されます。
追伸:現在のバーの終わりは、関数iBarShift()によっても制御可能です。
など、この条件での「体の動き」を、最後の注文のOrderTicket()をたどることで、確認することができます。