エキスパート: Puria method

 

Puria method:

Puria methodに基づいた取引システムです。.

Puria method

作者: Vladimir Karputov

 

ウラジミールさん、こんにちは。ここで質問して申し訳ありません。Windowsを再インストールした後、MT-5を開くことができません。なぜなら、ネット口座をヘッジに変更したときにパスワードを保存していなかったからです。どうしたら いいか教えていただけませんか?ログインは既知です。

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

 
Shara1:

ウラジミールさん、こんにちは。ここで質問して申し訳ないのですが、Windowsを再インストールした後、MT-5を開くことができません。というのも、ネットのアカウントをヘッジに変更した際にパスワードを保存していなかったからです。どうしたら いいか教えていただけませんか?ログインはできています。

ありがとうございます。

どうしようもない。残酷なことだが、将来のための良い予防接種になる。パスワードとログインは守るべきだ。
 
Vladimir Karputov:
何もすることはない。残酷なことだが、将来のための良い予防接種になる。パスワードとログインは保持すべきだ。

では、新しいものをダウンロードして登録しなければならないのですか?

まだAdmiralmarketingのデモを持っていない場合は?

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

 
こんにちは、ウラジミール、

- MinProfitStep(最小利益ステップ、単位はpips)"
- "MinProfitPercent(「最小利益ステップ」での係数ロットテイキング)"


この関数はネッティング口座タイプ用に書かれたもので、EAコードは "ヘッジ口座 "用に設計されていないのではないでしょうか。

この関数が「ヘッジ」タイプの口座で正しく機能するかどうか確認していただけますか??

ありがとうございます。

 
Edviao:
こんにちは、ウラジーミル、

- MinProfitStep(最小利益ステップ、pips単位)"
- MinProfitPercent(「最小利益ステップ」での係数ロットテイキング)"


この関数はネッティング口座タイプ用に書かれたもので、EAコードは "ヘッジ口座 "用に設計されていないのではないでしょうか。

この関数が「ヘッジ」タイプの口座で正しく機能するかどうか確認していただけますか??

ありがとうございます。

EAの説明から

市場で 1つ以上のポジションを保持しません - そのため、ネッティング口座とヘッジ口座の両方に推奨できます

- ですから、両方の口座で機能するはずです。ネット取引には独自のニュアンスがあるかもしれませんが、私はネット取引にはお勧めしません。

 
こんにちは、ウラジミール、
このEAに以下の関数を追加することは意味がありますか?

ありがとうございます。

「TrailingFrequency = 10; (トレイリング、秒単位 (< "10" -> 新しいバーのみ))"
 
Edviao:
こんにちは、ウラジーミル、
このEAに以下の関数を追加することは意味があるでしょうか?

ありがとうございます。

「TrailingFrequency = 10; (トレーリング、秒単位 (< "10" -> 新しいバーのみ))"

これは良いアイデアとは思えません。

 
Vladimir Karputov:

それはいい考えだとは思わない。

意見を聞かせてくれてありがとう

親愛なるウラジミール、

MinProfitStep"と "MinProfitPercent"関数のコードを改良 しました。
新しいコードにより、EAはこれらの関数からより効率的な結果を得ることができると思います。このアップデートに関するご意見、ご提案、アドバイスをお聞かせいただければ幸いです。

else
   if (ExtMinProfitStep > 0) 
   {
      int d=0;
      for(int i=PositionsTotal()-1; i>=0; --i){
         if(m_position.SelectByIndex(i)){ // プロパティにさらにアクセスするために、インデックスによって位置を選択する。
            if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic) {
               if(m_position.PositionType() != POSITION_TYPE_BUY && m_position.PositionType() != POSITION_TYPE_SELL)
                  continue;
               
               int      ActSide = m_position.PositionType() == POSITION_TYPE_SELL ? -1: +1;
               ulong    ActTicket = m_position.Ticket();
               double   ActLot = m_position.Volume();
               double   LastOpenPrice = NormalizeDouble(m_position.PriceOpen(), _Digits);
                  
               if (!HistorySelectByPosition(m_position.Identifier()))
                  continue;
               
               if (HistoryDealsTotal() > 1){
                  ulong ActDealTicket = HistoryDealGetTicket(HistoryDealsTotal() - 1);
                  LastOpenPrice = NormalizeDouble(HistoryDealGetDouble(ActDealTicket, DEAL_PRICE), _Digits);
               }
               
               if (ActSide * (NormalizeDouble(m_position.PriceCurrent(), _Digits) - (LastOpenPrice + ActSide * ExtMinProfitStep)) >= 0){
                  double lot_check=LotCheck(ActLot*InpMinProfitPercent);
                  
                  if(lot_check>0.0)
                     m_trade.PositionClosePartial(ActTicket,lot_check);
               }
            }
         }
      }
   }
}
 

何のために?

   if(ExtMinProfitStep > 0)
     {
      int d=0;
      for(int i=PositionsTotal()-1; i>=0; --i)
        {
         if(m_position.SelectByIndex(i))  // プロパティにさらにアクセスするために、インデックスによって位置を選択する。
           {
            if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
              {
               int      ActSide        = (m_position.PositionType()==POSITION_TYPE_SELL)?-1:1;
               ulong    ActTicket      = m_position.Ticket();
               double   ActLot         = m_position.Volume();
               double   LastOpenPrice  = NormalizeDouble(m_position.PriceOpen(),m_symbol.Digits());
               if(!HistorySelectByPosition(m_position.Identifier()))
                  continue;
               if(HistoryDealsTotal() > 1)
                 {
                  ulong ActDealTicket=HistoryDealGetTicket(HistoryDealsTotal()-1);
                  LastOpenPrice=NormalizeDouble(HistoryDealGetDouble(ActDealTicket, DEAL_PRICE),m_symbol.Digits());
                 }
               if(ActSide*(NormalizeDouble(m_position.PriceCurrent(),m_symbol.Digits())-(LastOpenPrice+ActSide*ExtMinProfitStep))>= 0)
                 {
                  double lot_check=LotCheck(ActLot*InpMinProfitPercent);
                  if(lot_check>0.0)
                     m_trade.PositionClosePartial(ActTicket,lot_check);
                 }
              }
           }
        }
     }

なぜそのメソッドをポジションに使わないのか?

プライスオープン

ポジションを建てる価格を取得する


?

Документация по MQL5: Стандартная библиотека / Торговые классы / CPositionInfo / PriceOpen
Документация по MQL5: Стандартная библиотека / Торговые классы / CPositionInfo / PriceOpen
  • www.mql5.com
PriceOpen - CPositionInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

こんにちは、ウラジミール。

これは最後の部分終値を調べるものです。