エキスパートアドバイザー - 雑多な質問 - ページ 11 1...456789101112131415161718...43 新しいコメント honest_knave 2016.12.16 14:20 #101 Max Enrik:以下のコードは、あなたが私を助けてくれた後、完全に動作します。そして、私はあなたが言ったように名前を変更し、それは良い動作しますが、ちょうど私が疑問に思っている、私は何か間違ったことをやっているのでしょうか?( ただ、私は心配 です )自分のコードが動くかどうか心配するのは、ごく普通のことです(実際、それは健全なことです)。よくあるのは、コンパイルはできるけど、やりたいことができないコードです(ヒューマンエラーや知識不足のため)。一番良い方法は、変数を出力し、リターンコードをチェック する習慣を身につけることです。一度テストしたら、print文を削除することができます。上記のコードスニペットを使って、単純なPrint("SL value:" +sl) を追加し、Expertログをチェックして、値が期待通りかどうかを確認することができます。 William Roeder 2016.12.16 16:06 #102 Max Enrik: ただ、疑問に思うのは、私が何か間違った ことをしているのだろうかということです。 { sl = Bid + points_to_change( stoploss * 10 ); } なぜ10倍しているのですか?ストップロスが pips単位なら、pips_to_changeで 変換して、4桁のブローカーで動作するようにする。 Max Enrik 2016.12.17 07:59 #103 Marco vd Heijden: デザイン通りに動けば問題ないのですが、そうでなければ単純に動かないということです。#チェックマーク - 終了そうなんです。このビットマップラベルには 長い時間がかかりました。やっと、欲しいものが手に入りました...。 もちろん、巨大な男、あなたの助けをいただきありがとうございます。私は以下のようなコードで問題を解決しています。void ordersell(){ // Sell set Stop Loss with bitmap label // when bitmap label shows - ON if ( ObjectGetInteger( 0, "bitmap label on off", OBJPROP_STATE ) == true ) { sl = Bid + points_to_change( stoploss * 10 ); Print( " | TRUE : Active | ", "Bid: ", Bid, " | ", "Stop Loss: ", sl ); } // when bitmap label shows - OFF if ( ObjectGetInteger( 0, "bitmap label on off", OBJPROP_STATE ) == false ) { sl = 0; Print( " | FALSE : Inactive | ", "Bid: ", Bid, " | ", "Stop Loss: ", sl ); } // call your stop loss 'sl' ticket = OrderSend( ..., sl, ... ); // sounds if ( ticket > 0 ) { PlaySound( "ok.wav" ); } else { PlaySound( "timeout.wav" ); } return;} expert advisor - miscellaneous ヘルプEAが取引を終了しない理由 I need a HELP Max Enrik 2016.12.17 08:09 #104 honest_knave:一番良い方法は、変数をプリントしてリターンコードをチェックする習慣を身につけることです。一度テストしたら、printステートメントを削除することができます。 上のあなたのコードスニペットを使って、シンプルにPrint("SL value:" +sl) を追加して、Expertログをチェックして、期待通りの値になっているかどうかを確認することができます。私はすでにこれを使用していますが、時々自分のコードを疑うことがあります。私の#Checkmark 問題を チェックして いただければ、より明確に理解して いただけると思います。 とにかく、お時間をいただきありがとうございました。 Max Enrik 2016.12.17 08:49 #105 whroeder1: なぜ10倍しているのですか?もしストップロスが pips単位なら、pips_to_changeで 変換して、4桁のブローカーで動作するようにします。あ!そうだ、いい質問だ!もう変えたんだ。ご清聴 ありがとうございました。 Max Enrik 2016.12.17 11:05 #106 #ストップロス/テイクプロフィット-クローズドより明確な コメントをありがとうございます。 これからもよろしくお願いします。Marco vd Heijden 氏に感謝します。 Max Enrik 2016.12.18 11:38 #107 #Ctrl + マウスボタン - 開く私は数時間を費やして、どのように私はそれについて良いドキュメントを見つけることができますし、私はそれのための良い情報やドキュメントを得ることができません。 私はちょうど私が0.1によって 増加するロット サイズのために'左マウス+ Ctrl'をクリックしたときに必要です。(通常は0.01 増加します)。それに関するドキュメントや例のある記事を探したいのですが。事前にありがとうございます。 honest_knave 2016.12.18 13:01 #108 Max Enrik:#Ctrl + マウスボタン - 開く私は数時間を費やして、どのように私はそれについて良いドキュメントを見つけることができますし、私はそれのための良い情報やドキュメントを得ることができません。 私はちょうど私が0.1によって 増加するロット サイズのための'左マウス+ Ctrl'をクリックすると必要です。(通常は0.01 増加します)。私はそれについての例とドキュメントや記事を見つけたい。よろしくお願いします。キーの組み合わせをトラップする簡単な方法を私は知りません。0.01ではなく0.1だけ増やしたい場合にクリックする2つ目のボタンがあるとよいでしょう。とはいえ、次のようなことを試してみてはいかがでしょうか。最後のイベントがキーストロークCTRLであったかどうかをチェック する。もしそうなら、このイベントがマウスクリックであるかどうかをチェックする。しかし、この方法にはいくつかの問題があります。1.キーストロークとマウスクリックの間に他の チャートイベントが発生した場合、失敗します。2.2. マウスをクリックしてからCTRLキーを離すまでの間に遅延が発生するため、オーバーランが発生する。これに対する回避策は、それぞれの問題を引き起こすでしょう。おそらく、他の人がもっと良いアイデアを持っていることでしょう。#define CTRL 17void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { static bool wasCTRL=false; if(wasCTRL && id==CHARTEVENT_CLICK) Print("CTRL+CLICK detected"); wasCTRL=(id==CHARTEVENT_KEYDOWN && lparam==CTRL); } expert advisor - miscellaneous List of Keycodes for how to detect a Marco vd Heijden 2016.12.18 19:08 #109 //+------------------------------------------------------------------+//| keydown.mq4 |//| Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp."#property link "https://www.mql5.com"#property version "1.00"#property strictbool ctrl_click;//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//--- create timer EventSetTimer(60);//--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- destroy timer EventKillTimer(); }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() {//--- }//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+void OnTimer() {//--- }//+------------------------------------------------------------------+void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_CLICK) { //Print("CLICK"); ctrl_click=1; } if(id==CHARTEVENT_KEYDOWN) { //Print(lparam);// print to identify keycode if(lparam==17) // ctrl key { if(ctrl_click==1)// if mouse click { //Do Something when CTRL (keycode 17) is pressed Print("CTRL+CLICK"); ctrl_click=0; // reset } } ctrl_click=0; // reset if not ctrl } }//+------------------------------------------------------------------+ expert advisor - miscellaneous 初心者の方からの質問 MQL4 MT4 MetaTrader help me please [解決済み]. Marco vd Heijden 2016.12.18 19:32 #110 そうですね。微妙に違うトホホ。 1...456789101112131415161718...43 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
以下のコードは、あなたが私を助けてくれた後、完全に動作します。
そして、私はあなたが言ったように名前を変更し、それは良い動作しますが、ちょうど私が疑問に思っている、私は何か間違ったことをやっているのでしょうか?
( ただ、私は心配 です )
自分のコードが動くかどうか心配するのは、ごく普通のことです(実際、それは健全なことです)。よくあるのは、コンパイルはできるけど、やりたいことができないコードです(ヒューマンエラーや知識不足のため)。
一番良い方法は、変数を出力し、リターンコードをチェック する習慣を身につけることです。一度テストしたら、print文を削除することができます。
上記のコードスニペットを使って、単純なPrint("SL value:" +sl) を追加し、Expertログをチェックして、値が期待通りかどうかを確認することができます。
デザイン通りに動けば問題ないのですが、そうでなければ単純に動かないということです。
#チェックマーク - 終了
そうなんです。このビットマップラベルには 長い時間がかかりました。やっと、欲しいものが手に入りました...。
もちろん、巨大な男、あなたの助けをいただきありがとうございます。
私は以下のようなコードで問題を解決しています。
{
// Sell set Stop Loss with bitmap label
// when bitmap label shows - ON
if ( ObjectGetInteger( 0, "bitmap label on off", OBJPROP_STATE ) == true )
{
sl = Bid + points_to_change( stoploss * 10 );
Print( " | TRUE : Active | ", "Bid: ", Bid, " | ", "Stop Loss: ", sl );
}
// when bitmap label shows - OFF
if ( ObjectGetInteger( 0, "bitmap label on off", OBJPROP_STATE ) == false )
{
sl = 0;
Print( " | FALSE : Inactive | ", "Bid: ", Bid, " | ", "Stop Loss: ", sl );
}
// call your stop loss 'sl'
ticket = OrderSend( ..., sl, ... );
// sounds
if ( ticket > 0 )
{ PlaySound( "ok.wav" ); } else
{ PlaySound( "timeout.wav" ); }
return;
}
一番良い方法は、変数をプリントしてリターンコードをチェックする習慣を身につけることです。一度テストしたら、printステートメントを削除することができます。
上のあなたのコードスニペットを使って、シンプルにPrint("SL value:" +sl) を追加して、Expertログをチェックして、期待通りの値になっているかどうかを確認することができます。
私はすでにこれを使用していますが、時々自分のコードを疑うことがあります。私の#Checkmark 問題を チェックして いただければ、より明確に理解して いただけると思います。
とにかく、お時間をいただきありがとうございました。
なぜ10倍しているのですか?もしストップロスが pips単位なら、pips_to_changeで 変換して、4桁のブローカーで動作するようにします。
あ!そうだ、いい質問だ!もう変えたんだ。ご清聴 ありがとうございました。
#ストップロス/テイクプロフィット-クローズド
より明確な コメントをありがとうございます。
Marco vd Heijden 氏に感謝します。これからもよろしくお願いします。
#Ctrl + マウスボタン - 開く
私は数時間を費やして、どのように私はそれについて良いドキュメントを見つけることができますし、私はそれのための良い情報やドキュメントを得ることができません。
私はちょうど私が0.1によって 増加するロット サイズのために'左マウス+ Ctrl'をクリックしたときに必要です。(通常は0.01 増加します)。
それに関するドキュメントや例のある記事を探したいのですが。
事前にありがとうございます。
#Ctrl + マウスボタン - 開く
私は数時間を費やして、どのように私はそれについて良いドキュメントを見つけることができますし、私はそれのための良い情報やドキュメントを得ることができません。
私はちょうど私が0.1によって 増加するロット サイズのための'左マウス+ Ctrl'をクリックすると必要です。(通常は0.01 増加します)。
私はそれについての例とドキュメントや記事を見つけたい。
よろしくお願いします。
キーの組み合わせをトラップする簡単な方法を私は知りません。0.01ではなく0.1だけ増やしたい場合にクリックする2つ目のボタンがあるとよいでしょう。
とはいえ、次のようなことを試してみてはいかがでしょうか。
最後のイベントがキーストロークCTRLであったかどうかをチェック する。
もしそうなら、このイベントがマウスクリックであるかどうかをチェックする。
しかし、この方法にはいくつかの問題があります。
1.キーストロークとマウスクリックの間に他の チャートイベントが発生した場合、失敗します。
2.2. マウスをクリックしてからCTRLキーを離すまでの間に遅延が発生するため、オーバーランが発生する。これに対する回避策は、それぞれの問題を引き起こすでしょう。
おそらく、他の人がもっと良いアイデアを持っていることでしょう。
const long &lparam,
const double &dparam,
const string &sparam)
{
static bool wasCTRL=false;
if(wasCTRL && id==CHARTEVENT_CLICK) Print("CTRL+CLICK detected");
wasCTRL=(id==CHARTEVENT_KEYDOWN && lparam==CTRL);
}
//| keydown.mq4 |
//| Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
bool ctrl_click;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(60);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
if(id==CHARTEVENT_CLICK)
{
//Print("CLICK");
ctrl_click=1;
}
if(id==CHARTEVENT_KEYDOWN)
{
//Print(lparam);// print to identify keycode
if(lparam==17) // ctrl key
{
if(ctrl_click==1)// if mouse click
{
//Do Something when CTRL (keycode 17) is pressed
Print("CTRL+CLICK");
ctrl_click=0; // reset
}
}
ctrl_click=0; // reset if not ctrl
}
}
//+------------------------------------------------------------------+
そうですね。
微妙に違うトホホ。