どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 219

 
artmedia70:
All BuyとAll Sellは別のスクリプトです。それは最初から明らかでした。問題は、絶対にすべてのポジションを閉鎖しなければならないのか、ということです。それとも、スクリプトが実行されているチャート上のポジションのみをクローズするのでしょうか?手動で開いたポジション、Expert Advisor で開いたポジション、またはその両方を閉じるべきですか?

そうでなければ、エラーメッセージやチェックなどを書いてしまうかもしれない。私はEAを使用していない、私は今だけtrier、私は来月に私の生活の中でクラスの予定がない、私はFXを確認することにしました。
 
bambastik:
すべて絶対ですが、スクリプトのベースとなるチャートの種類によって、できるだけシンプルにするために、いろいろなエラーメッセージが出るほうがいいんです。私はExpert Advisorを使用しておらず、現在はトライアルのみで、来月は生活の中で何の活動も計画していません。

つまり、この場合、良いスクリプトとチュートリアルの違いを生むのは、取引エラーの処理なのです。そこから学びたいのか、100%うまくいくことを望んでいるのか。

原理だけなら、ここにあります。

//-----------------------------------------------------------------------------+
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;
}
//-----------------------------------------------------------------------------+

買いと売りの両方をクローズします。

エラー処理も全くありません。自分用に買いだけ、または売りだけをクローズすることができます - 1行削除してください。

まあ...のみ購入する。

//-----------------------------------------------------------------------------+
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;
}
//-----------------------------------------------------------------------------+
 

ありがとうございました。これこそ、私が必要としているものです。でも、赤と青、何のためにあるかというと、おそらく各注文のリセットポイントを示しているのでしょう?試してみたら、さっそくartmedia70さんのcodebaseに追加してみます。ところで、スクリプトが正確で開発者が自信を持っているのであれば、なぜノーマルの加工が必要なのでしょうか?

そして、多分私は方法によってそれらを追加する必要はありませんし、artmedia70である開発者自身がコードベースに追加されます、彼らはそこに必要とされることが判明し、私はそこにアカウントを持っていない、とコメントには、単語を答えることができないだろう、えっ?

 
bambastik:

ありがとうございました。でも、それが私には必要なんです。でも、赤と青、何のためにあるかというと、おそらく各注文のリセットポイントを示しているのでしょう?試してみたら、さっそくartmedia70さんのcodebaseに追加してみます。

いや、コードベースには、まったく関係ない。私はチュートリアルではなく、信頼できるものを作るのに慣れているんです :)

普通のスクリプトを見せたら、「私もみんなと同じで、またいろいろな『間違い』を書いている」と言われそうですが......。でも...これがないとダメなんです。これは私たちのお金を使った仕事です。

ブルーとレッドは、クロージャーマークの色です。

 
artmedia70:

いや、猫基地は必要ない。私はチュートリアルではなく、信頼できるものを作るのに慣れているんです :)

普通の脚本を見せたら、「私もみんなと同じで、またパクリばかり書いて......」と言われそうですが。でも...これがないとダメなんです。これは私たちのお金を使った仕事です。

青と赤は、閉じるアイコンの色です。


私はcattobaseについて、あまりにも赤と青のすべてを理解し、一般的にもう一度あなたの助けを非常に感謝しますが、私はそれが非常にまれでない限り、外にyakを開始しません、インターネットはすべてのこれらのcurtiesとチラシを超えて、唯一の思考と方法であなただけあなたの数千よりも百倍尊敬することができますが運ぶ必要がありますそれは歌詞です)一般的にアートメディア70おかげで多くの、非常にスクリプトが助け、それとcattobaseで私は行くことはありません。イモ、お金はすぐにキャンセルされます、仮想とライムを残すので、誰もが厳密に識別可能な特定の金額以上ではない、予算内の残りの部分などのアカウントを持っている可能性があります。
 
bambastik:

ところで、通常のスクリプトは明確で、開発者が自信を持っているのであれば、なぜ処理する必要があるのでしょうか?

開発者は、自分のプログラムが取引サーバーから返されるエラーに対処できる場合にのみ、自分のプログラムに自信を持つことができます。エラー処理を行わないと、最初のエラーでプログラムがつまずくことがあります。このエラーはプログラムのエラーではなく、トレードサーバーが返したエラーです。例えば - 上記のスクリプトは、新鮮なデータを取得することはできません。そのため、サーバーは間違った価格についてのエラーを返すことがあります。また、終値の 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_SELL)  {
            double pp=MarketInfo(sy,MODE_ASK);
            OrderClose(OrderTicket(),OrderLots(),pp,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) {
double pp=MarketInfo(sy,MODE_BID);
OrderClose(OrderTicket(),OrderLots(),pp,5,Blue);
}
}
}
return;
}

また、5つの買い注文のうち、どの値が一番大きいか、3つだけ削除する必要がある場合、スクリプトのサイズは 大きくなりますか?あと、もう一つ、わざわざ聞くのもなんですが、このチェックにずっと時間がかかるので、チェックありのスクリプトと、エラーチェックなしのスクリプトでは、どちらが滑る確率が高いのでしょうか?

 
bambastik:

今ならわかる、そうだ、大事なことなんだ。ここはインターネットがダメなのは事実、ハードも若いので200%フルに頼るのはあまり賢明ではありませんが、リスクは立派なものです =)が、今回も追加ありがとうございます、売買ともに追加させていただきますね。

購入はこれでいいのでしょうか?

しかし、それだけではない...。;)

このスクリプトは、未処理の類似エラーに加え、「エイリアン」オーダーにも触れることになる。つまり、このシンボルでEAが動作している場合、スクリプトはそのポジションをクローズし、EAが再びそれをオープンします。こうして、互いに「戦う」ことになるのです。

これを避けるために、スクリプトをマジックで限定する必要がある。例えば、if (OrderMagicNumber()>0) continue; という行を追加 すると、スクリプトは手動で開いた注文に対してのみ機能します。

売り物です。

//-----------------------------------------------------------------------------+
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;
}
//-----------------------------------------------------------------------------+

そして、「普通」の信頼性を得るためには、もっともっと磨きをかける必要があるのです。いずれはそうなると信じています。;)

 
artmedia70:

はい、でもそれだけではありません...。;)

このスクリプトは、残りの未処理の類似エラーとは別に、「エイリアン」オーダーにも触れることになる。つまり、このシンボルでEAが動作している場合、スクリプトはそのポジションをクローズし、EAは順番にそれらを再びオープンします。こうして、互いに「戦う」ことになるのです。

これを避けるために、スクリプトをマジックで限定する必要がある。例えば、if (OrderMagicNumber()>0) continue; という行を追加すると、スクリプトは手動で開いた注文のみを処理します。


私はそれを行う方法を知らない、私はエキスパートアドバイザー、指標、信号と残りの部分に到達することはありません、だから私はDotaをプレイする退屈して、私はそれの動きを見るのが大好き、それは非常に美しいです、だから私はちょうどそうです、一般的な開発のために、今私は非自動と非アドバイザーが開いているマジック注文が何かを理解して、彼らはおそらく同じ人ですが;)。
 
スクリプト/アドバイザーを使って、2つの反対注文をn*pipsの利益でクローズすることができますか?