[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 170

 
Zhunko:
MQL4には、ビルド番号を返す関数やマクロはありません。


了解です。センクエ。

私は、チュートリアルのfi ndから、特定のアカウント、パスワードなどでしかフクロウの取引を担当しないコードの一部を削除することで、すべてを類推して行うことが可能だと思いました。

 
皆さん、こんにちは。よろしくお願いします。

その要旨は次のとおりです。ある価格で、自動的に保留の注文を 出すボットがある。

注文やその価格での取引が開かれていることを条件に、注文を出すことを禁止する必要があります。

3日前から試しているが、うまくいかない。
 

という選択肢があるのですが...。テストを行う。

//
// проверим среди Выставленных ордеров /сработавших/ - есть ли Байка
//
void CheckOrdBye()
{
  int total = OrdersTotal();
  int TotalOpenOrders = 0;
  for( int cnt=0; cnt<total; cnt++){
     if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) == true)  {
        if (OrderSymbol()==Symbol() ) {
            if ( OrderType() == OP_BUY)   { OrdYN = 1; return;}
            if ( OrderType() == OP_SELL)  { OrdYN = 2; return;}
        }
     }
  }
}
 
bestfx:
皆さん、こんにちは。よろしくお願いします。

その要旨は次のとおりです。ある価格で、自動的に未決済の注文を出すボットがある ...

注文送信ブロックの前に置く。
if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderOpenPrice()==bad_price) // bad_price - значение цены при котором не хотите выставить очередной ордер
      return(0);
}  }
 
Aleksander:

という選択肢があるのですが...。テストを行う。



コードについてコメントをお願いします。どうしたらいいのかわからない。
 
paladin80:
注文送信ブロックの前に置く。


例えば30件の注文があった場合はどうするのですか?

要は、小数点以下3桁まで平均化された価格から40ポイント差のある2つの反対売買が行われるというものです。

例えばユーロ/米ドルを1.251とします。買い1.253売り1.249とすると、マーケットは買い価格をクリップして1.251に戻り、今度は同じ価格でさらに2つのオーダーを出します。そして、マーケットが買い価格に移動している間、スクリプトはいくらでも注文を出すことができ、それらは同じように、つまり1つの価格=1つの注文として処理されるべきです。どのように実装するのか?

 
bestfx:


例えば、注文が30件あった場合はどうでしょうか?

要は、小数点以下3桁まで平均化された価格から40ポイント差のある2つの反対売買が行われるというものです。

例えばユーロ/米ドルを1.251とします。買い1.253売り1.249とすると、マーケットは買い価格をクリップして1.251に戻り、今度は同じ価格でさらに2つのオーダーを出します。そして、マーケットが買い価格に移動している間、スクリプトはいくらでも注文を出すことができ、それらは同じように、つまり1つの価格=1つの注文として処理されるべきです。どのように実装するのか?


マジック==価格を行うだけ
 
FAQ:

マジック==価格を行うだけ

もう少し具体的に教えてください。
 
価格を桁で割る=整数に落としてメジに書き、新規注文を出す前に未決済注文の配列からメジを検索する。
 
bestfx:
皆さん、こんにちは。よろしくお願いします。

そのエッセンスは次の通りです。ある価格で、自動的に未決済の注文を出すボットがある ...
double main_price=1.251;
double price_to_byu=1.253;
double price_to_sell=1.249;
// --------
bool restriction=false;
if (Ask<=main_price)
if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderType()==OP_BUY || OrderType()==OP_BUYSTOP)
      {  if (OrderOpenPrice()==price_to_byu) restriction=true;
}  }  }
if (restriction==false)
{  OrderSend(NULL,OP_BUYSTOP,Lot,price_to_byu, ...);
   return(0);
}
// --------
restriction=false;
if (Bid>=main_price)
if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderType()==OP_SELL || OrderType()==OP_SELLSTOP)
      {  if (OrderOpenPrice()==price_to_sell) restriction=true;
}  }  }
if (restriction==false)
{  OrderSend(NULL,OP_SELLSTOP,Lot,price_to_sell, ...);
   return(0);
}

同じような注文をたくさん出す場合は、配列を使う必要があります。どうやって?アレイについて読む