//-----------------------------------------------------------------------------+void start() {
string sy=Symbol();
int i, k=OrdersTotal()-1;
for (i=k; i>=0; i--) {
if (OrderSelect(i,SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue;
if (OrderType()>1) continue;
if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
}
}
return;
}
//-----------------------------------------------------------------------------+
//-----------------------------------------------------------------------------+void start() {
string sy=Symbol();
int i, k=OrdersTotal()-1;
for (i=k; i>=0; i--) {
if (OrderSelect(i,SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue;
if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
}
}
return;
}
//-----------------------------------------------------------------------------+
売り物です。
//-----------------------------------------------------------------------------+void start() {
string sy=Symbol();
int i, k=OrdersTotal()-1;
for (i=k; i>=0; i--) {
if (OrderSelect(i,SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue;
if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
}
}
return;
}
//-----------------------------------------------------------------------------+
//-----------------------------------------------------------------------------+void start() {
string sy=Symbol();
int i, k=OrdersTotal()-1;
for (i=k; i>=0; i--) {
if (OrderSelect(i,SELECT_BY_POS)) {
if (OrderMagicNumber()>0) continue;
if (OrderSymbol()!=sy) continue;
if (OrderType()==OP_SELL) {
double pp=MarketInfo(Symbol(),MODE_ASK);
OrderClose(OrderTicket(),OrderLots(),pp,5,Red);
}
}
}
return;
}
//-----------------------------------------------------------------------------+
All BuyとAll Sellは別のスクリプトです。それは最初から明らかでした。問題は、絶対にすべてのポジションを閉鎖しなければならないのか、ということです。それとも、スクリプトが実行されているチャート上のポジションのみをクローズするのでしょうか?手動で開いたポジション、Expert Advisor で開いたポジション、またはその両方を閉じるべきですか?
すべて絶対ですが、スクリプトのベースとなるチャートの種類によって、できるだけシンプルにするために、いろいろなエラーメッセージが出るほうがいいんです。私はExpert Advisorを使用しておらず、現在はトライアルのみで、来月は生活の中で何の活動も計画していません。
つまり、この場合、良いスクリプトとチュートリアルの違いを生むのは、取引エラーの処理なのです。そこから学びたいのか、100%うまくいくことを望んでいるのか。
原理だけなら、ここにあります。
買いと売りの両方をクローズします。
エラー処理も全くありません。自分用に買いだけ、または売りだけをクローズすることができます - 1行削除してください。
まあ...のみ購入する。
売り物です。
ありがとうございました。これこそ、私が必要としているものです。でも、赤と青、何のためにあるかというと、おそらく各注文のリセットポイントを示しているのでしょう?試してみたら、さっそくartmedia70さんのcodebaseに追加してみます。ところで、スクリプトが正確で開発者が自信を持っているのであれば、なぜノーマルの加工が必要なのでしょうか?
そして、多分私は方法によってそれらを追加する必要はありませんし、artmedia70である開発者自身がコードベースに追加されます、彼らはそこに必要とされることが判明し、私はそこにアカウントを持っていない、とコメントには、単語を答えることができないだろう、えっ?
ありがとうございました。でも、それが私には必要なんです。でも、赤と青、何のためにあるかというと、おそらく各注文のリセットポイントを示しているのでしょう?試してみたら、さっそくartmedia70さんのcodebaseに追加してみます。
いや、コードベースには、まったく関係ない。私はチュートリアルではなく、信頼できるものを作るのに慣れているんです :)
普通のスクリプトを見せたら、「私もみんなと同じで、またいろいろな『間違い』を書いている」と言われそうですが......。でも...これがないとダメなんです。これは私たちのお金を使った仕事です。
ブルーとレッドは、クロージャーマークの色です。
いや、猫基地は必要ない。私はチュートリアルではなく、信頼できるものを作るのに慣れているんです :)
普通の脚本を見せたら、「私もみんなと同じで、またパクリばかり書いて......」と言われそうですが。でも...これがないとダメなんです。これは私たちのお金を使った仕事です。
青と赤は、閉じるアイコンの色です。
ところで、通常のスクリプトは明確で、開発者が自信を持っているのであれば、なぜ処理する必要があるのでしょうか?
開発者は、自分のプログラムが取引サーバーから返されるエラーに対処できる場合にのみ、自分のプログラムに自信を持つことができます。エラー処理を行わないと、最初のエラーでプログラムがつまずくことがあります。このエラーはプログラムのエラーではなく、トレードサーバーが返したエラーです。例えば - 上記のスクリプトは、新鮮なデータを取得することはできません。そのため、サーバーは間違った価格についてのエラーを返すことがあります。また、終値の AskやBidの代わりに、MarketInfo(Symbol(),MODE_ASK) や MarketInfo(Symbol(),MODE_BID) を使って取得した価格を使うこともできます。
すると、スクリプトはこのような形になります(Sellの場合)。
また、サーバーから返された他のエラーを処理しようとすると、「またやってしまった...」と言ったときに、それらの値まで大きくなってしまいます :)
今ならわかる、そうだ、大事なことなんだ。ここはネットもダメ、ハードも若いので、二束三文で頼るのはあまり賢明ではありませんが、リスクは立派なものです =)が、今回も追加ありがとうございます、売買ともに追加させていただきますね。
購入に適しているか?
void start() {
string sy=Symbol();
int i, k=OrdersTotal()-1;
for (i=k; i>=0; i--) {
if (OrderSelect(i,SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue;
if (OrderType()==OP_BUY) {
double pp=MarketInfo(sy,MODE_BID);
OrderClose(OrderTicket(),OrderLots(),pp,5,Blue);
}
}
}
return;
}
また、5つの買い注文のうち、どの値が一番大きいか、3つだけ削除する必要がある場合、スクリプトのサイズは 大きくなりますか?あと、もう一つ、わざわざ聞くのもなんですが、このチェックにずっと時間がかかるので、チェックありのスクリプトと、エラーチェックなしのスクリプトでは、どちらが滑る確率が高いのでしょうか?
今ならわかる、そうだ、大事なことなんだ。ここはインターネットがダメなのは事実、ハードも若いので200%フルに頼るのはあまり賢明ではありませんが、リスクは立派なものです =)が、今回も追加ありがとうございます、売買ともに追加させていただきますね。
購入はこれでいいのでしょうか?
しかし、それだけではない...。;)
このスクリプトは、未処理の類似エラーに加え、「エイリアン」オーダーにも触れることになる。つまり、このシンボルでEAが動作している場合、スクリプトはそのポジションをクローズし、EAが再びそれをオープンします。こうして、互いに「戦う」ことになるのです。
これを避けるために、スクリプトをマジックで限定する必要がある。例えば、if (OrderMagicNumber()>0) continue; という行を追加 すると、スクリプトは手動で開いた注文に対してのみ機能します。
売り物です。
そして、「普通」の信頼性を得るためには、もっともっと磨きをかける必要があるのです。いずれはそうなると信じています。;)
はい、でもそれだけではありません...。;)
このスクリプトは、残りの未処理の類似エラーとは別に、「エイリアン」オーダーにも触れることになる。つまり、このシンボルでEAが動作している場合、スクリプトはそのポジションをクローズし、EAは順番にそれらを再びオープンします。こうして、互いに「戦う」ことになるのです。
これを避けるために、スクリプトをマジックで限定する必要がある。例えば、if (OrderMagicNumber()>0) continue; という行を追加すると、スクリプトは手動で開いた注文のみを処理します。