より少ないコード、より多くのアクション...EAを書く - ページ 6 12345678910 新しいコメント Vladimir Simakov 2019.03.12 13:41 #51 Maxim Kuznetsov:もちろん、メモリも割り当てています。計算やデバッグに必要な深さまで。この断片では30であり、これは十分すぎるほどである。もしどこかで、例えば深さ50の標準偏差を計算する必要があるのなら、キャッシュを増やすべきでしょう。しかも、それはあくまでも計算を早くするためのもの。 オッケーです。誰もが自分のビジョンを持っています。 fxsaber 2019.03.12 14:11 #52 Vladimir Simakov:展望に問題はない トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム mql5言語の特徴、TipsとTricks fxsaber さん 2018.02.15 11:48 MQL5でこのような取引ロジックでスクリプトを書いてみることをお勧めします(感覚を素早く表示するためのMQL4スタイルです)。 void OnStart() { OrderCloseBy(OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0), OrderSend(_Symbol, OP_SELL, 1, Bid, 0, 0, 0)); } Vladimir Simakov 2019.03.12 18:53 #53 fxsaber: #include <Template\Objects\COrder.mqh> #include <Template\Objects\CPosition.mqh> COrder *order1,*order2; CPosition *pos1,*pos2; //---------------------------------------------------------------------- int OnInit() { order1=new COrder(NULL,ORDER_TYPE_BUY,0.2,0.0,0.0,0.0); order2=new COrder(NULL,ORDER_TYPE_SELL,0.1,0.0,0.0,0.0); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { delete order1; delete order2; delete pos1; delete pos2; } //+------------------------------------------------------------------+ void OnTick() { CheckOrder(order1,pos1); CheckOrder(order2,pos2); if (CheckPointer(pos1)&&CheckPointer(pos2)) pos1.CloseBy(pos2); if (CheckPointer(pos1)&&pos1.Control()>POSITION_MUST_CLOSE) delete pos1; if (CheckPointer(pos2)&&pos2.Control()>POSITION_MUST_CLOSE) delete pos2; } void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { if (CheckPointer(order1)) order1.TradeTransaction(trans,request,result); if (CheckPointer(order2)) order2.TradeTransaction(trans,request,result); } //----------------------------------------------------------------- void CheckOrder(COrder* &order, CPosition* &position){ if (!CheckPointer(order)) return; switch(order.Control()){ case ORDER_FULL: position=NewPosition(order); Print(position.GetTicket()," Ok"); case ORDER_REMOVE: case ORDER_ERROR: delete order;}} //------------------------------------------------------------------- CPosition* NewPosition(COrder* &order) {return CheckPointer(order)&&PositionSelectByTicket(order.GetTicket())?new CPosition():NULL;} ex5ファイルを添付します。 CloseBy はゼロから作ったので、今までは必要なかったのですが、「弱い」おかげで、あとはCloseBy後のポジションを変更するだけです。 将来的には、COrder と CPostion のラッパークラスを1つずつ用意する予定です。 ファイル: Test.ex5 43 kb Maxim Kuznetsov 2019.03.12 19:00 #54 何が行われているのか、言葉で説明してみますね :-) 仮にExpert Advisorが必要だとします。まず、フラクタルによるクロスとトレーリングストップで取引する最もシンプルなものが必要です。つまり、ターミナルでは、次のように表示されます。 BLACKで囲ったのは、表の1行目です。Expert Advisor がそのアルゴリズムに考慮するこれらのデータ。 この領域に何があり、どのようにカウントされ、エキスパートアドバイザーと何が補完されるのか、できるだけコンパクトに記述することが、今回紹介したユースケースの目的です。このデータをもとに、どのような計算をするのか。 私見ですが、一番簡単なのは 1) これらのフィールドに名前を付けてリストアップする、つまりENUMにリストアップする。 2.) 簡単な関数を作成し、ENUM とバーから名前を取って、その値を Expert Advisor に渡す。普通のプログラマーにとって、簡単なExpert Advisorの開発には一定の方法論(明確に示された手順)がある。 1.入力の定義 2. 数式を記述してデータを補強し、必要に応じて列を追加する。 3.結果のテーブルのどのデータをどこで使うかを指定します。 データを保存するために、私たちはDataFrameというクラスを作りました。このクラスは、データを「列ごとに」保存し、インデックスによるアクセス、データのキャッシュ、オンデマンドの計算を提供します。 この薄型(コードはあまりなく、ユースケースに厳密に必要なもののみ)上に、様々なExpert Advisorを開発することができます。テーブルがカウントされ、シグナルが受信され、取引が開始されます。 もちろん、それだけでは十分ではありません :-)というわけで、プロジェクトがスタートしたわけですが...。そして、既成のソリューションはなく、プロジェクトです。まだ生まれたばかりで、発展途上のプロジェクトです。 fxsaber 2019.03.12 19:13 #55 Vladimir Simakov: 弱」ありがとうございます。EAではなく、スクリプトか。しかし、EAであってもMT4とMT5の違いを完璧に証明してくれましたね。そのうちの1つは、1行しかないバリエーションです。そして2回目は、残念ながら失敗してしまいました。 Vladimir Simakov 2019.03.12 19:20 #56 fxsaber:EAではなく、スクリプトか。しかし、EAであっても、MT4とMT5の違いを完璧に証明してくれましたね。バリアントの1つには1行しかありません。さあ、CloseBy、一応、pos1.CloseBy(pos2)はありますが、他は全てオープニングオーダーと動作確認です。mt4では、まず2つのポジションをオープンし、そのオープンに対するチェックを提供する必要もあります。比較のために、スタジオで動作しているコードも掲載していただくといいかもしれませんね。 Vladimir Simakov 2019.03.12 19:27 #57 Maxim Kuznetsov:何が行われているのか、言葉で説明してみますね :-) 仮にExpert Advisorが必要だとします。まず、フラクタルによるクロスとトレーリングストップで取引する最もシンプルなものが必要です。つまり、ターミナルでは、次のように表示されます。 BLACKで囲ったのは、表の1行目です。Expert Advisor がそのアルゴリズムに考慮するこれらのデータ。 この領域に何があり、どのようにカウントされ、エキスパートアドバイザーと何が補完されるのか、できるだけコンパクトに記述することが、今回紹介したユースケースの目的です。このデータをもとに、どのような計算をするのか。 私見ですが、一番簡単なのは 1) これらのフィールドに名前を付けてリストアップする、つまりENUMにリストアップする。 2.) 簡単な関数を作成し、ENUM とバーから名前を取って、その値を Expert Advisor に渡す。普通のプログラマーにとって、簡単なExpert Advisorの開発には一定の方法論(明確に示された手順)がある。 1.入力の定義 2. 数式を記述してデータを完成させる。必要に応じて列を追加する。 3.結果のテーブルのどのデータをどこで使うかを指定します。 データを保存するために、「列単位」でデータを保存するDataFrameクラスがあり、インデックスによるアクセス、データのキャッシュ、オンデマンドの計算を提供します。 この薄型(コードはあまりなく、ユースケースに厳密に必要なもののみ)上に、様々なExpert Advisorを開発することができます。テーブルがカウントされ、シグナルが受信され、取引が開始されます。 もちろん、それだけでは十分ではありません :-)というわけで、プロジェクトがスタートしたわけですが...。そして、既成のソリューションはなく、プロジェクトです。まだ生まれたばかりで、発展途上のプロジェクトです。一般的な考え方として、Ichimokuのラッパークラスの例ですが、mql4で。 #ifndef _ICHIMOKU_ #define _ICHIMOKU_ #include <ProjectLibrary\Functions\MyLib.mqh> class CIchimoku { private: string cSymbol; ENUM_TIMEFRAMES cFrame; int cTenkan; int cKijun; int cSenkou; ENUM_TIMEFRAMES cTempFrame; int cFrameShift; public: CIchimoku(string mSymbol,ENUM_TIMEFRAMES mFrame,int mTenkan,int mKijun,int mSenkou,int mDeltaFrame=0); double Get(int mBuffer,int mShift=0); double Tenkan(int mShift=0) {return Get(MODE_TENKANSEN,mShift);} double Kijun(int mShift=0) {return Get(MODE_KIJUNSEN,mShift);} double SpanA(int mShift=0) {return Get(MODE_SENKOUSPANA,mShift);} double SpanB(int mShift=0) {return Get(MODE_SENKOUSPANB,mShift);} double Chikou(int mShift=0) {return Get(MODE_CHIKOUSPAN,mShift);} double CloudMin(int mShift=0) {return MathMin(SpanA(mShift),SpanB(mShift));} double CloudMax(int mShift=0) {return MathMax(SpanA(mShift),SpanB(mShift));} private: ENUM_TIMEFRAMES CheckFrame(); }; //-------------------------------------------------------------------------------------------------- CIchimoku::CIchimoku(string mSymbol,ENUM_TIMEFRAMES mFrame,int mTenkan,int mKijun,int mSenkou,int mFrameShift=0): cTenkan(mTenkan),cKijun(mKijun),cSenkou(mSenkou),cFrameShift(mFrameShift){ cSymbol=mSymbol==NULL?_Symbol:mSymbol; if (mFrameShift){ cTempFrame=mFrame==PERIOD_CURRENT?(ENUM_TIMEFRAMES)Period():mFrame; cFrame=::GetShiftFrame(cTempFrame,mFrameShift);} else cFrame=mFrame;} //-------------------------------------------------------------------------------------------------- ENUM_TIMEFRAMES CIchimoku::CheckFrame(void){ if (!cFrameShift) return cFrame;//>> ENUM_TIMEFRAMES frame=(ENUM_TIMEFRAMES)Period(); if (cTempFrame==frame) return cFrame;//>> else cTempFrame=frame; return ::GetShiftFrame(frame,cFrameShift);} //-------------------------------------------------------------------------------------------------------------- double CIchimoku::Get(int mBuffer,int mShift=0){ ResetLastError(); double res=iIchimoku(cSymbol,CheckFrame(),cTenkan,cKijun,cSenkou,mBuffer,mShift); return !GetLastError()?res:0.0;} #endif Maxim Kuznetsov 2019.03.12 19:33 #58 Vladimir Simakov:一般的な考え方として、Ichimokuのラッパークラスの例ですが、mql4で。どのIchimokuコンポーネントのラッパーが必要ですか?そして最も重要なことは、なぜ、どのような種類なのか? おしゃべりでもいいじゃないですか。 PS/ Excelを見たことがありますか?DataFrameビューでは、Ishimocksは同じように表示されます...他の人たちと同じように...トレーダーは実際にテーブルを使って仕事をします。チャートは、サマリーテーブルの部分的な表現(ビュー)に過ぎない。だから、このデータはテーブルのように扱わなければならない。 トレーダーから見て、プログラムオブジェクトとは何か?何でもないことです。彼の実生活には、そんなものはない。 fxsaber 2019.03.12 19:50 #59 Vladimir Simakov:さあ、CloseBy、一応、pos1.CloseBy(pos2)、他は全てオープニングオーダーと動作確認をしています。 そういうわけにはいきません。 mt4では、まず2つのポジションをオープンし、そのオープンに対するチェックを提供する必要もあります。比較のために、スタジオで動作しているコードも掲載していただくといいかもしれませんね。 #include <MT4Orders.mqh> #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) void OnStart() { OrderCloseBy(OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0), OrderSend(_Symbol, OP_SELL, 1, Bid, 0, 0, 0)); } Vladimir Simakov 2019.03.12 19:57 #60 fxsaber: そういうわけにはいきません。 それは、まさにこの注文の冒頭をコントロールしながら書いたものです。 12345678910 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
もちろん、メモリも割り当てています。計算やデバッグに必要な深さまで。この断片では30であり、これは十分すぎるほどである。もしどこかで、例えば深さ50の標準偏差を計算する必要があるのなら、キャッシュを増やすべきでしょう。しかも、それはあくまでも計算を早くするためのもの。
展望に問題はない
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
mql5言語の特徴、TipsとTricks
fxsaber さん 2018.02.15 11:48
MQL5でこのような取引ロジックでスクリプトを書いてみることをお勧めします(感覚を素早く表示するためのMQL4スタイルです)。
ex5ファイルを添付します。
CloseBy はゼロから作ったので、今までは必要なかったのですが、「弱い」おかげで、あとはCloseBy後のポジションを変更するだけです。
将来的には、COrder と CPostion のラッパークラスを1つずつ用意する予定です。
何が行われているのか、言葉で説明してみますね :-)
仮にExpert Advisorが必要だとします。まず、フラクタルによるクロスとトレーリングストップで取引する最もシンプルなものが必要です。つまり、ターミナルでは、次のように表示されます。
BLACKで囲ったのは、表の1行目です。Expert Advisor がそのアルゴリズムに考慮するこれらのデータ。
この領域に何があり、どのようにカウントされ、エキスパートアドバイザーと何が補完されるのか、できるだけコンパクトに記述することが、今回紹介したユースケースの目的です。このデータをもとに、どのような計算をするのか。
私見ですが、一番簡単なのは
1) これらのフィールドに名前を付けてリストアップする、つまりENUMにリストアップする。
2.) 簡単な関数を作成し、ENUM とバーから名前を取って、その値を Expert Advisor に渡す。
普通のプログラマーにとって、簡単なExpert Advisorの開発には一定の方法論(明確に示された手順)がある。
1.入力の定義
2. 数式を記述してデータを補強し、必要に応じて列を追加する。
3.結果のテーブルのどのデータをどこで使うかを指定します。
データを保存するために、私たちはDataFrameというクラスを作りました。このクラスは、データを「列ごとに」保存し、インデックスによるアクセス、データのキャッシュ、オンデマンドの計算を提供します。
この薄型(コードはあまりなく、ユースケースに厳密に必要なもののみ)上に、様々なExpert Advisorを開発することができます。テーブルがカウントされ、シグナルが受信され、取引が開始されます。
もちろん、それだけでは十分ではありません :-)というわけで、プロジェクトがスタートしたわけですが...。そして、既成のソリューションはなく、プロジェクトです。まだ生まれたばかりで、発展途上のプロジェクトです。
弱」ありがとうございます。
EAではなく、スクリプトか。しかし、EAであってもMT4とMT5の違いを完璧に証明してくれましたね。そのうちの1つは、1行しかないバリエーションです。そして2回目は、残念ながら失敗してしまいました。
EAではなく、スクリプトか。しかし、EAであっても、MT4とMT5の違いを完璧に証明してくれましたね。バリアントの1つには1行しかありません。
さあ、CloseBy、一応、pos1.CloseBy(pos2)はありますが、他は全てオープニングオーダーと動作確認です。mt4では、まず2つのポジションをオープンし、そのオープンに対するチェックを提供する必要もあります。比較のために、スタジオで動作しているコードも掲載していただくといいかもしれませんね。
:何が行われているのか、言葉で説明してみますね :-)
仮にExpert Advisorが必要だとします。まず、フラクタルによるクロスとトレーリングストップで取引する最もシンプルなものが必要です。つまり、ターミナルでは、次のように表示されます。
BLACKで囲ったのは、表の1行目です。Expert Advisor がそのアルゴリズムに考慮するこれらのデータ。
この領域に何があり、どのようにカウントされ、エキスパートアドバイザーと何が補完されるのか、できるだけコンパクトに記述することが、今回紹介したユースケースの目的です。このデータをもとに、どのような計算をするのか。
私見ですが、一番簡単なのは
1) これらのフィールドに名前を付けてリストアップする、つまりENUMにリストアップする。
2.) 簡単な関数を作成し、ENUM とバーから名前を取って、その値を Expert Advisor に渡す。
普通のプログラマーにとって、簡単なExpert Advisorの開発には一定の方法論(明確に示された手順)がある。
1.入力の定義
2. 数式を記述してデータを完成させる。必要に応じて列を追加する。
3.結果のテーブルのどのデータをどこで使うかを指定します。
データを保存するために、「列単位」でデータを保存するDataFrameクラスがあり、インデックスによるアクセス、データのキャッシュ、オンデマンドの計算を提供します。
この薄型(コードはあまりなく、ユースケースに厳密に必要なもののみ)上に、様々なExpert Advisorを開発することができます。テーブルがカウントされ、シグナルが受信され、取引が開始されます。
もちろん、それだけでは十分ではありません :-)というわけで、プロジェクトがスタートしたわけですが...。そして、既成のソリューションはなく、プロジェクトです。まだ生まれたばかりで、発展途上のプロジェクトです。
一般的な考え方として、Ichimokuのラッパークラスの例ですが、mql4で。
一般的な考え方として、Ichimokuのラッパークラスの例ですが、mql4で。
どのIchimokuコンポーネントのラッパーが必要ですか?そして最も重要なことは、なぜ、どのような種類なのか?
おしゃべりでもいいじゃないですか。
PS/ Excelを見たことがありますか?DataFrameビューでは、Ishimocksは同じように表示されます...他の人たちと同じように...トレーダーは実際にテーブルを使って仕事をします。チャートは、サマリーテーブルの部分的な表現(ビュー)に過ぎない。だから、このデータはテーブルのように扱わなければならない。
トレーダーから見て、プログラムオブジェクトとは何か?何でもないことです。彼の実生活には、そんなものはない。
さあ、CloseBy、一応、pos1.CloseBy(pos2)、他は全てオープニングオーダーと動作確認をしています。
そういうわけにはいきません。
mt4では、まず2つのポジションをオープンし、そのオープンに対するチェックを提供する必要もあります。比較のために、スタジオで動作しているコードも掲載していただくといいかもしれませんね。
そういうわけにはいきません。
それは、まさにこの注文の冒頭をコントロールしながら書いたものです。