初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1281

 
Vladimir Karputov:

N バーのマーチンガルで 4種類の注文をカウントする例

ウラジミール・カルプトフ

コードで4種類の注文をカウントする例Min Max for N Bars Martingale 2

ウラジミール・カルプトフ

Min Max for N Bars Martingale 2の コードで、4種類の注文をカウントする例。




ウラジミール、なぜかbylimit orderはカウントされない?

int count_buy_limits = 0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(o_orderInfo.OrderType()==ORDER_TYPE_BUY_LIMIT)
{
count_buy_limits++;
}
}.

 
Fergert Фергерт:


ウラジミール、なぜかbylimit ordersをカウントしない?

int count_buy_limits = 0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(o_orderInfo.OrderType()==ORDER_TYPE_BUY_LIMIT)
{
count_buy_limits++;
}
}.

1.コードを正しく挿入する
2.コードをすべて表示する
3.コンパイルエラーは ありませんか?
4.ポジションと注文待ちのウィンドウのスクリーンショット
 
Vladimir Karputov:
1.コードを正しく挿入する
2.すべてのコードを表示する
3.コンパイルエラーは ありませんか?
4.ポジションと注文待ちのウィンドウのスクリーンショット

コンパイルエラーはありません。

以下はそのコードです。

#include <Trade\Trade.mqh>
#include <Trade\OrderInfo.mqh>
#include <Trade\SymbolInfo.mqh>

CTrade      o_trade;
COrderInfo  o_orderInfo;
CSymbolInfo o_symbolInfo;

MqlTradeRequest   order_req={0}, buylimit_req1={0}, buylimit_req2={0}, sellstop_req3={0};
MqlTradeResult    order_res={0}, buylimit_res1={0}, buylimit_res2={0}, sellstop_res3={0};

//double   lot_r    = GlobalVariableGet("glot"); // Глобальная переменная
//double   lot_r    = 0.33;
double   lot_r    = NormalizeDouble(AccountInfoDouble(ACCOUNT_BALANCE)/15000,2);

int      tp_r     = 125;

double   lot_bl1  = 2.5;
double   lot_bl2  = 3;

double   lot_v    = NormalizeDouble(lot_r + (lot_r * lot_bl1) + (lot_r * lot_bl2), 2);

int      set_bl1  = 500;   
int      set_bl2  = 1000;
int      set_v    = 1100;

int      tp_bl1   = 70;
int      tp_bl2   = 480;

int OnInit()
  {
      order_req.action           = TRADE_ACTION_DEAL;
      order_req.symbol           = _Symbol;
      order_req.price            = SymbolInfoDouble(order_req.symbol, SYMBOL_ASK);
      order_req.volume           = lot_r;
      order_req.tp               = order_req.price+tp_r*_Point;
      order_req.type             = ORDER_TYPE_BUY;
      order_req.type_filling     = ORDER_FILLING_FOK;
      
      buylimit_req1.action       = TRADE_ACTION_PENDING;
      buylimit_req1.symbol       = _Symbol;
      buylimit_req1.volume       = NormalizeDouble(lot_r*lot_bl1, 2);
      buylimit_req1.price        = SymbolInfoDouble(buylimit_req1.symbol, SYMBOL_ASK)-set_bl1*_Point;
      buylimit_req1.tp           = order_req.price-tp_bl1*_Point;
      buylimit_req1.type         = ORDER_TYPE_BUY_LIMIT;
      buylimit_req1.type_filling = ORDER_FILLING_RETURN;
      buylimit_req1.expiration   = ORDER_TIME_GTC;
      buylimit_req1.magic        = 01;
      
      buylimit_req2.action       = TRADE_ACTION_PENDING;
      buylimit_req2.symbol       = _Symbol;
      buylimit_req2.volume       = NormalizeDouble(lot_r*lot_bl2, 2);
      buylimit_req2.price        = SymbolInfoDouble(buylimit_req2.symbol, SYMBOL_ASK)-set_bl2*_Point;
      buylimit_req2.tp           = order_req.price-tp_bl2*_Point;
      buylimit_req2.type         = ORDER_TYPE_BUY_LIMIT;
      buylimit_req2.type_filling = ORDER_FILLING_RETURN;
      buylimit_req2.expiration   = ORDER_TIME_GTC;
      buylimit_req1.magic        = 02;
      
      sellstop_req3.action       = TRADE_ACTION_PENDING;
      sellstop_req3.symbol       = _Symbol;
      sellstop_req3.volume       = NormalizeDouble(lot_v, 2);
      sellstop_req3.price        = SymbolInfoDouble(sellstop_req3.symbol, SYMBOL_ASK)-set_v*_Point;
      sellstop_req3.sl           = buylimit_req2.price + 10*_Point;
      sellstop_req3.type         = ORDER_TYPE_SELL_STOP;
      sellstop_req3.type_filling = ORDER_FILLING_RETURN;
      sellstop_req3.expiration   = ORDER_TIME_GTC;
      
   
   if(OrdersTotal()==0 && PositionsTotal() == 0)
      {
         OrderSend(order_req, order_res);
         OrderSend(buylimit_req1, buylimit_res1);
         OrderSend(buylimit_req2, buylimit_res2);
         OrderSend(sellstop_req3, sellstop_res3);
      }
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {

  
  }
 
 void OnTick()
  {
       int count_buy_limits = 0;
       for(int i=OrdersTotal()-1; i>=0; i--)
        {
          if(o_orderInfo.OrderType()==ORDER_TYPE_BUY_LIMIT)
               {
                  count_buy_limits++;
               }
        }   
      if(count_buy_limits < 2 || PositionsTotal() == 0)
         {
            for(int r=PositionsTotal()-1; r>=0; r--)
               {
                  ulong ticket=PositionGetTicket(r);
                  o_trade.PositionClose(ticket);   
               }  
      
            for(int o=OrdersTotal()-1; o>=0; o--)
               {
                  ulong ticket1=OrderGetTicket(o);
                  o_trade.OrderDelete(ticket1);
               }
      ExpertRemove();
         }
  }
//+------------------------------------------------------------------+
ファイル:
001.jpg  173 kb
 
Fergert Фергерт:

コンパイルエラーはないのですが...。

これがそのコードです。

私の例とあなたの例をよく見直してみてください。無心にコピーすることはできません。少しは考えないとね。コードの中にエラーがないか探してみてください。

コードを 正しく挿入 する(コード ボタンを使用 - 初回にあなたのメッセージを修正しました。)

 
Vladimir Karputov:

私の例とあなたの例をよく見てください。無心にコピーしてもダメなんです。少しは考えろよ。コードの中にエラーがないか探してみてください。

コードを 正しく挿入する(ボタンを使用する - あなたのメッセージを初めて修正しました)。

うん、わかった...。
 
Fergert Фергерт:
うん、全部あるね...。

そうそう、ループを迂回すると、繰り返しごとにBREAKしなければならないことを忘れていましたね。

      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties

参考

SelectByIndex

指定されたインデックスでさらにアクセスするためのオーダーを選択する。

Документация по MQL5: Стандартная библиотека / Торговые классы / COrderInfo / SelectByIndex
Документация по MQL5: Стандартная библиотека / Торговые классы / COrderInfo / SelectByIndex
  • www.mql5.com
SelectByIndex(int) - COrderInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov:

そうそう、ループを迂回すると、繰り返しごとにBREAKしなければならないことを忘れていましたね。

参考

SelectByIndex

指定されたインデックスでさらにアクセスするためのオーダーを選択する。

ああ、悪かった......。vladimirさん、どうもありがとうございました!!!)))))頑張ってください......。
 
フォーラムメンバーの皆さん、こんにちは。スライダーの使い方がわからない。ヘルプを読みましたが、まだ解りません。ヘルプを読みましたが、まだ理解できていません。10本と15本のバーで高速MAの読み取りを行いたいのですが。10小節と15小節でスローMAを出したいのですが、頭がこんがらがってきました。標準コードとヘルプを使用したのですが、混乱しています。このコードを実装する方法を知っている人を助けてください。ありがとうございました。
 

こんにちは。

取引開始時に「共有ホスティング」への移行はしない?

それとも別の理由?


取引は終了しました、どうせ移行されませんから。

エキスパートが動作し、どこでも読み込むことができるのですが、何が問題なのでしょうか?

Виртуальный хостинг для MetaTrader 5
Виртуальный хостинг для MetaTrader 5
  • www.mql5.com
Самый быстрый виртуальный выделенный сервер (VPS) для трейдинга на форексе от производителей терминала MetaTrader 4/5
 
Aleksandr Prishenko:

こんにちは。

取引開始時に「共有ホスティング」への移行はしない?

それとも別の理由?


取引は終了しました、どうせ移行されませんから。

Expert Advisorが動作し、どこでも読み込まれるのですが、何が問題なのでしょうか?

問題はEAにある。ちなみに、共用ホスティングのルールでは、DLLは禁止されています。