エキスパート: Cidomo - ページ 2

 

次にコードである:

//--- フリーズとストップのレベルをチェック
/*
 注文・ポジションの種類|発動価格|チェック
 ------------------------|-----------------------|---------------------------------------
 買い指値注文| アスク| Ask-OpenPrice >= SYMBOL_TRADE_FREEZE_LEVEL
 逆指値買い注文| 逆指値注文| 買指値注文|買建値-売建値 >= SYMBOL_TRADE_FREEZE_LEVEL
 売り指値注文| 売り指値注文= SYMBOL_TRADE_FREEZE_LEVEL
 売り逆指値注文| 売り指値注文買建値 >= SYMBOL_TRADE_FREEZE_LEVEL
 買ポジション| 買いポジション| テイクプロフィット-ビッド >= SYMBOL_TRADE_FREEZE_LEVEL
 || 売りポジション|Bid-StopLoss >= SYMBOL_TRADE_FREEZE_LEVEL
 | 売りポジション| 売りポジション|Ask-TakeProfit >= SYMBOL_TRADE_FREEZE_LEVEL
 | |ストップロス・アスク >= SYMBOL_TRADE_FREEZE_LEVEL
 
 買いは呼値で行う。| 売りは買値で行われる
 ------------------------------------------------|----------------------------------
 テイクプロフィット >= ビッド| テイクプロフィット<= Ask
 StopLoss<= ビッド| ストップロス>= アスク
 TakeProfit - Bid >= SYMBOL_TRADE_STOPS_LEVEL | アスク - TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL 。アスク - TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
 ビッド - StopLoss >= SYMBOL_TRADE_STOPS_LEVEL= ストップロス - アスク >= SYMBOL_TRADE_STOPS_LEVEL
*/
   if(!RefreshRates() || !m_symbol.Refresh())
     {
      PrevBars=0;
      return;
     }
//--- FreezeLevel -> 保留オーダーと変更用
   double freeze_level=m_symbol.FreezeLevel()*m_symbol.Point();
   if(freeze_level==0.0)
      freeze_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;
   freeze_level*=1.1;

ここでは計算がよくわからない:

freeze_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;

freeze_level*=1.1;

何のために?また、なぜ*3.0と*=1.1を掛けるのでしょうか。

 
Sysmart:

以下はそのコードである:

ここでの計算は明確ではない:

freeze_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;

freeze_level*=1.1;

何のために。そして、なぜ*3.0と*=1.1を掛けるのか。

主な仕事は、スキャルパーとピペセッターを排除することだ。

 

OnTradeTransaction 関数は私にとって非常に不可解な関数です:

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_ticket       =0;
      long     deal_order        =0;
      long     deal_time         =0;
      long     deal_time_msc     =0;
      long     deal_type         =-1;
      long     deal_entry        =-1;
      long     deal_magic        =0;
      long     deal_reason       =-1;
      long     deal_position_id  =0;
      double   deal_volume       =0.0;
      double   deal_price        =0.0;
      double   deal_commission   =0.0;
      double   deal_swap         =0.0;
      double   deal_profit       =0.0;
      string   deal_symbol       ="";
      string   deal_comment      ="";
      string   deal_external_id  ="";
      if(HistoryDealSelect(trans.deal))
        {
         deal_ticket       =HistoryDealGetInteger(trans.deal,DEAL_TICKET);
         deal_order        =HistoryDealGetInteger(trans.deal,DEAL_ORDER);
         deal_time         =HistoryDealGetInteger(trans.deal,DEAL_TIME);
         deal_time_msc     =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC);
         deal_type         =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
         deal_entry        =HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_magic        =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
         deal_reason       =HistoryDealGetInteger(trans.deal,DEAL_REASON);
         deal_position_id  =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID);

         deal_volume       =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
         deal_price        =HistoryDealGetDouble(trans.deal,DEAL_PRICE);
         deal_commission   =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION);
         deal_swap         =HistoryDealGetDouble(trans.deal,DEAL_SWAP);
         deal_profit       =HistoryDealGetDouble(trans.deal,DEAL_PROFIT);

         deal_symbol       =HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_comment      =HistoryDealGetString(trans.deal,DEAL_COMMENT);
         deal_external_id  =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID);
        }
      else
         return;
      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
         if(deal_entry==DEAL_ENTRY_IN)
            if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL)
              {
               m_need_delete_buy_stop  = true;
               m_need_delete_sell_stop = true;
              }
     }
  }
 

式の中で

      double tp=(InpTakeProfit==0)?0.0:price+ExtTakeProfit;
      if(tp!=0.0 && ExtTakeProfit<level) // 価格を確認する
         tp=price+ExtTakeProfit;

tp=price+levelと すべきです

 

こんにちは、EAをありがとうございます。デモで試してみましたが、問題なく動作し、オープンとピンディング注文ができました。


しかし、ライブ口座で 使用しようとすると、拒否されてしまいます。


よろしくお願いします。

 
Mazyad AlAdwani :

デモで試してみましたが、問題なく動作しています。


しかし、ライブ口座で 使用しようとすると、拒否されてしまいます。


ありがとうございました。

残念ながら、私は遠くから心を読むことはできません。また、常勤のテレパスは休暇中です。したがって、次のようなデータを提供してください(テクニカル・データをテクニカル・リソースに提供するのは良い習慣です)。

  • 取引口座の通貨と残高
  • アドバイザー設定
  • ログファイル(エキスパートタブとジャーナルタブから)
 
Vladimir Karputov:

残念ながら、遠くから心を読むことはできない。また、常勤のテレパスは休暇中です。したがって:そのようなデータを提供する(そして、技術的なリソースの技術的なデータを提供するのは良い習慣です)

  • 取引口座の通貨と残高
  • アドバイザー設定
  • ログファイル(エキスパートタブとジャーナルタブから)
  • 取引口座の通貨と残高
  • GPBUSD - 80ドル


  • アドバイザー設定


  • ログファイル(エキスパートタブとジャーナルタブから)

事前にありがとうございました 、と私はすべてに新しいですが、学習、最初からすべてを置くために申し訳ありません。



 

ライブ口座で使いたいのですが、何か新しい情報はありますか?

 
Mazyad AlAdwani :

ライブ口座で使いたいのですが、何か新しい情報はありますか?

まずは読むことを学んでください。ここはテクニカルフォーラムであり、もしあなたが何らかのアクションを要求された場合、そのアクションを実行しなければなりません。


取引、自動取引システム、取引戦略のテストに関するフォーラム

専門家Cidomo

ウラジミールKarputov、2020.06.03 05:08

残念ながら、私は遠くから心を読むことはできません。また、常勤のテレパスは休暇中です。したがって:そのようなデータを提供する(そして、テクニカルリソース上の技術的なデータを提供することは良い習慣です)

  • 取引口座の通貨と残高
  • アドバイザー設定
  • ログファイル(エキスパートタブとジャーナルタブから)

 
Vladimir Karputov:

まずは読むことを学びましょう。ここは技術的なフォーラムであり、もしあなたがある行動をするよう求められたら、その行動をしなければならない。



最初の返信で画像を送ったのですが、削除されていることに気づきませんでした!


とにかく、私はあなたがそれを見ることができるようにビデオを作る