記事"MQL5 ウィザード:オープンポジションのトレーリングモジュール作成方法"についてのディスカッション - ページ 2 12 新しいコメント Hamed T 2013.02.05 10:17 #11 素晴らしい有益な記事をありがとうございます、私は親切にエキスパートアドバイザーを書く際に、このクラスをどのように使用することができるか例を持って来るようにお願いしてもよろしいですか?ありがとうございました。 Vitaliy Polishchuk 2015.08.31 20:57 #12 こんにちは。モジュールが動作しません。ログによると、 閾値利益のレベルは設定注文のレベルより大きくなければなりません。コンストラクタで、空でなくゼロでない変数を初期化しました。なぜエラーになるのでしょうか? //+------------------------------------------------------------------+ //|TrailingFixedPips.mqh //| Copyright 2009-2013, MetaQuotes Software Corp. //|http://mql5.commql5.com //+------------------------------------------------------------------+ #include <Expert\ExpertTrailing.mqh> // ウィザードの説明開始 //+----------------------------------------------------------------------+ //| クラスの説明| //| タイトル=ストップロス・フローティング・トレーリング(Fox104) //| タイプ=トレーリング| //| 名前=FixedPips| //| クラス=CTrailingFixedPips| //| ページ| //| パラメータ=StopLevel,int,30,ストップロス・トレーリング・レベル(単位:ポイント //| Parameter=ProfitLevel,int,50,テイク・プロフィットのトレーリング・レベル(単位:ポイント //+----------------------------------------------------------------------+ // ウィザードの説明 終了 //+------------------------------------------------------------------+ //| クラス CTrailingFixedPips.| //| 目的:ストップ・レベルをpips単位で固定したトレーリング・ストップのクラス。 目的:ストップ・レベルをpips単位で固定したトレーリング・ストップのクラス。 //| CExpertTrailingクラスから派生。| //+------------------------------------------------------------------+ class CTrailingFixedPips : public CExpertTrailing { protected: //--- 入力パラメータ int m_stop_level; int m_profit_level; public: CTrailingFixedPips(void); ~CTrailingFixedPips(void); //--- 保護されたデータの初期化方法 void StopLevel(int stop_level) { m_stop_level=stop_level; } void ProfitLevel(int profit_level) { m_profit_level=profit_level; } virtual bool ValidationSettings(void); //--- virtual bool CheckTrailingStopLong(CPositionInfo *position,double &sl,double &tp); virtual bool CheckTrailingStopShort(CPositionInfo *position,double &sl,double &tp); }; //+------------------------------------------------------------------+ //| コンストラクタ| //+------------------------------------------------------------------+ void CTrailingFixedPips::CTrailingFixedPips(void) { m_stop_level = 30; m_profit_level = 50; } //+------------------------------------------------------------------+ //| デストラクタ| //+------------------------------------------------------------------+ CTrailingFixedPips::~CTrailingFixedPips(void) { } //+------------------------------------------------------------------+ //|| バリデーション設定で保護されたデータ。 //+------------------------------------------------------------------+ bool CTrailingFixedPips::ValidationSettings(void) { if(!CExpertTrailing::ValidationSettings()) return(false); //--- 初期データのチェック if((m_profit_level-m_stop_level)*m_adjusted_point<=m_symbol.StopsLevel()*m_symbol.Point() && m_profit_level!=0.0) { printf(__FUNCTION__+": 閾値利益レベルは注文設定レベルより大きくなければならない"); return(false); } //--- OK return(true); } //+------------------------------------------------------------------+ //| ロング・ポジションのトレーリング・ストップや利益をチェックする。 //+------------------------------------------------------------------+ bool CTrailingFixedPips::CheckTrailingStopLong(CPositionInfo *position,double &sl,double &tp) { //--- チェック if(position==NULL) return(false); if(m_stop_level==0) return(false); //--- パラメータ・チェック if(m_profit_level==0.0) return(false); //--- すでに損益分岐点に達しているのか? double open=position.PriceOpen(); if(position.StopLoss()>=open) return(false); //--- 利益チェック sl=EMPTY_VALUE; tp=EMPTY_VALUE; if(m_symbol.Bid()-open>m_profit_level*m_adjusted_point) sl=m_symbol.NormalizePrice(open+m_stop_level*m_adjusted_point); //--- return(sl!=EMPTY_VALUE); } //+------------------------------------------------------------------+ //| ショート・ポジションのトレーリング・ストップや利益をチェックする。 //+------------------------------------------------------------------+ bool CTrailingFixedPips::CheckTrailingStopShort(CPositionInfo *position,double &sl,double &tp) { //--- チェック if(position==NULL) return(false); if(m_stop_level==0) return(false); //--- パラメータ・チェック if(m_profit_level==0.0) return(false); //--- すでに損益分岐点に達しているのか? double open=position.PriceOpen(); if(position.StopLoss()<=open) return(false); //--- 利益チェック sl=EMPTY_VALUE; tp=EMPTY_VALUE; if(open-m_symbol.Ask()>m_profit_level*m_adjusted_point) sl=m_symbol.NormalizePrice(open-m_stop_level*m_adjusted_point); //--- return(sl!=EMPTY_VALUE); } //+------------------------------------------------------------------+ Автоматический трейдинг и тестирование торговых стратегий www.mql5.com MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций Vladimir Karputov 2015.08.31 21:24 #13 Fox104:こんにちは。モジュールが動作しません。ログによると、 閾値利益のレベルは設定注文のレベルより大きくなければなりません。コンストラクタで、空でなくゼロでない変数を初期化しました。なぜエラーが発生するのでしょうか?フォーラムにコードを正しく挿入して ください。(あなたのメッセージはすでに修正されています)。 Vladimir Karputov 2017.09.06 07:26 #14 Andy:記事で指定したモジュールを使用すると、Expert Advisorをチャートにロードする際にExpert Advisorのログにエラーが発生します:2017.09.06 00:28:29.873 1 (EURUSD,M5) OnInit: インジケータの初期化エラー2017.09.06 00:31:20.256 1 (EURUSD,M5) CExpertBase::SetPriceSeries: タイムシリーズの変更は禁止されています。2017.09.06 00:31:20.256 1 (EURUSD,M5) CExpertBase::SetOtherSeries: 時系列の変更は禁止されています。2017.09.06 00:31:20.256 1 (EURUSD,M5) CExpertBase::InitIndicators: 設定のパラメータがチェックされていません。2017.09.06 00:31:20.256 1 (EURUSD,M5) CExpert::InitIndicators: 後続オブジェクトの指標初期化エラー2017.09.06 00:31:20.256 1 (EURUSD,M5) OnInit: 指標の初期化エラー多分それは古いもので、どこで新しいものを入手するか、またはこの中で何を修正するか?トレイリングモジュール "sampleTrailing.mqh "を変更して ください://+------------------------------------------------------------------+ //| 設定パラメータをチェックする。| //| INPUT: いいえ。| //| OUTPUT: 設定が正しければ真、そうでなければ偽。 || OUTPUT: 設定が正しければ真、そうでなければ偽。 //| 注釈: いいえ。| //+------------------------------------------------------------------+ bool CSampleTrailing::ValidationSettings() { if(!CExpertTrailing::ValidationSettings()) return(false); //--- Initメソッドが呼ばれなかった場合 if(m_symbol==NULL) return(false); //--- パラメータ・チェック if((m_profit-m_stop_level)*m_adjusted_point<=m_symbol.StopsLevel()*m_symbol.Point() && m_profit!=0.0) { printf(__FUNCTION__+": 閾値利益レベルは注文設定レベルより大きくなければならない"); return(false); } //--- OK return(true); } Rashid Umarov 2017.09.06 13:18 #15 Andy:記事で指定されたモジュールを使用すると、Expert Advisorをチャートにロードする際にExpert Advisorのログにエラーが発生します:おそらく古いものだと思われますが、新しいものを入手するにはどうすればよいでしょうか?メッセージありがとうございます。 Vladimir Karputov 2017.09.08 06:26 #16 Andy:ショートポジションを建て、パラメータで通常のストップロス(トレイリングではない)を0に設定すると、トレイリングストップはブレイクイーブンに設定されませんが、通常のストップを少し動かして少なくとも-1ピップに設定すると、すべてが機能します。ロングではすべてが正常に機能する。すでにブレイクイーブンがある(ストップが価格を下回っている)という条件のチェックでは、最初はストップの値に0を設定し、それ以上進ませない。その通りです。このトレーリングモジュールがブレイクイーブンで機能するトリガーとなるのは、指定されたストップロスなのです。つまり、そのポジションは最初にストップロスを持たなければならないと仮定されているのです。追記 どのような記事であれ、その目的は、ある問題を解決するためのアプローチを示し、それに慣れ親しむことです。そして、ユーザー自身が得た知識に基づいて独自のコードを開発すべきである。 Vladimir Karputov 2017.09.08 06:42 #17 Andy:それは、ストップがない場合は、末尾にもあるように補完する必要があります - 変数を少なくともオープニング値で埋める。 (私はあなたのメッセージの2つのプッシュ通知を 受け取ったが、それらのいずれかが欠落している - 削除)?あなたが何かを変更する必要がある場合 - これは、この記事の問題ではありません。ここでは、あなたが得た知識に基づいて、自分でそれを行うことができます。つまり、テクニカルアサインメントを作成し、その下で記事が書き直されると思っているのであれば、そうではありません。私はあなたの行動を見るように:モジュール(少し変更)を書き直して使用してください。追記:最後にもう一度、「返信」ボタンを使ってください。そうでなければ返信しません。 Vladimir Karputov 2017.09.08 06:48 #18 Andy: わかりました、自分で書きます。自分の投稿を削除していませんか(削除していたら教えてください。)そのようなトピックは役に立つと思います。そうそう、私は自分の投稿を編集していて、間違えて「削除」をクリックしてしまいました。そのため、プッシュは正しく届きました。 12 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
素晴らしい有益な記事をありがとうございます、
私は親切にエキスパートアドバイザーを書く際に、このクラスをどのように使用することができるか例を持って来るようにお願いしてもよろしいですか?
ありがとうございました。
こんにちは。モジュールが動作しません。
ログによると、 閾値利益のレベルは設定注文のレベルより大きくなければなりません。
コンストラクタで、空でなくゼロでない変数を初期化しました。なぜエラーになるのでしょうか?
こんにちは。モジュールが動作しません。
ログによると、 閾値利益のレベルは設定注文のレベルより大きくなければなりません。
コンストラクタで、空でなくゼロでない変数を初期化しました。なぜエラーが発生するのでしょうか?
記事で指定したモジュールを使用すると、Expert Advisorをチャートにロードする際にExpert Advisorのログにエラーが発生します:
2017.09.06 00:28:29.873 1 (EURUSD,M5) OnInit: インジケータの初期化エラー
2017.09.06 00:31:20.256 1 (EURUSD,M5) CExpertBase::SetPriceSeries: タイムシリーズの変更は禁止されています。
2017.09.06 00:31:20.256 1 (EURUSD,M5) CExpertBase::SetOtherSeries: 時系列の変更は禁止されています。
2017.09.06 00:31:20.256 1 (EURUSD,M5) CExpertBase::InitIndicators: 設定のパラメータがチェックされていません。
2017.09.06 00:31:20.256 1 (EURUSD,M5) CExpert::InitIndicators: 後続オブジェクトの指標初期化エラー
2017.09.06 00:31:20.256 1 (EURUSD,M5) OnInit: 指標の初期化エラー
トレイリングモジュール "sampleTrailing.mqh "を変更して ください:
記事で指定されたモジュールを使用すると、Expert Advisorをチャートにロードする際にExpert Advisorのログにエラーが発生します:
メッセージありがとうございます。
ショートポジションを建て、パラメータで通常のストップロス(トレイリングではない)を0に設定すると、トレイリングストップはブレイクイーブンに設定されませんが、通常のストップを少し動かして少なくとも-1ピップに設定すると、すべてが機能します。ロングではすべてが正常に機能する。すでにブレイクイーブンがある(ストップが価格を下回っている)という条件のチェックでは、最初はストップの値に0を設定し、それ以上進ませない。
その通りです。このトレーリングモジュールがブレイクイーブンで機能するトリガーとなるのは、指定されたストップロスなのです。つまり、そのポジションは最初にストップロスを持たなければならないと仮定されているのです。
追記
どのような記事であれ、その目的は、ある問題を解決するためのアプローチを示し、それに慣れ親しむことです。そして、ユーザー自身が得た知識に基づいて独自のコードを開発すべきである。
それは、ストップがない場合は、末尾にもあるように補完する必要があります - 変数を少なくともオープニング値で埋める。
(私はあなたのメッセージの2つのプッシュ通知を 受け取ったが、それらのいずれかが欠落している - 削除)?
あなたが何かを変更する必要がある場合 - これは、この記事の問題ではありません。ここでは、あなたが得た知識に基づいて、自分でそれを行うことができます。つまり、テクニカルアサインメントを作成し、その下で記事が書き直されると思っているのであれば、そうではありません。
私はあなたの行動を見るように:モジュール(少し変更)を書き直して使用してください。
追記:最後にもう一度、「返信」ボタンを使ってください。そうでなければ返信しません。
わかりました、自分で書きます。自分の投稿を削除していませんか(削除していたら教えてください。)
そのようなトピックは役に立つと思います。
そうそう、私は自分の投稿を編集していて、間違えて「削除」をクリックしてしまいました。そのため、プッシュは正しく届きました。