無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
私たちのファンページに参加してください
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
- 発行者:
- Vladimir Karputov
- ビュー:
- 1112
- 評価:
- パブリッシュ済み:
- 2017.09.08 15:43
- アップデート済み:
- 2018.02.27 13:25
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
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

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

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