エキスパートアドバイザー - 雑多な質問 - ページ 34

 
Marco vd Heijden:

いいえ、それはデモ口座か ライブ口座かを確認するためのもので、コンテストはほとんど使用されていません。
ロットマックスは非常に簡単です。

迅速な対応ありがとうございました。

デモ口座だけ最大ロットサイズを適用すればいいのです。
(もちろん実際にはライブ口座ですが、これはテスト用です。) デモ口座の場合、ロットサイズが良ければロットサイズマックスが売りと買いの注文を出さないか 試したいのですが、ライブ口座やコンテスト口座の場合、このロットサイズマックスは両方( ライブまたはコンテスト )に適用されないので)

スイッチオペレーターを使用することはできますか?

どうもありがとうございました。
( 後で試してみます。 )

 
スイッチオペレータを使用することができます。
 
Marco vd Heijden:
//---
// calculate lotsize here
//---

// check if lotsize is not too high

if(lotsize>lotsize_max)
{
  lotsize=losize_max;
}

私は尋ねたい - あなたが言いたい - 場合は、 " lotize > lotize_max " ロットサイズは、 " lotize = lotize_max "デモ口座の ためにあるべきでしょうか?私はあなたを正しく理解し、してください?

どうもありがとうございます。
( 私はそれに取り組んでいます )

 
Max Enrik:

私は尋ねたい - あなたが言いたい - 場合は、 " lotize > lotize_max " ロットサイズは、 " lotize = lotize_max "デモ口座の ためにあるべきでしょうか?私は、あなたを正しく理解してください?

どうもありがとうございます。
( I am working on it )

試す
if(IsDemo() && lotize>lotsize_max) lotize=lotsize_max。
 
honest_knave:
試してみる
if(IsDemo() && lotsize>lotsize_max) lotsize=lotsize_max;

おお!いい感じですね。ありがとうございます。

----
関数は 私に尋ねるべきだと思う - はい またはいいえ- 私は今のところ、これが良いかもしれないと思います。(私はちょうどそれがデモ(もちろんライブ)口座で私のために動作していることをこの関数のための経験を必要とする - 私は月曜日にこの関数をテストします - 私はコードのこの部分を完了することができます場合)。
( 今、私はこの関数について十分に知らない - 私は明日まで行うことができます願っています )

どんな良いコメントでも私のために最高の助けになります。
事前にありがとうございます。

 

はいもちろんすべての手段によってlotsmaxなしでそれで行くと、後であなたの戦略を微調整したい、またはリスクを制限したい場合は、それを使用することができますので、それは現在そのような必需品ではありません。

あなたはちょうど私がちょうどあなたに私のセキュリティメカニズムのいくつかの行を示したいと思ったそれを排除することができます。


確認が必要な場合は

MessageBox()

https://docs.mql4.com/common/messagebox


int result=MessageBox(" This is a Messagbox, Do you want to proceed?","Warning",MB_YESNO);

if(result==IDYES)
{
  // Yes Pressed
   Print("OK");
}

if(result==IDNO)
{
  // No Pressed
}

メッセージの後のメッセージボックス関数で設定する主なフラグは以下の通りです。

定数

説明

MB_OK

0x00000000

メッセージウィンドウにはボタンが1つだけあります。OKデフォルト

MB_OKCANCEL

0x00000001

メッセージウィンドウにボタンが2つ表示される。OKとCancel

MB_ABORTRETRYIGNORE

0x00000002

メッセージウィンドウに3つのボタンが表示されます。中止]、[再試行]、[無視]の3つのボタン

MB_YESNOCANCEL

0x00000003

メッセージウィンドウには3つのボタンがあります。Yes、No、Cancel の 3 つのボタン

MB_YESNO

0x00000004

メッセージウィンドウには2つのボタンがあります。はい]と[いいえ]の2つのボタン

MB_RETRYCANCEL

0x00000005

メッセージウィンドウには2つのボタンがあります。再試行とキャンセル

MB_CANCELTRYCONTINUE

0x00000006

メッセージウィンドウに3つのボタンがあります。キャンセル, 再試行, 継続


そして、ここに戻り値があります。

定数

説明

IDOK

1

"OK "ボタンが押された

IDCANCEL

2

「キャンセル "ボタンが押された

IDABORT

3

「中止 "ボタンが押された

IDRETRY

4

「再試行 "ボタンが押された

IDIGNORE

5

「無視 "ボタンが押された

IDYES

6

「はい "ボタンが押された

IDNO

7

「いいえ "ボタンが押された

IDTRYAGAIN

10

"再試行 "ボタンが押された

IDCONTINUE

11

"Continue "ボタンが押されました


Messagebox()がテスターで動作しない。

MessageBox - Common Functions - MQL4 Reference
MessageBox - Common Functions - MQL4 Reference
  • docs.mql4.com
MessageBox - Common Functions - MQL4 Reference
 
Marco vd Heijden:

はいもちろんすべての手段によってlotsmaxなしでそれで行くと、後であなたの戦略を微調整したい、またはリスクを制限したい場合は、それを使用することができますので、それは現在そのような必需品ではありません。
あなたはちょうど私がちょうどあなたに私のセキュリティメカニズムのいくつかの行を示したいと思ったそれを排除することができます。

この度は、本当にありがとうございました。

というわけで、以下のような方法を試してみたのですが、これでいいのでしょうか?
( 私はそれらを私のメインの.mq4ファイルに持って来る前に尋ねる必要がありました - 私はそれに取り組んでいます )

事前にありがとうございます。

if(sparam==SellButton)
{
  result_message=MessageBox("Do you want to proceed?","Warning",MB_YESNO);

  if(result_message==IDYES)
    {
     ordersell(); // Send Order function here
     Print("Clicked YES"," Sell Order Applied");
    }

  if(result_message==IDNO)
    {
     Print("Clicked NO"," Sell Order Canceled");
    }
  ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
}
 

ちょっとしたコツで、コードの実行効率が(ごくごくわずかですが)上がります......でもね、全部足せばいいんです

あなたは2つのボタンを持つメッセージボックスを持っています。もしIDYESでなければ、IDNOでなければなりません(または、関数が 正常に完了しなかった)。

ですから、result_messageを 2回テスト する必要はありません。

if(sparam==SellButton)
{
  result_message=MessageBox("Do you want to proceed?","Warning",MB_YESNO);

  if(result_message==IDYES)
    {
     ordersell(); // Send Order function here
     Print("Clicked YES"," Sell Order Applied");
    }
   else
    {
     Print("Clicked NO"," Sell Order Canceled");
    }
  ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
}

もし、書いてあるのを見たいなら、'else if' ステートメントを使いましょう。

if(sparam==SellButton)
{
  result_message=MessageBox("Do you want to proceed?","Warning",MB_YESNO);

  if(result_message==IDYES)
    {
     ordersell(); // Send Order function here
     Print("Clicked YES"," Sell Order Applied");
    }

  else if(result_message==IDNO)
    {
     Print("Clicked NO"," Sell Order Canceled");
    }
  ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
}
 
honest_knave:

ちょっとしたコツで、コードの実行効率が(ごくごくわずかですが)上がります......でもね、全部足せばいいんです
あなたは2つのボタンを持つメッセージボックスを持っています。もしIDYESでなければ、IDNOでなければなりません(または、関数が 正常に完了しなかった)。
ですから、result_messageを 2回テスト する必要はありません。

本当にありがとうございました。
これで、メインのEAに入れることができるようになりました。
(また、MessageBox()の経験も必要です。)

 
Max Enrik:

今まで本当にありがとうございました。
これで、メインのEAに入れられるようになりました。
(MessageBox()の経験も必要です。)

他の方法で書いても何も問題なかったのですが、個人的な好みの問題です。解決してよかったです。