[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 423 1...416417418419420421422423424425426427428429430...631 新しいコメント elektronik 2012.10.09 14:13 #4221 sergeev: となると、関数OrderLots. この関数が理解できないので、例を挙げて助けてください :) 注文はOrderSelect() 関数で事前に選択されている必要があります」とありますが、同じ方向のすべての未決済注文を選択するにはどうすればよいのでしょうか? Yury Reshetov 2012.10.09 14:19 #4222 Elektronik: この関数が理解できないので、例を挙げて教えてください:) 注文はOrderSelect() で事前に選択されている必要があります」とありますが、同じ方向のすべての未決済注文を選択するにはどうすればよいのでしょうか? ありえません。OrderSelect() で1つずつ調べていくループのみ。 neo777 2012.10.09 14:27 #4223 このEAに挿入する必要のあるストップロス・スクリプトがあるかどうか教えてください。 double x = ... // Задаем на сколько пипсов выше double sl = NormalizeDouble(High[1] + x * Point, Digits); // Задаем значение стоплосс на x пипсов выше предпоследней свечи ファイル: cci_ma_v1.5c_3_.mq4 13 kb elektronik 2012.10.09 14:51 #4224 四捨五入せずに小数点 以下の桁数を減らすにはどうしたらよいですか? (DoubleToStr(NormalizeDouble(0.109,2),2)); = 0.11と0.10 Yury Reshetov 2012.10.09 14:55 #4225 Elektronik: 四捨五入せずに小数点以下の桁数を減らすにはどうしたらよいですか? (DoubleToStr(NormalizeDouble(0.109,2),2)); = 0.11と0.10 例えば、文字列関数を使って点の位置を求め、その1文字先で文字列を切り捨てるなど、方法はいくらでもあるのだ。しかし、もし既製のビルトインソリューションがあるのなら、なぜ私たちはどこからともなく問題を発明しなければならないのでしょうか?2つを1つに変えるだけでOKです。 elektronik 2012.10.09 14:57 #4226 Reshetov: 文字列関数を使って点の位置を求め、その1文字先で文字列を切り捨てるなど、方法はいくらでもある。しかし、すぐに使える既製のソリューションがあるのなら、なぜ問題を作り上げるのか? 既成の解決策を提案してください:) 削除済み 2012.10.09 15:04 #4227 Elektronik: 既成概念にとらわれず教えてください:) (DoubleToStr(NormalizeDouble(0.109,1)))です。 Рустам 2012.10.09 15:05 #4228 丸め込まない場合は、これだけ: Reshetov с помощью строковых функций найти местоположение точки и обрезать строку на один символ далее нее Egor Lemeshev 2012.10.09 15:47 #4229 何が問題なのか、ご教授ください。 //+------------------------------------------------------------------+ //| AAAA.mq4 //| | //| | //+------------------------------------------------------------------+ #property copyright"" #プロパティリンク "" extern string TimeStart = "00:00"; //制御期間の開始時刻 extern string TimeEnd = "00:00"; //制御周期終了のタイマーを指定する。 extern double LOT = 0.01; // ロット extern int Magic = 777; // マジック double marga,Lot,SL,TP; // 入力されたマージン、ロット、ストップロス、テイクプロフィット変数 int Total,Orders,tipOrders,TradeDey; // 変数タイプ,注文タイプ,取引日。 //+---------------------------------------------------------------------------------------------------------------------------------------+ //| エキスパートアドバイザーの機能 //+---------------------------------------------------------------------------------------------------------------------------------------+ int start() // 初期化スタート関数 { datetime Time_Start = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeStart, ":00")); // 開始パラメータ //. datetime Time_End = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeEnd, ":00")); // 終了パラメータ ///... Total=0; // 注文がない場合 for(int i=1; i<=OrdersTotal(); i++) // オーダーループ { if (OrderSelect(i-1,SELECT_BY_POS)==false) // 成行注文がない場合。 { if //If { int BarStart = iBarShift(NULL,PERIOD_M1,Time_Start,false); // m1のチェック期間の最初のバーを検索する int BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false); //基準期間のm1における検索バーエンド double Max_Price=iHigh(NULL,0,iHighest(NULL,PERIOD_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)); //期間内の最高価格値 double Min_Price=iLow (NULL,0,iLowest (NULL,PERIOD_M1,MODE_LOW,BarStart-BarEnd,BarEnd)); //期間内の最安値値 } if (TimeCurrent()>Time_End && ObjectFind("bar0"+Time_End)==-1) // グラフィックの表示設定 { ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0)を実行。 ObjectSet("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID)を使用します。 ObjectSet ("bar0"+Time_End, OBJPROP_COLOR, Blue); ObjectSet ("bar0"+Time_End, OBJPROP_BACK, true)を使用します。 ObjectSet ("bar0"+Time_End, OBJPROP_TIME1,Time_Start); ObjectSet ("bar0"+Time_End, OBJPROP_PRICE1,Max_Price); ObjectSet ("bar0"+Time_End, OBJPROP_TIME2,Time_End); ObjectSet ("bar0"+Time_End, OBJPROP_PRICE2,Min_Price); } if (Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //BUY注文を発注するための条件 NormalizeDouble(Ask + Max_Price - Min_Price,Digits), "UPDD",Magic,Blue); if (Bid>Max_Price) Comment("保留中の注文はBidで発注できません"); if (Bid>Min_Price) OrderSend(Symbol(),OP_SELLSTOP,LOT,Bid,3,Min_Price, //売り保留注文を出すための条件 NormalizeDouble(Ask + Max_Price-Min_Price,Digits), "UPDD",Magic,Blue); if (Bid<Max_Price) Comment("売り注文はできません"); } を返します。 } コンパイルできません。そうでなければ、レンジから上下に2つのペンディングオーダーを置くはずです。 [ARCHIVE!] Any rookie question, コーディングの方法は? MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 Alexander 2012.10.09 23:48 #4230 Legeo777:何が問題なのか、ご教授ください。//+------------------------------------------------------------------+//| AAAA.mq4//| |//| |//+------------------------------------------------------------------+#property copyright ""#プロパティリンク ""extern string TimeStart = "00:00"; //制御期間の開始時刻extern string TimeEnd = "00:00"; //制御周期終了のタイマーを指定する。extern double LOT = 0.01; // ロットextern int Magic = 777; // マジックdouble marga,Lot,SL,TP; // 入力されたマージン、ロット、ストップロス、テイクプロフィット変数int Total,Orders,tipOrders,TradeDey; // 変数タイプ,注文タイプ,取引日。//+---------------------------------------------------------------------------------------------------------------------------------------+//| エキスパートアドバイザーの機能//+---------------------------------------------------------------------------------------------------------------------------------------+int start() // 初期化スタート関数{datetime Time_Start = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeStart, ":00")); // 開始パラメータ //.datetime Time_End = StrToTime(StringConcatenate(Day(),".",Month(),".",Year(),",TimeEnd, ":00")); // 終了パラメータ ///...Total=0; // 注文がない場合 for(int i=1; i<=OrdersTotal(); i++) // オーダーループ{if (OrderSelect(i-1,SELECT_BY_POS)==false) // 成行注文がない場合{ if //If: -削除 {int BarStart = iBarShift(NULL,PERIOD_M1,Time_Start,false); // m1のチェック期間の最初のバーを検索するint BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false); //チェックピリオドm1の検索バーエンドdouble Max_Price=iHigh(NULL,0,iHighest(NULL,PERIOD_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)); //期間内の最高値の値double Min_Price=iLow (NULL,0,iLowest (NULL,PERIOD_M1,MODE_LOW,BarStart-BarEnd,BarEnd)); //期間内の最安値値}if (TimeCurrent()>Time_End && ObjectFind("bar0"+Time_End)==-1) // グラフィックの表示設定{ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0)を実行。ObjectSet("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID)を使用します。ObjectSet ("bar0"+Time_End, OBJPROP_COLOR, Blue);ObjectSet ("bar0"+Time_End, OBJPROP_BACK, true)を使用します。ObjectSet ("bar0"+Time_End, OBJPROP_TIME1,Time_Start);ObjectSet ("bar0"+Time_End, OBJPROP_PRICE1,Max_Price);ObjectSet ("bar0"+Time_End, OBJPROP_TIME2,Time_End);ObjectSet ("bar0"+Time_End, OBJPROP_PRICE2,Min_Price);}if (Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //BUY注文を出す条件 -AskやBidで保留注文は出せない)NormalizeDouble(Ask + Max_Price - Min_Price,Digits), "UPDD",Magic,Blue);if (Bid>Max_Price) Comment("保留中の注文はBidで発注できません");if (Bid>Min_Price) OrderSend(Symbol(),OP_SELLSTOP,LOT,Bid,3,Min_Price, //売り注文を出す条件 -同上)NormalizeDouble(Ask + Max_Price-Min_Price,Digits), "UPDD",Magic,Blue);if (Bid<Max_Price) -ここでエラーに なるはずです。 Comment("売り注文はできません"); }} - 追加を返します。}コンパイルできません。 実際はレンジから上下に2つ保留の注文を入れるはずです。 修正後、コンパイルはできますが、おそらく動作しないでしょう - 間違った時間設定、非正規化された価格、ストップとオープン価格の 近接のチェックがないことです。 1...416417418419420421422423424425426427428429430...631 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
となると、関数OrderLots.
この関数が理解できないので、例を挙げて助けてください :)
注文はOrderSelect() 関数で事前に選択されている必要があります」とありますが、同じ方向のすべての未決済注文を選択するにはどうすればよいのでしょうか?
この関数が理解できないので、例を挙げて教えてください:)
注文はOrderSelect() で事前に選択されている必要があります」とありますが、同じ方向のすべての未決済注文を選択するにはどうすればよいのでしょうか?
ありえません。OrderSelect() で1つずつ調べていくループのみ。
このEAに挿入する必要のあるストップロス・スクリプトがあるかどうか教えてください。
四捨五入せずに小数点 以下の桁数を減らすにはどうしたらよいですか?
(DoubleToStr(NormalizeDouble(0.109,2),2)); = 0.11と0.10
四捨五入せずに小数点以下の桁数を減らすにはどうしたらよいですか?
(DoubleToStr(NormalizeDouble(0.109,2),2)); = 0.11と0.10
文字列関数を使って点の位置を求め、その1文字先で文字列を切り捨てるなど、方法はいくらでもある。しかし、すぐに使える既製のソリューションがあるのなら、なぜ問題を作り上げるのか?
既成の解決策を提案してください:)
既成概念にとらわれず教えてください:)
丸め込まない場合は、これだけ:
Reshetov с помощью строковых функций найти местоположение точки и обрезать строку на один символ далее нее
何が問題なのか、ご教授ください。
//+------------------------------------------------------------------+
//| AAAA.mq4
//| |
//| |
//+------------------------------------------------------------------+
#property copyright""
#プロパティリンク ""
extern string TimeStart = "00:00"; //制御期間の開始時刻
extern string TimeEnd = "00:00"; //制御周期終了のタイマーを指定する。
extern double LOT = 0.01; // ロット
extern int Magic = 777; // マジック
double marga,Lot,SL,TP; // 入力されたマージン、ロット、ストップロス、テイクプロフィット変数
int Total,Orders,tipOrders,TradeDey; // 変数タイプ,注文タイプ,取引日。
//+---------------------------------------------------------------------------------------------------------------------------------------+
//| エキスパートアドバイザーの機能
//+---------------------------------------------------------------------------------------------------------------------------------------+
int start() // 初期化スタート関数
{
datetime Time_Start = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeStart, ":00")); // 開始パラメータ //.
datetime Time_End = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeEnd, ":00")); // 終了パラメータ ///...
Total=0; // 注文がない場合
for(int i=1; i<=OrdersTotal(); i++) // オーダーループ
{
if (OrderSelect(i-1,SELECT_BY_POS)==false) // 成行注文がない場合。
{
if //If
{
int BarStart = iBarShift(NULL,PERIOD_M1,Time_Start,false); // m1のチェック期間の最初のバーを検索する
int BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false); //基準期間のm1における検索バーエンド
double Max_Price=iHigh(NULL,0,iHighest(NULL,PERIOD_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)); //期間内の最高価格値
double Min_Price=iLow (NULL,0,iLowest (NULL,PERIOD_M1,MODE_LOW,BarStart-BarEnd,BarEnd)); //期間内の最安値値
}
if (TimeCurrent()>Time_End && ObjectFind("bar0"+Time_End)==-1) // グラフィックの表示設定
{
ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0)を実行。
ObjectSet("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID)を使用します。
ObjectSet ("bar0"+Time_End, OBJPROP_COLOR, Blue);
ObjectSet ("bar0"+Time_End, OBJPROP_BACK, true)を使用します。
ObjectSet ("bar0"+Time_End, OBJPROP_TIME1,Time_Start);
ObjectSet ("bar0"+Time_End, OBJPROP_PRICE1,Max_Price);
ObjectSet ("bar0"+Time_End, OBJPROP_TIME2,Time_End);
ObjectSet ("bar0"+Time_End, OBJPROP_PRICE2,Min_Price);
}
if (Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //BUY注文を発注するための条件
NormalizeDouble(Ask + Max_Price - Min_Price,Digits), "UPDD",Magic,Blue);
if (Bid>Max_Price)
Comment("保留中の注文はBidで発注できません");
if (Bid>Min_Price) OrderSend(Symbol(),OP_SELLSTOP,LOT,Bid,3,Min_Price, //売り保留注文を出すための条件
NormalizeDouble(Ask + Max_Price-Min_Price,Digits), "UPDD",Magic,Blue);
if (Bid<Max_Price)
Comment("売り注文はできません");
}
を返します。
}
コンパイルできません。そうでなければ、レンジから上下に2つのペンディングオーダーを置くはずです。
何が問題なのか、ご教授ください。
//+------------------------------------------------------------------+
//| AAAA.mq4
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#プロパティリンク ""
extern string TimeStart = "00:00"; //制御期間の開始時刻
extern string TimeEnd = "00:00"; //制御周期終了のタイマーを指定する。
extern double LOT = 0.01; // ロット
extern int Magic = 777; // マジック
double marga,Lot,SL,TP; // 入力されたマージン、ロット、ストップロス、テイクプロフィット変数
int Total,Orders,tipOrders,TradeDey; // 変数タイプ,注文タイプ,取引日。
//+---------------------------------------------------------------------------------------------------------------------------------------+
//| エキスパートアドバイザーの機能
//+---------------------------------------------------------------------------------------------------------------------------------------+
int start() // 初期化スタート関数
{
datetime Time_Start = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeStart, ":00")); // 開始パラメータ //.
datetime Time_End = StrToTime(StringConcatenate(Day(),".",Month(),".",Year(),",TimeEnd, ":00")); // 終了パラメータ ///...
Total=0; // 注文がない場合
for(int i=1; i<=OrdersTotal(); i++) // オーダーループ
{
if (OrderSelect(i-1,SELECT_BY_POS)==false) // 成行注文がない場合
{
if //If: -削除
{
int BarStart = iBarShift(NULL,PERIOD_M1,Time_Start,false); // m1のチェック期間の最初のバーを検索する
int BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false); //チェックピリオドm1の検索バーエンド
double Max_Price=iHigh(NULL,0,iHighest(NULL,PERIOD_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)); //期間内の最高値の値
double Min_Price=iLow (NULL,0,iLowest (NULL,PERIOD_M1,MODE_LOW,BarStart-BarEnd,BarEnd)); //期間内の最安値値
}
if (TimeCurrent()>Time_End && ObjectFind("bar0"+Time_End)==-1) // グラフィックの表示設定
{
ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0)を実行。
ObjectSet("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID)を使用します。
ObjectSet ("bar0"+Time_End, OBJPROP_COLOR, Blue);
ObjectSet ("bar0"+Time_End, OBJPROP_BACK, true)を使用します。
ObjectSet ("bar0"+Time_End, OBJPROP_TIME1,Time_Start);
ObjectSet ("bar0"+Time_End, OBJPROP_PRICE1,Max_Price);
ObjectSet ("bar0"+Time_End, OBJPROP_TIME2,Time_End);
ObjectSet ("bar0"+Time_End, OBJPROP_PRICE2,Min_Price);
}
if (Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //BUY注文を出す条件 -AskやBidで保留注文は出せない)
NormalizeDouble(Ask + Max_Price - Min_Price,Digits), "UPDD",Magic,Blue);
if (Bid>Max_Price)
Comment("保留中の注文はBidで発注できません");
if (Bid>Min_Price) OrderSend(Symbol(),OP_SELLSTOP,LOT,Bid,3,Min_Price, //売り注文を出す条件 -同上)
NormalizeDouble(Ask + Max_Price-Min_Price,Digits), "UPDD",Magic,Blue);
if (Bid<Max_Price) -ここでエラーに なるはずです。
Comment("売り注文はできません");
}
} - 追加
を返します。
}
コンパイルできません。 実際はレンジから上下に2つ保留の注文を入れるはずです。