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

 
Morexod:



モード節を参照。

項目 5 = 3 取引

項目3 = 18 tr.

p.5 + p.3 = 21 tr. p.5 + p.3 <= p.2

しかし、p.2 = 200 trであり、<= 21 trではない。

Expert Advisorはヘッジ口座用です。一つのポジションを反転させることはできません。1つのポジションを決済し、別のポジションを建てる必要があります。
 
Artyom Trishkin:
エキスパート・アドバイザーはヘッジ口座用です。一つのポジションを反転させることは不可能です。1つのポジションを決済し、別のポジションを建てる必要があります。

最適化されています

常に1つのポジション(スイング) - 市場に常に1つのポジションのみ = 200注文

任意のポジション - 任意のポジション = 185注文

任意のポジション」の条件では、「常に1つのポジションしか市場にない」条件よりも多くの注文があるはずです。

 
Morexod:

最適化中。

常に1つのポジション(スイング) - 市場に常に1つのポジションのみ = 200注文

任意のポジション - 任意のポジション = 185注文

常に1つのポジションしか市場にない」条件よりも「任意のポジション」条件の方が注文数が多いはずです。

任意のポジション - 任意のポジション」の場合、すべてのポジションを無差別にオープンするため、口座の最大許容総数量の制限がトリガーされます。そして、ある時点で口座の許容総数量をオーバーフローする瞬間が訪れ、ポジションはオープンされなくなります。

また、常に1つのポジション(スイング)の場合、つまり「1つのポジションのみ」の場合、オープンしたポジションの最初に設定された数量が許容される最大数量よりも大きい場合にのみ、制限が機能します。そして、EAは、作者が約束するように、このロットを単に可能なものに調整します。

たぶん、レポートの注文数に基づいて 早まった結論を出そうとするよりも、ビジュアルモードで見る方が簡単でしょう?;)

 
fxsaber:

これがコードの出所だ:

int OnInit()
  {
//--- 取引パラメーターの設定
   if(!SetTradeParameters())
      return INIT_FAILED;

関数そのものです。あなたが言っていることを引き起こす可能性のあるモードは無効になっています。

//+------------------------------------------------------------------+
//| 取引パラメーターの設定|
//+------------------------------------------------------------------+
bool SetTradeParameters()
  {
//--- シンボルの設定
   ResetLastError();
   if(!symbol_info.Name(Symbol()))
     {
      Print(__FUNCTION__,": Error setting ",Symbol()," symbol: ",GetLastError());
      return false;
     }
//--- 価格の取得
   ResetLastError();
   if(!symbol_info.RefreshRates())
     {
      Print(__FUNCTION__,": Error obtaining ",symbol_info.Name()," data: ",GetLastError());
      return false;
     }
   if(account_info.MarginMode()==ACCOUNT_MARGIN_MODE_RETAIL_NETTING)
     {
      Print(__FUNCTION__,": ",account_info.MarginModeDescription(),"-account. EA should work on a hedge account.");
      return false;
     }
//--- 充填タイプの自動設定
   trade.SetTypeFilling(GetTypeFilling());
//--- マジックのインストール
   trade.SetExpertMagicNumber(InpMagic);
//--- スリップセッティング
   trade.SetDeviationInPoints(InpDeviation);
//--- 入力値を補正してロット設定
   lot=CorrectLots(InpVolume);
//--- 非同期オーダー送信モードがオフになる
   trade.SetAsyncMode(false);
//---
   return true;
  }
//+------------------------------------------------------------------+

それとも、私があなたのヒントを誤解していたのでしょうか?

 
Artyom Trishkin:

それがコードの出所だ:

関数そのものです。あなたが提案していることを引き起こす可能性のあるモードは無効になっています。

それとも、私があなたのヒントを誤解していたのでしょうか?

この状況は 同期 モードに関するものです。

 
このモードはこのEAでは動作しません: InpModeOpened==OPENED_MODE_SWING
 
kwlin_089:
このモードはこのEAでは機能しません:InpModeOpened==OPENED_MODE_SWING

なぜですか?

コードを見てみると

//+------------------------------------------------------------------+
//| 取引関数|
//+------------------------------------------------------------------+
int Trade(const ENUM_PATTERN_TYPE &pattern_type,const int index)
  {
   ENUM_POSITION_TYPE type=patt.PositionPattern(pattern_type);
   int number=0,last_total=list_trade_patt.Total();
//--- 市場で常に1つのポジションを持つ 売買
   if(InpModeOpened==OPENED_MODE_SWING)
     {
      if(type==POSITION_TYPE_BUY && NumberSell()>0) CloseSell();
      if(type==POSITION_TYPE_SELL && NumberBuy()>0) CloseBuy();
     }
//--- 買いポジションは1つだけ
   if(InpModeOpened==OPENED_MODE_BUY_ONE)
     {
      if(NumberBuy()>0) return WRONG_VALUE;
      if(type==POSITION_TYPE_SELL) return last_total;
     }
//--- 任意の数量 購入
   if(InpModeOpened==OPENED_MODE_BUY_MANY)
      if(type==POSITION_TYPE_SELL) return last_total;
//--- 売りポジションは1つだけ
   if(InpModeOpened==OPENED_MODE_SELL_ONE)
     {
      if(NumberSell()>0) return WRONG_VALUE;
      if(type==POSITION_TYPE_BUY) return last_total;
     }
//--- 売りはいくつでも
   if(InpModeOpened==OPENED_MODE_SELL_MANY)
      if(type==POSITION_TYPE_BUY) return last_total;
//--- すべてのチェックがパスされるか、いずれかのコリが選択される чество любых позиций - открываем позицию
   if(to_logs)
      Print(__FUNCTION__,": To open ",(type==POSITION_TYPE_BUY ? "Buy" : "Sell")," position by pattern ",patt.DescriptPattern(pattern_type));
   if(OpenPosition(pattern_type))   
      list_trade_patt.Delete(index);
//--- オープンポジションの数を返す
   return last_total-list_trade_patt.Total();
  }
//+------------------------------------------------------------------+
  1. スイングモードなら
    1. 仕入を開始する必要があり、かつ売上があれば、売上を閉じる。
    2. 売りを建てる必要があり、買いがあれば、買いを閉じる。
  2. すべてのチェックが通れば、必要なポジションを建てる。
それとも何か誤解しているのでしょうか?説明してください。
 
Artyom Trishkin:

なぜですか?

コードを見ていて、それがわかったんだ:

  1. スイングモードなら
    1. 仕入を開始する必要があり、売上があれば、売上を閉じる。
    2. 売りを建てる必要があり、買いがあれば、買いを閉じる。
  2. すべてのチェックが通ったら、希望のポジションを建てる。
それとも何か誤解しているのでしょうか?説明してください。

Artem、私の理解では、私たちは「消える」ポジションについて話しています。mt4ではこれらはSLとTPです。mt5については判断できません。

 
Алексей Тарабанов:

Artem、私の理解では、私たちは「消える」ポジションについて話しています。mt4ではSLとTPです。mt5については判断できません。

ですから、MT5でも同じでしょう。0.1の買いがあれば、ストップは0.1の売りの 逆指値注文 です。
トリガーした時点ではポジションはありません。そして、ポジションを反転させるには、0.2を売る必要がある。
 
Artyom Trishkin:
だからMT5でも同じになる。0.1の買いがあれば、ストップは0.1の売りの 逆指値注文 です。
トリガーされた時点ではポジションはありません。そして、ポジションを反転させるには、0.2を売る必要があります。

あなたはよく分かっているはずですが、時々確認したがる人がいます。