初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 237

 
Sergey Likho:

MT5からのインジケーターは、2色で線を描きます

行の値は同じバッファにある。

インジケータに値を要求する際に、線の色を識別する方法はありますか?

できます。線の色はカラーバッファに格納される。1行しかない場合、値バッファは0、色バッファは1になります。従って、CopyBufferでは第2パラメータに1を入れます。
 
Ventura:

パラメータウィンドウをプログラムで表示できない場合、何らかの方法でパラメータを初期化できるかどうか教えてください。

input double BuyStop=100;
double MyBuyStop=BuyStop;


.........
if(something) MyBuyStop=200;
 
Евгений:

おすすめは?

まず令状は、記号とマジックでふるい分けなければならない。2つの命令が残されています。条件で削除したいものを選択するのです。1つ削除して、ストップロスを変更するのです。

 
Aleksei Stepanenko
input double BuyStop=100;
double MyBuyStop=BuyStop;


.........
if(something) MyBuyStop=200;

Alexey、私はパラメータ計算関数を、パラメータウィンドウが表示された後ではなく、その前に呼び出す方法を提案するよう依頼しました。

パラメータウィンドウをプログラム的に呼び出すことは可能か?そうでない場合、パラメータウィンドウが表示される前に、関数からパラメータを初期化することは可能でしょうか?

このようなことをしたいのですが

input double BuyStop = GetMyBuyStop();

でも、右側には定数しか置けないというエラーが出るんです(

 
Ventura:

Alexey、私はパラメータ計算関数を、パラメータウィンドウが表示された後ではなく、その前に呼び出す方法を提案するよう依頼しました。

パラメータウィンドウをプログラム的に呼び出すことは可能か?そうでない場合、パラメータウィンドウが表示される前に、関数からパラメータを初期化することは可能でしょうか?

このようなことをしたいのですが

input double BuyStop = GetMyBuyStop();

しかし、右側の定数しか存在し得ないというエラーが発生する(

パラメータウィンドウが表示される前には何もなく、すべてが始まるのはウィンドウがすでに読み込まれた後である

 

まさにVitalyの言う通りです!

グラフ上にパネルを作成 し、そこから変数を管理します。

 
Vitaly Muzichenko:

パラメータウィンドウが表示される前には何もなく、ウィンドウがすでに読み込まれているときに後から開始されるだけです

それがわかっているからこそ、プロのアドバイスを待っているのです。もしかしたら、Win APIなどによる非標準的な手段でできるかもしれません。

コードからプログラム的にウィンドウを表示する方法は本当にないのでしょうか?

 
Ventura:

それがわかっているからこそ、プロのアドバイスを待っているのです。もしかしたら、Win APIなどによる非標準的な手段でできるかもしれません。

コードからプログラム的にウィンドウを表示する方法はないのでしょうか?

EAの初期化前(パラメータも初期化前に入力)には、EAが使えない、動かない...。Expert Advisor の初期化前に、そのパラメータのウィンドウが利用可能です。しかし、それはあなたには似合わない。そのため、EAの初期化後に、必要な値を別の方法で入力します。MessageBox()ウィンドウにアクセスすることができます。しかし、これはあまり役に立ちません。値の入力欄がなく、同意/不同意/キャンセルのボタンがあるだけだからです。

だから-、自分のウィンドウを使う必要があるのです。オブジェクトから自分で作ることができます。ObjectCreate() で探してみてください。またはCanvasを使用します。しかし、キャンバスは単純な工芸品には向きません。

Документация по MQL5: Графические объекты / ObjectCreate
Документация по MQL5: Графические объекты / ObjectCreate
  • www.mql5.com
ObjectCreate - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

EAが初期化される前に(初期化前にパラメータを入力する)、動作しない...。EAが初期化される前に、そのパラメータウィンドウを利用することができます。しかし、それはあなたには似合わない。そのため、EAの初期化後に、必要な値を別の方法で入力します。MessageBox()ウィンドウにアクセスすることができます。しかし、これはあまり役に立ちません。値の入力欄がなく、同意/不同意/キャンセルのボタンがあるだけだからです。

だから-、自分のウィンドウを使う必要があるのです。オブジェクトから自分で作ることができます。ObjectCreate() で探してみてください。またはCanvasを使用します。しかし、キャンバスは単純な工芸品には向きません。

Artemさん、ありがとうございます!アドバイス待ってました。待っている間、私自身は解決策を模索していました。今朝、プログラムで設定画面を表示させる方法を見つけました

F7を押すことでウィンドウが呼び出されることがわかりました。インターネットで検索したところ、MQLを使ってソフトキー表示を作ることができることがわかりました。

あとはテクニックの問題ですね。もし、誰かが役に立つかもしれないので、ここにコードを貼り付けて共有します。

extern double BuyStop, SellStop;

...

void SetParams()
  {
   BuyStop = CalcBuyStop();
   SellStop = CalcSellStop();
   int handle = WindowHandle(Symbol(), 0);
   PostMessageA(handle,WM_KEYDOWN,VK_F7,0);
  } 
 

しかし、私は喜ぶのが早すぎました。プログラムでパラメータウィンドウを開くことはできたのですが、プロシージャのパラメータに割り当てた値が保存されていません((

つまり、パラメータウィンドウを開くと、初期化時に指定した値(私の場合はゼロ)が表示されるのです。

計算値をパラメータフォームに転送する方法はありますか?