初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 225

 

こんばんは!(^o^)

以前からコメント付きのシステムを使って、先にポジションを修正したかどうかを区別していたのですが...。

例えば、買い注文を 出した後、ポジションのSLやTPを変更した場合、どうすれば正しく区別できるのでしょうか?職位に応じた分野や機能はありますか?

 
websafe25:

こんばんは!(^o^)

以前からコメント付きのシステムを使って、先にポジションを修正したかどうかを区別していたのですが...。

例えば、買い注文を 出した後、ポジションのSLやTPを変更した場合、どうすれば正しく区別できるのでしょうか?職位に応じた分野や機能はありますか?

それはありえないことです。

私見では、現在のポジションや注文の状態に依存するのではなく、再起動後に現在の市場状況であるべき状態をシステムが形成する方が、はるかに信頼性が高いと思います。そして、その後、位置や注文の配置を調整します。

 
pronych:

これはありえないことです。

私見では、現在のポジションや注文の状態に依存するのではなく、システムが再起動後に現在の市場の状況で持つべき状態を形成する方が、はるかに信頼性が高いと思います。そして、ポジションとオーダーチャートを調整します。

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

次に、私自身の状況を説明します。

例えば10pipsの利益が出たら、損切りしないポジションに移したい。例えば、始値+3pipsにストップを移動させる。

今、次のような事態が起こっています。

if(AccountInfo.OrderProfitCheck(_Symbol,ORDER_TYPE_SELL,Lot,PositionInfo.PriceOpen(),NormalizeDouble(PositionInfo.PriceOpen()-ModifyPips*_Point,_Digits)) <= PositionInfo.Profit())
        {
        if(Trade.PositionModify(_Symbol,NormalizeDouble(PositionInfo.PriceOpen()-ModifySLPips*_Point,_Digits),NormalizeDouble(PositionInfo.PriceOpen()-TP*_Point,_Digits)))
          {

トレードの利益が10ピップス以上であればストップを変更する。利益が増え、修正が何度も何度も行われる。 一度ノーロスに移行し、それを・・・でスキップ する必要がある。

どうすればいいのでしょうか?それとも、<=ではなく、=と書いた方が良いのでしょうか?EAがこの操作に到達し、トレードの利益を比較し始めると、それが10pipsにならず、利益がもっと多くなり、損失なしで終了しないことはありえますか?

追伸>ポジションを取るときは、価格からどのレベルにSLがあるか見て、価格より上ならすでに修正済みだと思います。

私はこう判断しました。

if(PositionInfo.Select(_Symbol))
{
   if(PositionInfo.PositionType()==POSITION_TYPE_BUY)
     {
     if(PositionInfo.StopLoss() > PositionInfo.PriceOpen())
       {
         if(AccountInfo.OrderProfitCheck(_Symbol,ORDER_TYPE_BUY,Lot,PositionInfo.PriceOpen(),NormalizeDouble(SymbolInfo.Ask()+ModifyPips*_Point,_Digits)) >= PositionInfo.Profit())
          {
             Trade.PositionModify(_Symbol,NormalizeDouble(PositionInfo.PriceOpen()+ModifySLPips*_Point,_Digits),NormalizeDouble(PositionInfo.PriceOpen()+TP*_Point,_Digits));
          }
       }
     }
   if(PositionInfo.PositionType()==POSITION_TYPE_SELL)
     {
     if(PositionInfo.StopLoss() < PositionInfo.PriceOpen())
       {
      if(AccountInfo.OrderProfitCheck(_Symbol,ORDER_TYPE_SELL,Lot,PositionInfo.PriceOpen(),NormalizeDouble(PositionInfo.PriceOpen()-ModifyPips*_Point,_Digits)) <= PositionInfo.Profit())
        {
        Trade.PositionModify(_Symbol,NormalizeDouble(PositionInfo.PriceOpen()-ModifySLPips*_Point,_Digits),NormalizeDouble(PositionInfo.PriceOpen()-TP*_Point,_Digits));
        }
       }
     }
}
 
websafe25:

追伸:ポジションを取るときは、SLが価格からどのレベルかを見て、価格より上ならすでに修正されていると思うのですが...。

このように決めた。

追伸の後に書いてあることは、ごく当たり前のことです。(非常に正確に必要な場合は、最後の測定からハイバー/ローバーのレベルを見つけるまで。)) しかし、これはありえないことです))

ただ、「利益」という概念から切り離し、「点」という概念に目を向けることが望まれる。

そして、前回の取引(Last)の価格ではなく(一般的にこの種の価格は忘れる)、有利なバリエーションで質問/入札することを考慮するのがより美しいと思います;))。

 

こんばんは!(^o^)

残念ながら、例えばRSIのようなシグナルモジュールの使い方について、具体的な説明は見つかりませんでした。つまり、初期化され、パラメータが設定された記録はありますが、私のEAから購入する条件を単純に確認する方法はありません - ない。次はどうする?買い/売りの条件があるかどうかを確認するにはどうすればよいですか?

/--- Creating signal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(-2);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(100);
   signal.ThresholdClose(100);
   signal.PriceLevel(0.0);
   signal.StopLevel(SL);
   signal.TakeLevel(TP);
//--- Creating filter CSignalRSI
   CSignalRSI *filter0=new CSignalRSI;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(-3);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodRSI(PeriodRSI);
   filter0.Applied(PRICE_CLOSE);
   filter0.Weight(0.8);
 
websafe25:

こんばんは!(^o^)

残念ながら、例えばRSIのようなシグナルモジュールの使い方について、具体的な説明は見つかりませんでした。つまり、初期化され、パラメータが設定された記録はありますが、私のEAから購入する条件を単純に確認する方法はありません - ない。次はどうする?売買の条件があるかどうかを確認するにはどうすればよいですか?

Signals Moduleは設計段階でExpert Advisorに接続されます。信号の各モジュールは投票を整理する...

総じて、この記事は必読です。

6つのステップでトレーディングロボットを作る!

そして最後に

カスタムインジケーター売買シグナルの生成

 

ところで、投票モジュールの信号の算術平均を取るのは間違っていると思うのは私だけでしょうか?

double CExpertSignal::Direction(void)
  {
   long   mask;
   double direction;
   double result=m_weight*(LongCondition()-ShortCondition());
   int    number=(result==0.0)? 0 : 1;      // number of "voted"
//---
   int    total=m_filters.Total();
//--- loop by filters
   for(int i=0;i<total;i++)
     {
      //--- mask for bit maps
      mask=((long)1)<<i;
      //--- check of the flag of ignoring the signal of filter
      if((m_ignore&mask)!=0)
         continue;
      CExpertSignal *filter=m_filters.At(i);
      //--- check pointer
      if(filter==NULL)
         continue;
      direction=filter.Direction();
      //--- the "prohibition" signal
      if(direction==EMPTY_VALUE)
         return(EMPTY_VALUE);
      //--- check of flag of inverting the signal of filter
      if((m_invert&mask)!=0)
         result-=direction;
      else
         result+=direction;
// Вот тут бы       number+=filter.Weight();

      number++;
      }
//--- normalization
   if(number!=0)
      result/=number; // Вот туточки???
//--- return the result
   return(result);
  }
 
YAndrey:

ところで、投票モジュールの信号の算術平均を取るのは間違っていると思うのは私だけでしょうか?

すべてがロジカルです。

続きを読むMQL5 Wizard: The New Versionの 記事と、その写真の一部をご紹介します。

正規化

 
barabashkakvn:

すべてに意味がある。

続きを読むMQL5 Wizard: The New Versionの 記事と、その中の図面の一部をご紹介します。

それは本当に論理的なのか?ウェイトが1なら、はい、論理的です。

例えば、2つのフィルター信号があるとします。もう1つは小さいもので、遊びのための補助的なものなので、ウェイトを0.1にしています。

太いシグナルは100に相当する買いシグナル、小さいシグナルは10に相当する買いシグナルを出します。信号の総量はどうなるのでしょうか?50.5???小さい方が過小評価するのはおかしいのでは?

 
YAndrey:

意味があるのでしょうか?重みが1ずつなら、たしかに意味がある。

例えば、2つの信号フィルターがあるとします。もう1つは小型で、遊びのための補助的なものなので、ウェイトを0.1にしています。

太いシグナルは100に相当する買いシグナル、小さいシグナルは10に相当する買いシグナルを出します。信号の総量はどうなるのでしょうか?50.5???小さい方がここまで過小評価するのはおかしいのでは?

1.総投票数です。その最大の特徴は、方向性です。2つ目の特徴は、最終的な値です。
2.もし、あなたのストラテジーが100*1に等しい強さのシグナルと10*0.1に等しい強さのシグナルの2つを発生させた場合、シグナルの選択という 点からあなたのストラテジーを見直す必要があります。
理由: