MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 56 1...495051525354555657585960616263...1953 新しいコメント Mickey Moose 2017.01.05 09:27 #551 まだ磨きをかけているところです。が真であればオープンオーダー1ねばオープンオーダー2LastLot=オーダー2(またはそれ以上の番号)LastPrice= order2 (またはそれ以上の数値)価格が動くべきところに動いていたり、動いていなかったり...。LastLot=オーダー3(またはそれ以上の数字)。LastPrice=注文3(またはそれ以上の数字)。問題は、最後の(あるいはそうでない)注文が常にStopLossとTakeOutの間にあることで、注文自体がまだそこにあるため、他の注文が終了してもリセットされないということです。注文数がわからないのに、どうやってバインドするのか。最後の1つ目や2つ目のものを束ねる仕組みは、数字とともに数が変わってしまうため、効率が悪いことが判明しました。結果は、「指定されたシリーズのいずれかの注文がクローズした場合、他のすべての注文をクローズする」のようなものになるはずです。シリーズチェック - 現在の方向の最初の注文(別の注文は開きません) - 追加の識別子または他のバインディングメソッドをここで使用する必要があります。キー - 最初の注文は条件に従って開かれ、残りの注文は補助的なものである。ご意見は? Vitalie Postolache 2017.01.05 11:10 #552 trader781:まだ磨きをかけているところです。が真であればオープンオーダー1ねばオープンオーダー2LastLot=オーダー2(またはそれ以上の番号)LastPrice= order2 (またはそれ以上の数値)価格が動くべきところに動いていたり、動いていなかったり...。LastLot=オーダー3(またはそれ以上の数字)。LastPrice=注文3(またはそれ以上の数字)。問題は、最後の(あるいはそうでない)注文が常にStopLossとTakeOutの間にあることで、注文自体がまだそこにあるため、他の注文が終了してもリセットされないということです。注文数がわからないのに、どうやってバインドするのか。最後の1つ目や2つ目のものを束ねる仕組みは、数字とともに数が変わってしまうため、効率が悪いことが判明しました。結果は、「指定されたシリーズのいずれかの注文がクローズした場合、他のすべての注文をクローズする」のようなものになるはずです。シリーズチェック - 現在の方向の最初の注文(別の注文は開きません) - 追加の識別子または他のバインディングメソッドをここで使用する必要があります。キー - 最初の注文は条件に従って開かれ、残りの注文は補助的なものである。何か感想はありますか?不明である。自分の考えをもっと明確に表現するようにする。これは、「価格が正しい方向に行くかどうか、注文2を開くべきだ」ということですが、「どんな場合でも注文2を開くべきだ」というのは、どう理解すればいいのでしょうか。そして、「さもなくば」がどんどん増えていくのです。また、「価格の金額がわからないのに、どうやって残りの注文に つなげるのか」といった疑問を持たれたくないのであれば、まず金額を把握することです。 Mickey Moose 2017.01.05 11:17 #553 Vitalie Postolache:混乱し、理解しがたい。自分の考えをより明確にするようにする。だから、この"価格が正しい方向に移動したかどうか - 注文2を開くには" - どのように我々はどのような場合には"注文2を開くには"と理解するのでしょうか?そして、「さもなくば」がどんどん増えていくのです。また、「金額がわからないのにどうやって残りの注文に つなげるのか」といった疑問が湧いてこないようであれば、まずは金額を調べるべきでしょう。数字でOKEURUSD=1.10000TPに応じた買い注文を出すコマンド(すでに記述済み)EURUSD=1.10200の場合、買い注文を出します(すでに書きました)。EURUSD=1.09800で「買い」(すでに書かれています)の場合というように、200のステップでいずれかの注文が終了した場合(ストップやテイクオーバーは設定されているが、そのすべてではありません。)グリッド全体を閉じる グリッドを特定する方法を探している Vitalie Postolache 2017.01.05 11:23 #554 trader781:数字でOKEURUSD=1.10000現在値でTPに従って買い注文を出すコマンド(すでに書き込まれている)EURUSD=1.10200で買い注文に追加する場合(すでに書きました)。EURUSD=1.09800で「買い」(すでに書かれています)の場合というように、200のステップで注文が一件落着したら(ストップやテイクオーバーは既に発注されている)グリッドを閉じる グリッドを識別する方法を探している 注文番号と一緒にコメントを追加することができます。また、注文シリーズが同じ種類であれば、それらを再計算して金額を確定させるだけかもしれません。 Mickey Moose 2017.01.05 11:29 #555 Vitalie Postolache: 注文番号を記載したコメントを追加することができます。また、一連の注文が1種類である場合は、単純に再計算して数量を確定する必要があります。コメントについて考えていたのですが、フィードバックから判断すると、シェフは食べられないと思い、削除するか、自分のものに変えてしまうのでしょうまた、数え方ですが、もう1つ増やすときに数を数えて記録しなければならないのですね。 Vitalie Postolache 2017.01.05 11:36 #556 trader781:とカウントについてですが、もう1つ追加するときは、量を数えて記録しなければならないのでしょうか?また、前回より数が減っている場合は、残っているものをすべて閉じます。また、終了した注文を履歴で監視することができます。そして、指定された特性を満たす新しい注文が現れたら、シリーズを終了する。 また、注文時にTP/SLを設定せず、Expert Advisorで全シリーズのTP/SLを合計して計算することも可能です。シリーズの締めくくりに使ってください。利点 - 証券会社は、ブレークポイントのレベルが表示されませんし、シリーズを見つけるの問題は、TPまたはSLが1順序でトリガされた場合に残っています。 削除済み 2017.01.05 12:05 #557 ご挨拶...ハッピーニューイヤー...すべてのベストと繁栄を願って...このコードでは、ロットの計算を変更してください最大可能なレバレッジアカウントで実施されました。//+------------------------------------------------------------------+double volume(string symbol,double risk,double sl) { double lot=0.0; double procent=0.0; double balans=0.0; double tc = SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE); double tv = SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE); double ts=SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE); double point=SymbolInfoDouble(symbol,SYMBOL_POINT); if(Type_Balanse==Balance) balans=AccountInfoDouble(ACCOUNT_BALANCE); if(Type_Balanse==Equity) balans=AccountInfoDouble(ACCOUNT_EQUITY); if(Type_Balanse==FreeMargin) balans=AccountInfoDouble(ACCOUNT_FREEMARGIN); procent=(balans/100.0)*risk; switch((int)MarketInfo(symbol,MODE_PROFITCALCMODE)) { case 0: if(sl!=0 && tv!=0) lot=procent/(sl*tv);break; case 1: if(sl!=0 && point!=0 && tc!=0) lot=procent/(sl*point*tc);break; case 2: if(sl!=0 && point!=0 && tv!=0 && ts!=0) lot=procent/(sl*point*(tv/ts));break; } return(NormalizeVolume(symbol,lot)); } Any questions from newcomers 初心者の方からの質問 MQL5 MT5 MetaTrader 初心者の方からの質問 MQL4 MT4 MetaTrader 削除済み 2017.01.05 13:01 #558 Expert Advisorでロットの自動計算を規定する方法、レバレッジに応じて...レバレッジ1:50の預金3000とする。 Vitaly Muzichenko 2017.01.05 13:32 #559 Movlat Baghiyev: 簡単な質問ですが、レバレッジに応じてロットを自動計算するようにEAを設定するにはどうすればよいでしょうか。 例えば、レバレッジが1:50で、保証金が3000...とします。こんな風に試してみてください。void OnTick() { Comment( cLot(100) ); }//===============================================================================================//------------------------------------ Расчет лота по риску ------------------------------------+//===============================================================================================double cLot(double Percent=0) { double Free=AccountFreeMargin(), One_Lot=MarketInfo(_Symbol,MODE_MARGINREQUIRED), Min_Lot=MarketInfo(_Symbol,MODE_MINLOT), cStep=MarketInfo(_Symbol,MODE_LOTSTEP), Lots_New=0; if(Percent > 100) { Percent = 100; } if(Percent == 0) { Lots_New = 0; return(0); } else { Lots_New = MathFloor(Free*Percent/100/One_Lot/cStep)*cStep; } if(Lots_New < Min_Lot) { Lots_New = Min_Lot; } if(Lots_New*One_Lot > Free) { return(0); } return(NormalizeDouble(Lots_New,LotDigit())); }//===============================================================================================//-------------------- Кол-во знаков после точки в значении торгового лота ---------------------+//===============================================================================================int LotDigit(){ double lotStep = MarketInfo(_Symbol,MODE_LOTSTEP); return((int)MathCeil(MathAbs(MathLog(lotStep)/MathLog(10))));} Any questions from newcomers アドバイザーを無料でお書きします マーケットプレイスの自動チェック 削除済み 2017.01.05 13:44 #560 申し訳ありませんが、リスク%の選択が必要です。 一度に最大ロットを、最大0.01の単位でオープンする必要があります。 1...495051525354555657585960616263...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
まだ磨きをかけているところです。
が真であれば
オープンオーダー1
ねば
オープンオーダー2
LastLot=オーダー2(またはそれ以上の番号)
LastPrice= order2 (またはそれ以上の数値)
価格が動くべきところに動いていたり、動いていなかったり...。
LastLot=オーダー3(またはそれ以上の数字)。
LastPrice=注文3(またはそれ以上の数字)。
問題は、最後の(あるいはそうでない)注文が常にStopLossとTakeOutの間にあることで、注文自体がまだそこにあるため、他の注文が終了してもリセットされないということです。注文数がわからないのに、どうやってバインドするのか。
最後の1つ目や2つ目のものを束ねる仕組みは、数字とともに数が変わってしまうため、効率が悪いことが判明しました。
結果は、「指定されたシリーズのいずれかの注文がクローズした場合、他のすべての注文をクローズする」のようなものになるはずです。
シリーズチェック - 現在の方向の最初の注文(別の注文は開きません) - 追加の識別子または他のバインディングメソッドをここで使用する必要があります。キー - 最初の注文は条件に従って開かれ、残りの注文は補助的なものである。
ご意見は?
まだ磨きをかけているところです。
が真であれば
オープンオーダー1
ねば
オープンオーダー2
LastLot=オーダー2(またはそれ以上の番号)
LastPrice= order2 (またはそれ以上の数値)
価格が動くべきところに動いていたり、動いていなかったり...。
LastLot=オーダー3(またはそれ以上の数字)。
LastPrice=注文3(またはそれ以上の数字)。
問題は、最後の(あるいはそうでない)注文が常にStopLossとTakeOutの間にあることで、注文自体がまだそこにあるため、他の注文が終了してもリセットされないということです。注文数がわからないのに、どうやってバインドするのか。
最後の1つ目や2つ目のものを束ねる仕組みは、数字とともに数が変わってしまうため、効率が悪いことが判明しました。
結果は、「指定されたシリーズのいずれかの注文がクローズした場合、他のすべての注文をクローズする」のようなものになるはずです。
シリーズチェック - 現在の方向の最初の注文(別の注文は開きません) - 追加の識別子または他のバインディングメソッドをここで使用する必要があります。キー - 最初の注文は条件に従って開かれ、残りの注文は補助的なものである。
何か感想はありますか?
不明である。自分の考えをもっと明確に表現するようにする。
これは、「価格が正しい方向に行くかどうか、注文2を開くべきだ」ということですが、「どんな場合でも注文2を開くべきだ」というのは、どう理解すればいいのでしょうか。
そして、「さもなくば」がどんどん増えていくのです。
また、「価格の金額がわからないのに、どうやって残りの注文に つなげるのか」といった疑問を持たれたくないのであれば、まず金額を把握することです。
混乱し、理解しがたい。自分の考えをより明確にするようにする。
だから、この"価格が正しい方向に移動したかどうか - 注文2を開くには" - どのように我々はどのような場合には"注文2を開くには"と理解するのでしょうか?
そして、「さもなくば」がどんどん増えていくのです。
また、「金額がわからないのにどうやって残りの注文に つなげるのか」といった疑問が湧いてこないようであれば、まずは金額を調べるべきでしょう。
数字でOK
EURUSD=1.10000
TPに応じた買い注文を出すコマンド(すでに記述済み)
EURUSD=1.10200の場合、買い注文を出します(すでに書きました)。
EURUSD=1.09800で「買い」(すでに書かれています)の場合
というように、200のステップで
いずれかの注文が終了した場合(ストップやテイクオーバーは設定されているが、そのすべてではありません。)
グリッド全体を閉じる
グリッドを特定する方法を探している数字でOK
EURUSD=1.10000
現在値でTPに従って買い注文を出すコマンド(すでに書き込まれている)
EURUSD=1.10200で買い注文に追加する場合(すでに書きました)。
EURUSD=1.09800で「買い」(すでに書かれています)の場合
というように、200のステップで
注文が一件落着したら(ストップやテイクオーバーは既に発注されている)
グリッドを閉じる
グリッドを識別する方法を探している注文番号を記載したコメントを追加することができます。また、一連の注文が1種類である場合は、単純に再計算して数量を確定する必要があります。
コメントについて考えていたのですが、フィードバックから判断すると、シェフは食べられないと思い、削除するか、自分のものに変えてしまうのでしょう
また、数え方ですが、もう1つ増やすときに数を数えて記録しなければならないのですね。
とカウントについてですが、もう1つ追加するときは、量を数えて記録しなければならないのでしょうか?
また、前回より数が減っている場合は、残っているものをすべて閉じます。
また、終了した注文を履歴で監視することができます。そして、指定された特性を満たす新しい注文が現れたら、シリーズを終了する。
また、注文時にTP/SLを設定せず、Expert Advisorで全シリーズのTP/SLを合計して計算することも可能です。シリーズの締めくくりに使ってください。利点 - 証券会社は、ブレークポイントのレベルが表示されませんし、シリーズを見つけるの問題は、TPまたはSLが1順序でトリガされた場合に残っています。double volume(string symbol,double risk,double sl)
{
double lot=0.0;
double procent=0.0;
double balans=0.0;
double tc = SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE);
double tv = SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE);
double ts=SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE);
double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
if(Type_Balanse==Balance) balans=AccountInfoDouble(ACCOUNT_BALANCE);
if(Type_Balanse==Equity) balans=AccountInfoDouble(ACCOUNT_EQUITY);
if(Type_Balanse==FreeMargin) balans=AccountInfoDouble(ACCOUNT_FREEMARGIN);
procent=(balans/100.0)*risk;
switch((int)MarketInfo(symbol,MODE_PROFITCALCMODE))
{
case 0: if(sl!=0 && tv!=0) lot=procent/(sl*tv);break;
case 1: if(sl!=0 && point!=0 && tc!=0) lot=procent/(sl*point*tc);break;
case 2: if(sl!=0 && point!=0 && tv!=0 && ts!=0) lot=procent/(sl*point*(tv/ts));break;
}
return(NormalizeVolume(symbol,lot));
}
簡単な質問ですが、レバレッジに応じてロットを自動計算するようにEAを設定するにはどうすればよいでしょうか。 例えば、レバレッジが1:50で、保証金が3000...とします。
こんな風に試してみてください。
{
Comment( cLot(100) );
}
//===============================================================================================
//------------------------------------ Расчет лота по риску ------------------------------------+
//===============================================================================================
double cLot(double Percent=0) {
double Free=AccountFreeMargin(),
One_Lot=MarketInfo(_Symbol,MODE_MARGINREQUIRED),
Min_Lot=MarketInfo(_Symbol,MODE_MINLOT),
cStep=MarketInfo(_Symbol,MODE_LOTSTEP),
Lots_New=0;
if(Percent > 100) {
Percent = 100;
}
if(Percent == 0) {
Lots_New = 0;
return(0);
} else {
Lots_New = MathFloor(Free*Percent/100/One_Lot/cStep)*cStep;
}
if(Lots_New < Min_Lot) {
Lots_New = Min_Lot;
}
if(Lots_New*One_Lot > Free) {
return(0);
}
return(NormalizeDouble(Lots_New,LotDigit()));
}
//===============================================================================================
//-------------------- Кол-во знаков после точки в значении торгового лота ---------------------+
//===============================================================================================
int LotDigit(){
double lotStep = MarketInfo(_Symbol,MODE_LOTSTEP);
return((int)MathCeil(MathAbs(MathLog(lotStep)/MathLog(10))));
}