MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1356

 
Lerchik:

つまり、Askで成行注文を出すことは、BuyLimit注文を出すことに等しいということですね。

何かおかしいぞ。買値が1.4500であったとします。つまり、マーケットから買い注文を出すと、Ask価格に立ち、BidのAsk価格は、仮に10ポイントとします。

そうすると、1.4510にオーダーが立つことになります。

現在、BuyLimitオーダーは1.4500に等しくなっています。そして、価格がAskの価格より10ポイント低くなると、Askは注文を開始します。Bidではなく、Askで。

ちょっとまとまりませんね。両者は別物であり、そのように比較することはできません。

もしかしたら、私が間違っているのでしょうか?

すべての買い注文はAskで始まりBidで終了し、売り注文は その逆となります。

読むのが面倒な人は、デモ口座を開設して練習してください。

 
Сергей Таболин:

まずはドキュメントを読むことから始めてみてはいかがでしょうか。

以下は、ドキュメントに記載されている内容です。

保留中の注文

未決済注文とは、将来の日付に指定された条件で金融商品を売買することを証券会社から指示されることです。保留中の注文には、以下の種類があります。

  • 買い指値- 注文で指定されたAsk価格と同じかそれより低い価格で買うための取引要求現在の価格水準が注文時の値より高い。通常、このタイプの注文は、商品価格があるレベルまで下がると伸び始めると予想して出すものです。

しかし、ここに書かれていること、その仕組みが理解できない。

つまり、価格がバイリミットを下回ると、アスコムが注文を出す。しかし同時に、同じ価格かそれ以上の価格で注文が開かれるのでしょうか?

これについては、どこにも書いていない。あるのはルールだけです。ここでは誰もその理由を説明しようとしない。

だから、私は何かを成し遂げようとしているのです。

 
Lerchik:

以下は、ドキュメントに記載されている内容です。

保留中の注文

未決済注文とは、将来、指定された条件で金融商品を売買することを証券会社から指示されることです。保留中の注文には、以下の種類があります。

  • 買い指値- 注文で指定されたAsk価格と同じかそれより低い価格で買うための取引要求現在の価格水準が注文時の値より高い。通常、このタイプの注文は、商品価格があるレベルまで下がると伸び始めると予想して出すものである。

しかし、ここに書かれていること、その仕組みが理解できない。

つまり、価格がバイリミットを下回ると、アスコムが注文を出す。しかし同時に、同じ価格かそれ以上の価格で注文が開かれるのでしょうか?

これについては、どこにも書いていない。あるのはルールだけです。ここでは誰もその理由を説明しようとしない。

だから、何かを成し遂げたいのです。

BuyLimit は Ask price より下にのみ設定することができます。SellLimitはBid価格より高い価格しか設定できません。

BuyStopはAsk価格より上にのみ設定可能です。SellStopはBid価格より下にのみ設定可能です。

対応する価格が対応する注文に到達すると、その注文は有効となり、対応するポジションが作成されます。

 
Lerchik:

以下は、ドキュメントに記載されている内容です。

保留中の注文

未決済注文とは、将来、指定された条件で金融商品を売買することを証券会社から指示されることです。保留中の注文には、以下の種類があります。

  • 買い指値- 注文で指定されたAsk価格と同じかそれより低い価格で買うための取引要求現在の価格水準が注文時の値より高い。通常、このタイプの注文は、商品価格があるレベルまで下がると伸び始めると予想して出すものです。

しかし、ここに書かれていること、その仕組みが理解できない。

つまり、価格がバイリミットを下回ると、アスコムが注文を出す。しかし同時に、同じ価格かそれ以上の価格で注文が開かれるのでしょうか?

これについては、どこにも書いていない。あるのはルールだけです。ここでは誰もその理由を説明しようとしない。

だから、何かに手を伸ばしているのです。

デモ口座を開設してお試しください。

買い指値は 現在のAsk価格より低く 設定され、Askが低く なったときに開かれます。

買いのストップは現在のAskの 価格より上に 設定され、Askが上昇 したときに開かれる

現在の Ask 価格での買い付けが開始さ れます

 
MakarFX:

デモ口座を開設して練習する。

買い指値は 現在のAsk価格より下に 設定され、Askが下がると 開きます。

買いのストップは現在のAsk 価格より上に 設定され、Askが上昇 した ときにオープン します。

現在の Ask 価格での買い付けが開始さ れます

それはそれでアリだと思います。

移動する...

OK、Bid価格がAsk価格を下回り、Askが注文を開始しました。しかし、注文価格は注文時に設定されたままなのか、それとも違うのか?

 
Lerchik:

それはそれでアリですね。

移動する...

OK、買値が注文の価格を下回ったので、アスコムが注文を開いた。しかし、注文価格は注文時に設定されたままなのか、それとも違うのか?

1 アスク価格は「オッズ」価格まで下落すること

2 価格が残っている

 
MakarFX:

1 昇順の価格は、一時停止の価格まで下落する必要があります。

2 価格が残っている

分かりやすく説明していただき、ありがとうございました。

なぜ思い通りに動かないのか、不思議に思っていたんです。

 

皆さん、こんにちは。

前回の質問に対する回答で理解した限りでは、注文を開くときに発生する可能性のあるエラーを処理すればよい、というのが第一です。第二に、私はEAがエラーの場合、すべてのティックで サーバーをクラッシュさせないように保護する必要があります。

最初の 質問ですが、エラー処理はどのように行うのか教えてください。

2つ目の 質問-サーバーの叩かれから身を守るには?

今、私のトレードはこのように開かれています。

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   if(ao_buy!=EMPTY_VALUE && count_orders_market_buy ==0)
   {
    if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_market_buy)) Print("Buy Open"); // ОТКРЫВАЕМ БАЙ ОРДЕР
   }
   } // КОНЕЦ УСЛОВИЕ1

// И ОТЛОЖКИ ВОТ ТАК

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   
   if(ao_buy!=EMPTY_VALUE && count_orders_stop_buy ==0&& max_Price>Bid)
   { //НАЧАЛО ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕ
   
   Print("БАЙ СТОП AO УСЛОВИЕ 1");
        if( OrderSend(Symbol(),OP_BUYSTOP,lot,max_Price,slippages,max_Price-sl,max_Price+tp ,comment_ao_otloj_buy,Magik_number,TimeCurrent()+order_life_time))Print("BUY_STOP OPEN"); // ОТКРЫВАЕМ ОТЛОЖЕННЫЙ БАЙ ОРДЕР
   
   }  //КОНЕЦ ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕ
   } // КОНЕЦ УСЛОВИЕ1



変数Count Market Buyは以下の関数で計算されます。

         void data_orders(string comment="alt",int magik_number=123)
              {
         int I = 0;
   count_orders_all = 0;   //КОЛИЧЕСТВО ВСЕХ УСТАНОВЛЕННЫХ ОРДЕРОВ
   count_orders_market_all = 0; //КОЛИЧСТВО ВСЕХ РЫНОЧНЫХ ОРДЕРОВ
   count_orders_market_buy = 0;
   
   count_orders_stop_buy = 0;    //КОЛИЧЕСТВО СТОП БАЕВ
   count_orders_limit_buy = 0;   // КОЛИЧЕСТВО ЛИМИТ БАЕВ
   
   count_orders_stop_sell = 0;    //КОЛИЧЕСТВО СТОП СЕЛОВ
   count_orders_limit_sell = 0;   //КОЛИЧЕСТВО ЛИМИТ СЕЛОВ
   
   
  lot_orders_buy = 0;    //ОБЪЁМ ЛОТА ПО БАЙ ОРДЕРАМ
         lot_orders_sell = 0;      //ОБЪЁМ ЛОТА ПО СЕЛЛ ОРДЕРАМ
         balance_all = 0;          // БАЛАНС ПО ВСЕМ ОРДЕРАМ
         balance_buy = 0;         // БАЛАНС ПО ОРДЕРАМ БАЙ
         balance_sell = 0;        // БАЛАНС ПО ОРДЕРАМ СЕЛЛ
         
         
         
          for(int i = 0; i <= OrdersTotal();i ++) // перебор всех ордеров в цикле
          {
  
   if(OrderSelect(I , SELECT_BY_POS, MODE_TRADES))// выбираем ордер по переменной цикла
   {
    if(OrderMagicNumber() != magik_number || OrderSymbol() !=Symbol()) // если ордер не нашь то
    {
    continue; // переходим на следующую итерацию
    
    }
    if(comment== OrderComment() || comment=="alt")// если коментарий нашь то 
    {
    count_orders_all+=1;
    if(OrderType()== OP_BUY)
    {
    count_orders_market_all+=1;
    count_orders_market_buy+=1;
    }
    if(OrderType()== OP_SELL)
    {
    count_orders_market_all+=1;
    count_orders_market_sell+=1;
    }
    if(OrderType()== OP_BUYSTOP)
    {
    count_orders_stop_buy+=1;
    }
    if(OrderType()== OP_BUYLIMIT)
    {
    count_orders_limit_buy+=1;
    
    }
    if(OrderType()== OP_SELLSTOP)
    {
    count_orders_stop_sell+=1;
    
    }
    if(OrderType()== OP_SELLLIMIT)
    {
    count_orders_limit_sell+=1;
    
    }
    
    
    
    }
         
         
              }
              }
              }

実サーバーで取引する場合、エラー時にサーバーがチャタリングしない方法を教えてほしい。

 
DanilaMactep:

皆さん、こんにちは。

エラーを正しく処理する方法と、エラーが発生したときにサーバーが毎ティックごとにチャイムを鳴らすのを避ける方法を教えてください。
if (GetLastError()==141){Alert(GetLastError()); ExpertRemove();}
 
MakarFX:

そしてこのリクエストは、Ordersendを使って注文を開こうとするすべての行の後に書かなければならないのですね?

しかし、質問があります - Remove EAがチャートからEAを削除した場合、どのようにすれば自動的にチャートに再接続して動作を継続させることができますか?エラー141 - 要求数が多すぎる件について、より詳細に説明してください。あまりにリクエストが多い場合は、チャートからEAを削除しています。 次はどうしたらいいでしょうか。朝起きるまで待って、全部変えてからPCに来て、もう一度チャートにEAを貼り付けますか?