初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 97 1...90919293949596979899100101102103104...1504 新しいコメント ComplexFX 2013.02.03 16:40 #961 Vladon:アイデアはあなたのものですが、コードは別です。プログラマーがコードを書いたのであって、あなたがToRを書いたのではありません。想像してみてください。Windowsのユーザーがオープンソースを要求する、そんなばかなことがあるでしょうか?私が理解する限り、専門家が使用するコードはMetaQuotesに属しているのですか、それともあなた個人に属しているのですか?マクロソフトは、自社製品のオープンソースコードを書いたプログラマーに要求し始め、彼らは指を曲げてそれを与えないでしょう。 ComplexFX 2013.02.03 16:45 #962 Vladon:ああ :-=) じゃあ、プロテクトの前にソースがあるんですね? じゃあ、他に何が欲しいんですか?保護されたEAのオープンソース・コードは誰も渡さないし、私も渡さない、と言われていますね。また、完成後に製品のソース コードを要求するようなことがあった場合。私なら、その仕事を断っていたかもしれません。では、他に何が必要なのでしょうか?ディフェンスの前にソースコードがあるので、ディフェンスのあるアドバイザーと同じように、同じように動作するはずです。 EAの作業の中で、修正、各種機能追加などが行われましたが、それらをまとめたオープンソースコードはありません。 Vladislav Andruschenko 2013.02.03 16:47 #963 ComplexFX: Expert Advisorの制作過程で、修正、各種機能の追加などが行われましたが、それらを含むオープンソースコードはありません。となると、真実はそちらにあると思うのです。私が理解する限り、専門家が使用するコードはMetaQuotesに属しているのですか、それともあなた個人に属しているのですか?私がコードを書いたら、それは私個人のものです。MetaQuotesはプログラミング言語を所有して います。すべてが公平です。 progeon 2013.02.24 09:54 #964 Expert Advisorでオープンオーダーをクローズする方法を教えてください。ストップロスやテイクプロフィットを使ってポジションを決済 する方法を理解している。手動で行うにはどうしたらいいですか? Yedelkin 2013.02.24 09:56 #965 pogeon: Expert Advisorでオープンオーダーをクローズする方法を教えてください。ストップロスやテイクプロフィットを使ってポジションを決済 する方法を理解している。手動で行うには? mql5では、オープンポジションは、総量がクローズポジションの量と同じである反対方向の注文によってクローズされます。 Denis Lazarev 2013.02.24 19:38 #966 progeon: Expert Advisorでオープンオーダーをクローズする方法について教えてください。ストップロスやテイクプロフィットでポジションがクローズ される仕組みは理解できた。手動で行うには?または、CTradeクラスで、関数trade.PositionClose(_Symbol);斯くあるべしhttps://www.mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade/ctradepositionclose Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / PositionClose www.mql5.com Стандартная библиотека / Торговые классы / CTrade / PositionClose - Документация по MQL5 Yedelkin 2013.02.25 05:18 #967 Yedelkin: mql5では、オープンポジションは反対方向の注文によってクローズされ、その合計数量はクローズポジションの数量と等しくなります。 lazarev-d-m:あるいは 、CTradeクラスを使ってください。 CTrade クラスのPositionClose()メソッドも反対注文を使用してポジションをクローズ します。 Boris.45 2013.02.25 15:31 #968 このような状況の解決策や理由をアドバイスしてください。私はMQL5で仕事をしてからまだ日が浅いので、経験が十分ではありません。クラスを使わずに多通貨EAを作ろうとしたのですが、残念ながら多通貨EAに関する詳しい記事は見つかりませんでした。次のようなコードを書きました。int nomer_instr; // 通貨名の配列における、通貨のインデックス番号です。string Name_symbol[6] = { "AUDUSD", "EURUSD", "GBPUSD", "USDCAD", "USDCHF", "USDJPY" } ; // 通貨名のテキスト配列: [0]-"AUDUSD", 1-"EURUSD", 2-"GBPUSD", 3-"USDCAD", etc に含まれます。double Close_buf[], Open_buf[], High_buf[], Low_buf[]; //ローソク足パラメータ用ベースアレー。datetime Time_buf[]; //バーの開店時刻のベースとなる配列double Close_H1[6][150], Open_H1[6][150], High_H1[6][150], Low_H1[6][150]; // H1時間枠の多通貨EAキャンドル用パラメータ用配列。// 配列の行数は、分析した通貨の数に対応します。datetime Time_H1[6][150]; // バーのオープン時刻の配列double Close_H4[6][150], Open_H4[6][150], High_H4[6][150], Low_H4[6][150]; // H4タイムフレームの多通貨エキスパートアドバイザーのローソク足のパラメータを格納する配列// 配列の行数は、分析された通貨の数に対応します。 datetime Time_H4[6][150]; // 配列のバーオープン時間int OnInit(){}void OnDeinit(const int reason){//--- ArrayFree(Time_buf)です。 ArrayFree(Close_buf)です。 ArrayFree(Open_buf)です。ArrayFree(High_buf)です。 ArrayFree(Low_buf)です。}void OnTick(){//------------------------------------------------------------------------------新しいバーが開く瞬間を決定するためのコード Nev_Time[0] を以下に示します。およびテストまたは取引の過程で処理されるバーのシリアル番号//------------------------------------------------------------------------------------------------------------------------ArraySetAsSeries(Close_buf, true); //close_array配列のインデックスを時系列に設定する ArraySetAsSeries(Open_buf, true); //配列 open_array のインデックスを時系列に設定する。 ArraySetAsSeries(High_buf, true); //配列 high_array のインデックスを時系列に設定します. ArraySetAsSeries(Low_buf, true); // 配列 low_array のインデックスを時系列に設定します. ArraySetAsSeries(Time_buf, true); //配列 time_array のインデックスを時系列に設定する。 for( nomer_instr=0; nomer_instr<=5; nomer_instr++ ){ //======================================================================== CopyTime( Name_symbol[nomer_instr], PERIOD_H1,0,160,Time_buf); // 各バーの履歴時間データをバッファにコピーする。 CopyClose( Name_symbol[nomer_instr], PERIOD_H1,0,160,Close_buf); // 各バーのヒストリカルデータのクローズをバッファにコピーする CopyOpen( Name_symbol[nomer_instr], PERIOD_H1,0,160,Open_buf); // 各バーで開いている履歴データをバッファにコピーする CopyHigh( Name_symbol[nomer_instr], PERIOD_H1,0,160,high_buf); // 各バーの履歴データの高値をバッファにコピーする。 CopyLow( Name_symbol[nomer_instr], PERIOD_H1,0,160,low_buf); // 各バーの履歴データLowをバッファにコピーする。//======================================================================== for( i=1; i<=145; i++ ){ Time_H1[nomer_instr][i]=Time_buf[i]; Close_H1[nomer_instr][i]=Close_buf[i]; Open_H1[nomer_instr][i]=Open_buf[i]; High_H1[nomer_instr][i]=High_buf[i]; Low_H1[nomer_instr][i]=Low_buf[i];}//======================================================================================// 生成された 1 時間足のローソク足データのタイムシフトを確認する。 if( Schetchik_svech > 8 && Schetchik_svech < 15 ){ if( nomer_instr == 5 ){ Alert("================================================"); Alert(" bar number = ",Schetchik_svech,", bar open time Nev_Time[0]=",Nev_Time[0]); Alert(" instrument number:nomer_instr=",nomer_instr,", instrument: Name_symbol[nomer_instr]=",Name_symbol[nomer_instr]); Alert("---------------------------------------------------------"); for(( i=1; i<=5; i++ )){ Alert("i=",i,", Time_H1[nomer_instr][i]=",Time_H1[nomer_instr][i],", Close_H1[nomer_instr][i]=",Close_H1[nomer_instr][i]);}}}//======================================================================================}// H1タイムフレームで使用されている通貨のループを終了します。以下は、H4タイムフレームのチャートの同じ部分です。}//OnTick()関数の 終了このソフトの性能を調べてみると、意外な結果が出た。- H1 の場合、Expert Advisor が立つチャートのバーのパラメータの出力時に、ゼロバーと最初のバーの開口部の間に 1 時間の時差があります。例えば、Expert AdvisorがEURUSDチャート上にあり、ゼロバーの開始時刻がNev_Time[0]=2011.01.03 13:00:00 で、最初のバーの開始時刻 Time_H1[1][1]=2011.01.03 12:00:00 である場合です。この結果は、常識に合致しています。- 今度はExpert Advisorが同じチャート上にあり、他の通貨、例えば AUDUSDのデータを分析 します。ゼロバー開始時刻 Nev_Time[0]=2011.01.03 13:00:00 次に1バー開始時刻 Time_H1[1][1]=2011.01.03 11:00:00この結果は単純に受け入れがたいものですが、この効果の理由を論文で見つけることはできませんでした。通貨ごとにExpert Advisorを書くことができないので、この煩わしさを解消する方法を教えてください。ご感想をお寄せいただきありがとうございました。 Документация по MQL5: Основы языка / Функции / Функции обработки событий www.mql5.com Основы языка / Функции / Функции обработки событий - Документация по MQL5 Questions from Beginners MQL5 どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - Overview of Copy functions Yedelkin 2013.02.26 11:14 #969 Boris.45: ゼロバーオープンの時刻 Time_H1[1][1]=2011.01.03 13:00:00、次にファーストバーオープンの時刻 Time_H1[1][1]=2011.01.03 11:00:00 また、Time_H1[1][0]は何を返すのでしょうか? Boris.45 2013.02.26 12:32 #970 Yedelkin:Time_H1[1][0]は何を返すのですか?また、Time_H1[1][0]は、まだパラメータが形成されていないゼロバーのオープン時間です。 間違っているかもしれませんが、私の経験から、ゼロバーのパラメータを使って時系列を形成すると、歪んでしまうことが分かっています。 1...90919293949596979899100101102103104...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
アイデアはあなたのものですが、コードは別です。プログラマーがコードを書いたのであって、あなたがToRを書いたのではありません。
想像してみてください。Windowsのユーザーがオープンソースを要求する、そんなばかなことがあるでしょうか?
私が理解する限り、専門家が使用するコードはMetaQuotesに属しているのですか、それともあなた個人に属しているのですか?
マクロソフトは、自社製品のオープンソースコードを書いたプログラマーに要求し始め、彼らは指を曲げてそれを与えないでしょう。
ああ :-=) じゃあ、プロテクトの前にソースがあるんですね? じゃあ、他に何が欲しいんですか?保護されたEAのオープンソース・コードは誰も渡さないし、私も渡さない、と言われていますね。また、完成後に製品のソース コードを要求するようなことがあった場合。
私なら、その仕事を断っていたかもしれません。
では、他に何が必要なのでしょうか?ディフェンスの前にソースコードがあるので、ディフェンスのあるアドバイザーと同じように、同じように動作するはずです。
Expert Advisorの制作過程で、修正、各種機能の追加などが行われましたが、それらを含むオープンソースコードはありません。
となると、真実はそちらにあると思うのです。
私が理解する限り、専門家が使用するコードはMetaQuotesに属しているのですか、それともあなた個人に属しているのですか?
私がコードを書いたら、それは私個人のものです。MetaQuotesはプログラミング言語を所有して います。
すべてが公平です。
Expert Advisorでオープンオーダーをクローズする方法を教えてください。ストップロスやテイクプロフィットを使ってポジションを決済 する方法を理解している。手動で行うには?
Expert Advisorでオープンオーダーをクローズする方法について教えてください。ストップロスやテイクプロフィットでポジションがクローズ される仕組みは理解できた。手動で行うには?
または、CTradeクラスで、関数
trade.PositionClose(_Symbol);
斯くあるべし
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade/ctradepositionclose
lazarev-d-m:あるいは 、CTradeクラスを使ってください。
CTrade クラスのPositionClose()メソッドも反対注文を使用してポジションをクローズ します。
このような状況の解決策や理由をアドバイスしてください。私はMQL5で仕事をしてからまだ日が浅いので、経験が十分ではありません。
クラスを使わずに多通貨EAを作ろうとしたのですが、残念ながら多通貨EAに関する詳しい記事は見つかりませんでした。
次のようなコードを書きました。
int nomer_instr; // 通貨名の配列における、通貨のインデックス番号です。
string Name_symbol[6] = { "AUDUSD", "EURUSD", "GBPUSD", "USDCAD", "USDCHF", "USDJPY" } ; // 通貨名のテキスト配列: [0]-"AUDUSD", 1-"EURUSD", 2-"GBPUSD", 3-"USDCAD", etc に含まれます。
double Close_buf[], Open_buf[], High_buf[], Low_buf[]; //ローソク足パラメータ用ベースアレー。
datetime Time_buf[]; //バーの開店時刻のベースとなる配列
double Close_H1[6][150], Open_H1[6][150], High_H1[6][150], Low_H1[6][150]; // H1時間枠の多通貨EAキャンドル用パラメータ用配列。
// 配列の行数は、分析した通貨の数に対応します。
datetime Time_H1[6][150]; // バーのオープン時刻の配列
double Close_H4[6][150], Open_H4[6][150], High_H4[6][150], Low_H4[6][150]; // H4タイムフレームの多通貨エキスパートアドバイザーのローソク足のパラメータを格納する配列
// 配列の行数は、分析された通貨の数に対応します。
datetime Time_H4[6][150]; // 配列のバーオープン時間
int OnInit()
{
}
void OnDeinit(const int reason)
{
//---
ArrayFree(Time_buf)です。
ArrayFree(Close_buf)です。
ArrayFree(Open_buf)です。
ArrayFree(High_buf)です。
ArrayFree(Low_buf)です。
}
void OnTick()
{
//------------------------------------------------------------------------------
新しいバーが開く瞬間を決定するためのコード Nev_Time[0] を以下に示します。
およびテストまたは取引の過程で処理されるバーのシリアル番号
//------------------------------------------------------------------------------------------------------------------------
ArraySetAsSeries(Close_buf, true); //close_array配列のインデックスを時系列に設定する
ArraySetAsSeries(Open_buf, true); //配列 open_array のインデックスを時系列に設定する。
ArraySetAsSeries(High_buf, true); //配列 high_array のインデックスを時系列に設定します.
ArraySetAsSeries(Low_buf, true); // 配列 low_array のインデックスを時系列に設定します.
ArraySetAsSeries(Time_buf, true); //配列 time_array のインデックスを時系列に設定する。
for( nomer_instr=0; nomer_instr<=5; nomer_instr++ )
{
//========================================================================
CopyTime( Name_symbol[nomer_instr], PERIOD_H1,0,160,Time_buf); // 各バーの履歴時間データをバッファにコピーする。
CopyClose( Name_symbol[nomer_instr], PERIOD_H1,0,160,Close_buf); // 各バーのヒストリカルデータのクローズをバッファにコピーする
CopyOpen( Name_symbol[nomer_instr], PERIOD_H1,0,160,Open_buf); // 各バーで開いている履歴データをバッファにコピーする
CopyHigh( Name_symbol[nomer_instr], PERIOD_H1,0,160,high_buf); // 各バーの履歴データの高値をバッファにコピーする。
CopyLow( Name_symbol[nomer_instr], PERIOD_H1,0,160,low_buf); // 各バーの履歴データLowをバッファにコピーする。
//========================================================================
for( i=1; i<=145; i++ )
{
Time_H1[nomer_instr][i]=Time_buf[i];
Close_H1[nomer_instr][i]=Close_buf[i];
Open_H1[nomer_instr][i]=Open_buf[i];
High_H1[nomer_instr][i]=High_buf[i];
Low_H1[nomer_instr][i]=Low_buf[i];
}
//======================================================================================
// 生成された 1 時間足のローソク足データのタイムシフトを確認する。
if( Schetchik_svech > 8 && Schetchik_svech < 15 )
{
if( nomer_instr == 5 )
{
Alert("================================================");
Alert(" bar number = ",Schetchik_svech,", bar open time Nev_Time[0]=",Nev_Time[0]);
Alert(" instrument number:nomer_instr=",nomer_instr,", instrument: Name_symbol[nomer_instr]=",Name_symbol[nomer_instr]);
Alert("---------------------------------------------------------");
for(( i=1; i<=5; i++ ))
{
Alert("i=",i,", Time_H1[nomer_instr][i]=",Time_H1[nomer_instr][i],", Close_H1[nomer_instr][i]=",Close_H1[nomer_instr][i]);
}
}
}
//======================================================================================
}// H1タイムフレームで使用されている通貨のループを終了します。
以下は、H4タイムフレームのチャートの同じ部分です。
}//OnTick()関数の 終了
このソフトの性能を調べてみると、意外な結果が出た。
- H1 の場合、Expert Advisor が立つチャートのバーのパラメータの出力時に、ゼロバーと最初のバーの開口部の間に 1 時間の時差があります。
例えば、Expert AdvisorがEURUSDチャート上にあり、ゼロバーの開始時刻がNev_Time[0]=2011.01.03 13:00:00 で、最初のバーの開始時刻 Time_H1[1][1]=2011.01.03 12:00:00 である場合です。
この結果は、常識に合致しています。
- 今度はExpert Advisorが同じチャート上にあり、他の通貨、例えば AUDUSDのデータを分析 します。
ゼロバー開始時刻 Nev_Time[0]=2011.01.03 13:00:00 次に1バー開始時刻 Time_H1[1][1]=2011.01.03 11:00:00
この結果は単純に受け入れがたいものですが、この効果の理由を論文で見つけることはできませんでした。
通貨ごとにExpert Advisorを書くことができないので、この煩わしさを解消する方法を教えてください。
ご感想をお寄せいただきありがとうございました。
Time_H1[1][0]は何を返すのですか?
また、Time_H1[1][0]は、まだパラメータが形成されていないゼロバーのオープン時間です。 間違っているかもしれませんが、私の経験から、ゼロバーのパラメータを使って時系列を形成すると、歪んでしまうことが分かっています。