記事"「マーケット」でプロダクトを宣伝する方法"についてのディスカッション - ページ 46

 
Evgenii Sidorov:

#プロパティ indicator_separate_window

#プロパティ indicator_chart_window

また、異なるバッファに対して2つの異なる表示を指定する方法は?

ObjectCreateが 役に立ちます。オブジェクトを使って描画します。

 
Artyom Trishkin:

例えば、価格がストップロス・レベルに近すぎる場合、ストップロスを変更することはできません。凍結距離はFreezeLevelレベルによって決定されます。

ここで修正されるのはストップではなく、決済された取引です。

 
Vladimir Khlystov:

ストップが変更されたのではなく、トランザクションがクローズされたのです。

オペレーションが凍結されたら、閉じることはできない。
 

やあ、みんな!

みんな元気かな。

私はちょうどEAを作成しましたmql市場のためにそれをライセンスするための最良の方法は何ですか?このEAをマーケットで販売するために提出したいのですが、もしその必要がなければ、間違ったタイプのライセンスを追加したくありません。皆さんは何をお勧めしますか?

 
MOTIONCAPITAL:

やあ、みんな!

みんな元気かい?

私はちょうどEAを作成しましたmql市場のためにそれをライセンスするための最良の方法は何ですか?このEAをマーケットで販売するために提出したいのですが、もしその必要がなければ、間違ったタイプのライセンスを追加したくありません。皆さんは何をお勧めしますか?

MQL5マーケットでの提供/ライセンスの方法は1つだけです:

https://www.mql5.com/ja/market/rules

 
Aleksei Andarzhanov:
MQL4でExpert Advisorを作成しました。それをマーケットに出したい。Expert Advisorには2つのカスタム・インジケータが 必要ですが、ターミナルにはありません。テスト用に送信する前にExpert Advisorに添付する方法がわかりません。そしてもう一つ。ルールにはExpert Advisorはex5でなければならないと書かれています。MQL4で書かれている のであれば、ex5で作るには どうしたらいい のでしょうか?

こんな質問をしているようでは、マーケットに出るのはまだ早い。

 
Evgeniy Zhdan:

そんな質問をしているようでは、マーケットに出るには若すぎる。

わかったよ。Expert Advisorに#resource経由でインジケーターを アタッチした。ひとつだけ。それまではExpert Advisorは高速で、テスターでもすぐに飛んでいたのに、今は10倍もスピードが落ちている。ガイドに書いてあるように、ルールに従ってすべてやったし、インジケータGetRelativeProgramPath()へのパスを見つける関数も挿入した。しかし、スピードは亀のようで、ある日のテストは5分だった...。

 
Aleksei Andarzhanov:

了解。リソース経由でエキスパートアドバイザーにインジケーターを アタッチしました。しかし、1つだけ...それまではExpert Advisorは高速で、テスターでもすぐに飛んでいたのですが、今はスピードが10分の1になってしまいました。ガイドに書いてあるように、ルールに従ってすべてやりました。インジケータGetRelativeProgramPath()へのパスを見つける関数を挿入しましたが、スピードは亀のようで、ある日のテストは5分でした...。

インジケータのデータはティックごとにポーリングされていますか?

 
Denis Nikolaev:

インジケータのデータは毎ティックでポーリングされていますか?

はい。コードはすべて以前のままです。インジケータの場所だけが変わりました。以前は、ターミナルから「◎◎Indicators」から要求していましたが、現在はex4プログラム自体から要求しています。

#resource "¦Indicators¦コントラスト.ex4"

///////////

string path=GetRelativeProgramPath();

path=path+"::Indicators##Contrast.ex4";

ContrastMain_15 =NormalizeDouble(iCustom(NULL,15,path,coeff_1,0,0),Digits);

ContrastSignal_15 =NormalizeDouble(iCustom(NULL,15,path,coeff_1,1,0),Digits);

//////////

文字列 GetRelativeProgramPath()

{

int pos2;

//--- 番組への絶対パスを取得する

string path=MQLInfoString(MQL_PROGRAM_PATH);

//--- "↪MQL4↩"という部分文字列の位置を見つける

int pos =StringFind(path,"\MQL4↩");

//--- 部分文字列が見つからない - エラー

if(pos<0)

return(NULL);

//--- カタログをスキップする。

pos+=5;

//--- 不要な'˶'をスキップする

while(StringGetCharacter(path,pos+1)=='\')

pos++;

//--- もしリソースなら、MQL4カタログからの相対パスを返す。

if(StringFind(path,":::",pos)>=0)

return(StringSubstr(path,pos));

//--- MQL4の最初のサブディレクトリのデリミターを見つける(例えば、MQL4Indicators)。

//--- それがない場合、MQL4カタログからの相対パスを返す

if((pos2=StringFind(path,"˶",pos+1))<0)

return(StringSubstr(path,pos));

//--- サブディレクトリへの相対パスを返す(例えば、MQL4 Indicators)

return(StringSubstr(path,pos2+1))

}

 
Aleksei Andarzhanov:

はい、コードはすべて以前と同じです。インジケーターの場所だけが変わりました。以前はターミナルからindicatorsを要求していましたが、今はex4プログラム自体から要求しています。

#resource "¦コントラスト.ex4"

///////////

string path=GetRelativeProgramPath();

path=path+"::Indicators##Contrast.ex4";

ContrastMain_15 =NormalizeDouble(iCustom(NULL,15,path,coeff_1,0,0),Digits);

ContrastSignal_15 =NormalizeDouble(iCustom(NULL,15,path,coeff_1,1,0),Digits);

//////////

文字列 GetRelativeProgramPath()

{

int pos2;

//--- プログラムへの絶対パスを取得する

string path=MQLInfoString(MQL_PROGRAM_PATH);

//--- "↪MQL4↩"という部分文字列の位置を見つける

int pos =StringFind(path,"\MQL4↩");

//--- 部分文字列が見つかりません - エラー

if(pos<0)

return(NULL);

//--- カタログをスキップする。

pos+=5;

//--- 不要な'˶'をスキップする。

while(StringGetCharacter(path,pos+1)=='♪')

pos++;

//--- もしリソースであれば、MQL4カタログからの相対パスを返す。

if(StringFind(path,":::",pos)>=0)

return(StringSubstr(path,pos));

//--- MQL4の最初のサブディレクトリのセパレーターを見つける(例えば、MQL4Indicators)

//--- そのような区切り文字がない場合、MQL4カタログからの相対パスを返す

if((pos2=StringFind(path,"˶",pos+1))<0)

return(StringSubstr(path,pos));

//--- サブディレクトリ(例えばMQL4/Indicators)への相対パスを返す。

return(StringSubstr(path,pos2+1));

}

なんてことだ...。
iCustom()では、このようなパスを代入する:
"::Indicators###Contrast.ex4 "を代入する。