無料でロボットをダウンロードする方法を見る
Telegram上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
エキスパート

cheduecoglioni - MetaTrader 5のためのエキスパート

発行者:
Vladimir Karputov
ビュー:
952
評価:
(22)
パブリッシュ済み:
2017.09.08 15:43
アップデート済み:
2018.02.27 13:25
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

このアイディアの著者: ef91 (関連の議論は)

MQL5 コードの著者:Vladimir Karputov

このEA は、TP または SL がトリガするのを待ってから、反対方向にポジションを開きます。 トレードリクエストを送る前に十分な資金があるかどうか確認します。 OnTradeTransaction.

たとえば、買いのポジションがあります。 TP または SL がトリガーされると、新しい売りポジションが開かれます。 その後、TP または SL のトリガ後、新しい買いポジションが開きます。

決済は、"OnTradeTransaction" でモニターされます。

//+------------------------------------------------------------------+
//TradeTransaction 関数 |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//---列挙値としてトランザクションタイプを取得します 
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//---トランザクションが履歴にトランザクションを追加した結果である場合
   if(type==TRADE_TRANSACTION_DEAL_ADD)
     {
      long     deal_entry        =0;
      long     deal_type         =0;
      string   deal_symbol       ="";
      long     deal_magic        =0;
      long     deal_time         =0;
      if(HistoryDealSelect(trans.deal))
        {
         deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_type=HistoryDealGetInteger(trans.deal,DEAL_TYPE);
         deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
         deal_time=HistoryDealGetInteger(trans.deal,DEAL_TIME);
        }
      else
         return;
      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
        {
         if(deal_entry==DEAL_ENTRY_OUT)
           {
            if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL)
              {
               if(deal_type==DEAL_TYPE_BUY)
                  m_close_pos_type=POSITION_TYPE_SELL;
               else if(deal_type==DEAL_TYPE_SELL)
                  m_close_pos_type=POSITION_TYPE_BUY;
               else
                  return;
               m_is_trade=true;
              }
           }
         else if(deal_entry==DEAL_ENTRY_IN)
           {
            m_is_trade=false;
           }
        }
     }
  }

    OrderSend の前にボリュームを確認する(例として買いポジションを考慮します):

    //+------------------------------------------------------------------+
    //| Open Buy position                                                |
    //+------------------------------------------------------------------+
    void OpenBuy(double sl,double tp)
      {
       sl=m_symbol.NormalizePrice(sl);
       tp=m_symbol.NormalizePrice(tp);
    
    //---OrderSend 前にボリュームをチェックして「not enough money」エラー (CTrade) を避ける
       double check_volume_lot=m_trade.CheckVolume(m_symbol.Name(),InpLots,m_symbol.Ask(),ORDER_TYPE_BUY);
    
       if(check_volume_lot!=0.0)
         {
          if(check_volume_lot>=InpLots)
            {
             if(m_trade.Buy(InpLots,NULL,m_symbol.Ask(),sl,tp))
               {
                if(m_trade.ResultDeal()==0)
                  {
                   Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
                         ", description of result: ",m_trade.ResultRetcodeDescription());
                  }
                else
                  {
                   Print("Buy -> true. Result Retcode: ",m_trade.ResultRetcode(),
                         ", description of result: ",m_trade.ResultRetcodeDescription());
                  }
               }
             else
               {
                Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
                      ", description of result: ",m_trade.ResultRetcodeDescription());
               }
            }
          else
            {
             m_is_trade=false;
            }
         }
       else
         {
          m_is_trade=false;
         }
    //---
      }
    
    

    MetaQuotes Ltdによってロシア語から翻訳されました。
    元のコード: https://www.mql5.com/ru/code/18294

    色付ゼロラグMACD 色付ゼロラグMACD

    ZeroLag MACD の MQL5 バージョンです。

    レンコンレベル レンコンレベル

    このインジケーターには、MT5チャートのレンコンバーが表示されます。

    時間に厳密なアプリケーションiTimeSeries 時間に厳密なアプリケーションiTimeSeries

    この時系列ライブラリは、MQL4 に使い慣れたメソッド (例: iBarShift) を実装しながら、時間に厳密なアプリケーションを、MQL5の高速時系列アクセスにもたらします。

    キャンドルレンジ キャンドルレンジ

    1つのウィンドウに2つのヒストグラムがあり、初期値からのポイントの最大平均価格偏差が表示されます。