記事"MQL5 クックブック: マルチ通貨 Expert Advisor - シンプル、かしこい、迅速なアプローチ"についてのディスカッション - ページ 3

 
//+------------------------------------------------------------------+
//|| トレイリングストップレベルを計算します。
//+------------------------------------------------------------------+
double CalculateTrailingStop(int symbol_number,ENUM_POSITION_TYPE position_type)
  {
//--- 計算のための変数
   double    level       =0.0;
   double    buy_point   =low[symbol_number].value[1];  // 買い」の値が低い
   double    sell_point  =high[symbol_number].value[1]; // 売りは高値

そうすることは正しくありません。ポジションとバー価格がギャップで 開いた場合、StopLoss は正しく設定されません。

 
Jose:

.setファイルでの設定を提供している。私はシンボルの執行モード、特に即時か成行かをチェックする条件に問題がありました。

質問があります。Expert、ExpertSignal、ExpertTrade......の機能の一部を複製するために多くのコード(と時間)を費やしているにもかかわらず、提供されているExpert、ExpertSignal、ExpertTrade......の構造を無視してゼロから構築されている、このようなさまざまな高度なアプローチを数多く見てきました。どなたかこのことを正当化していただける方はいらっしゃいませんか?

皆さん、こんにちは!

このEAをテストしようとしているのですが、Strategy Testerで以下のメッセージが表示されました:「ポジションを開くのにエラーが発生しました:4753 - 1 ポジションが見つかりません。なぜでしょうか?これは、ファイル "TradeFunctions.mqh "の159行目の "trade.PositionOpen "関数が実行されたときに起こります。どなたか教えてください。

 

著者が説明したように、ポジションの反転が どこで行われるのか教えてください。以下は彼のコードです。

//--- ポジションがある場合
   else
     {
      //--- ポジションタイプを取得する
      GetPositionProperties(symbol_number,P_TYPE);
      //--- ポジションがシグナルと逆で、ポジション反転が有効な場合
      if(pos.type==opposite_position_type && Reverse[symbol_number])
        {
         //--- 位置ボリュームを取得
         GetPositionProperties(symbol_number,P_VOLUME);
         //--- 音量調整
         lot=pos.volume+CalculateLot(symbol_number,Lot[symbol_number]);
         //--- ポジションを逆にしよう
         OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);
         return;
        }

OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment) 関数を見てください;

//+------------------------------------------------------------------+
//|| ポジションを開く|
//+------------------------------------------------------------------+
void OpenPosition(int symbol_number,
                  double lot,
                  ENUM_ORDER_TYPE order_type,
                  double price,
                  double sl,
                  double tp,
                  string comment)
  {
//--- 貿易構造におけるメジャー番号を設定する。
   trade.SetExpertMagicNumber(MagicNumber);
//--- スリッページのサイズをポイントで設定する
   trade.SetDeviationInPoints(CorrectValueBySymbolDigits(Deviation));
//--- 即座の執行と市場執行モード
// ビルド803から、ストップ・ロスとテイク・プロフィットのレベルを設定する。
// SYMBOL_TRADE_EXECUTION_MARKET モードでポジションをオープンする際に設定できます。
   if(symb.execution_mode==SYMBOL_TRADE_EXECUTION_INSTANT ||
      symb.execution_mode==SYMBOL_TRADE_EXECUTION_MARKET)
     {
      //--- ポジションがオープンされていない場合は、その旨のメッセージを表示する。
      if(!trade.PositionOpen(Symbols[symbol_number],order_type,lot,price,sl,tp,comment))
         Print(「ポジションオープン時のエラー: ",GetLastError()," - ",ErrorDescription(GetLastError()));
     }
  }
これは単なるロックだ!ロットの増加も同じです!私が間違っているのでしょうか?
 
Tango_X:

著者が説明したように、ポジションの反転が どこで行われるのか教えてください。以下は彼のコードです。

OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment) 関数を見てください;

これは単なるロックだ!ロットの増加も同じです!私が間違っているのかもしれませんが、説明していただけますか?

取引口座にはネッティングとヘッジの2種類があります。

以前はアクションネッティングにあったヘッジにある
買い1.0売り 2.01.0の売り1.0買い 2.0売り
 
Vladimir Karputov:

取引口座には、ネッティングとヘッジの2種類がある。

このようなアクションネッティングになったヘッジ
1.0の買い売り 2.01.0売り1.0を買って2.0を売る

了解ありがとうございました!

 
"TimeframeToString "は存在せず、記事の中でも宣言されていません。