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

 
Vladon:

アイデアはあなたのものですが、コードは別です。プログラマーがコードを書いたのであって、あなたがToRを書いたのではありません。

想像してみてください。Windowsのユーザーがオープンソースを要求する、そんなばかなことがあるでしょうか?

私が理解する限り、専門家が使用するコードはMetaQuotesに属しているのですか、それともあなた個人に属しているのですか?

マクロソフトは、自社製品のオープンソースコードを書いたプログラマーに要求し始め、彼らは指を曲げてそれを与えないでしょう。

 
Vladon:

ああ :-=) じゃあ、プロテクトの前にソースがあるんですね? じゃあ、他に何が欲しいんですか?保護されたEAのオープンソース・コードは誰も渡さないし、私も渡さない、と言われていますね。また、完成後に製品のソース コードを要求するようなことがあった場合。

私なら、その仕事を断っていたかもしれません。

では、他に何が必要なのでしょうか?ディフェンスの前にソースコードがあるので、ディフェンスのあるアドバイザーと同じように、同じように動作するはずです。

EAの作業の中で、修正、各種機能追加などが行われましたが、それらをまとめたオープンソースコードはありません。
 
ComplexFX:
Expert Advisorの制作過程で、修正、各種機能の追加などが行われましたが、それらを含むオープンソースコードはありません。

となると、真実はそちらにあると思うのです。

私が理解する限り、専門家が使用するコードはMetaQuotesに属しているのですか、それともあなた個人に属しているのですか?

私がコードを書いたら、それは私個人のものです。MetaQuotesはプログラミング言語を所有して います。

すべてが公平です。

 
Expert Advisorでオープンオーダーをクローズする方法を教えてください。ストップロスやテイクプロフィットを使ってポジションを決済 する方法を理解している。手動で行うにはどうしたらいいですか?
 
pogeon:
Expert Advisorでオープンオーダーをクローズする方法を教えてください。ストップロスやテイクプロフィットを使ってポジションを決済 する方法を理解している。手動で行うには?
mql5では、オープンポジションは、総量がクローズポジションの量と同じである反対方向の注文によってクローズされます。
 
progeon:
Expert Advisorでオープンオーダーをクローズする方法について教えてください。ストップロスやテイクプロフィットでポジションがクローズ される仕組みは理解できた。手動で行うには?

または、CTradeクラスで、関数

trade.PositionClose(_Symbol);

斯くあるべし

https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade/ctradepositionclose

Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / PositionClose
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / PositionClose
  • www.mql5.com
Стандартная библиотека / Торговые классы / CTrade / PositionClose - Документация по MQL5
 
Yedelkin: mql5では、オープンポジションは反対方向の注文によってクローズされ、その合計数量はクローズポジションの数量と等しくなります。

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を書くことができないので、この煩わしさを解消する方法を教えてください。

ご感想をお寄せいただきありがとうございました。

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
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]は何を返すのでしょうか?
 
Yedelkin:

Time_H1[1][0]は何を返すのですか?

また、Time_H1[1][0]は、まだパラメータが形成されていないゼロバーのオープン時間です。 間違っているかもしれませんが、私の経験から、ゼロバーのパラメータを使って時系列を形成すると、歪んでしまうことが分かっています。

理由: