コーディングのヘルプ - ページ 157 1...150151152153154155156157158159160161162163164...786 新しいコメント Chrisstoff 2013.10.02 15:16 #1561 mladen: クリストフそうすれば、Decimals変数もOKになるはずです いずれにせよ、注文(部分)決済に失敗した場合、どのようなエラーコードが表示されるのか確認してください。 Mladenです。 ヒントをありがとうございます。 問題は、エラーメッセージがないことです。うまくいかないときは、まるでPartialTP関数が 呼ばれていないかのように見えます。他の時-通常、EA再起動後の最初の注文で-はうまくいきます。 変数の1つがゼロ値に戻らないとか、そのようなことを考えたのですが、まだバグを見つけることができません。 Mladen Rakic 2013.10.02 17:15 #1562 chrisstoff: ムラデン ヒントをありがとうございました。問題は、エラーメッセージがないことです。うまくいかないときは、まるでPartialTP関数が呼び出されていないかのように見えます。他の時 - 通常、EA再起動後の最初の注文で - それはうまく動作します。 変数の1つがゼロ値に戻らないとか、そういうことかと思ったのですが、まだバグを見つけられずにいます。 クリスストッフ 申し訳ありませんが、部分的なコードでは、これ以上お役に立てません。 あなたが言っていることは、コードをデバッグする必要があることを意味します - そしてそれは、ある種の制御 点を使用しながらそれを実行することによってのみ行うことができます Chrisstoff 2013.10.02 19:11 #1563 mladen: クリスストッフ申し訳ありませんが、部分的なコードで、私はより多くの助けをすることはできません。 あなたが言っていることは、コードをデバッグする必要があるということで、それはある種の制御点を使用しながら実行することによってのみ可能です。 Mladenさん、ありがとうございます。 コードに問題がなかったということで、心強いです。 コードの関連する部分はすべて投稿されたと思うので、他の場所でバグを見つける必要があります。 Hock 2013.10.02 21:57 #1564 mladen: ホック87その問題の解決策については、あなたの投稿の上の投稿をお読みください。 そのための完全なコードは次のとおりです。 int TotalOrders = 0; for (int i=0; i <= OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol() == Symbol()) TotalOrders++; } if (TotalOrders<1) { ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0); stop=(Ask-stopsize*Point); prof=(Ask+profsize*Point); OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue); } モルデンです。 もし私が 口座残高の パーセンテージでロットサイズをオープンしたい場合、どのようにコード化するのでしょうか? 例 私の口座残高が500ドルです。 私は5%のロットサイズを開きたい、そしてそれは自動カウントと$ 0.25ロット、TP=10 SL=20を開く。 どのようにそれをコード化するには? ありがとうございます。 Mladen Rakic 2013.10.03 04:43 #1565 hock87: Maldenです。口座残高の何%かのロットサイズをオープンしたい場合、どのようにコード化すればよいですか? 例 私の口座残高は500ドルです。 私は5%のロットサイズを開きたい、それは自動カウントと$ 0.25ロット、TP = 10 SL = 20を開く。 どのようにそれをコード化するのですか? ありがとうございます。 あなたはそれのためにこのような関数を 使用することができます。 double getLots(double stopLoss, double risk) { RefreshRates(); double pPoint = MarketInfo(Symbol(),MODE_POINT); double step = MarketInfo(Symbol(),MODE_LOTSTEP); double minLot = MarketInfo(Symbol()l,MODE_MINLOT); double maxLot = MarketInfo(Symbol(),MODE_MAXLOT); double lots = minLot; if (risk>0 && stopLoss>0) { lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint); } } return(MathMax(MathMin(lots,maxLot),minLot)); } PS: stopLoss は関数に pips/points で渡さなければなりません (整数値ではありません)。 Coding help コーディングのヘルプが必要 Need help with coding Hock 2013.10.03 08:54 #1566 mladen: このような関数を使用することができます。double getLots(double stopLoss, double risk) { RefreshRates(); double pPoint = MarketInfo(Symbol(),MODE_POINT); double step = MarketInfo(Symbol(),MODE_LOTSTEP); double minLot = MarketInfo(Symbol()l,MODE_MINLOT); double maxLot = MarketInfo(Symbol(),MODE_MAXLOT); double lots = minLot; if (risk>0 && stopLoss>0) { lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint); } } return(MathMax(MathMin(lots,maxLot),minLot)); } 追記:stopLossはすでにpips/pointsで関数に渡されている必要があります(整数値ではありません) ありがとう、Mladen。 でも、買い注文のコードを複合化するのに失敗しました。 多くのエラーと警告が表示されます。 どのようにそれを複合化するのですか? ありがとうございます。 extern double lots = 0.1;extern double stopsize = 20; extern double profsize = 10; int err; int ticket; double stop; double prof; int start() { int TotalOrders = 0; for (int i=0; i <= OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol() == Symbol()) TotalOrders++; } if (TotalOrders<1) { ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen); stop=(Ask-stopsize*Point); prof=(Ask+profsize*Point); OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue); } err=GetLastError(); // Comment("This is a test ", err, " ", stop, " ", prof); Comment(" "); } Coding help [アーカイブ!】どんなエキスパートやインジケーターでも無料で書きます。 コーディングの方法は? Mladen Rakic 2013.10.03 09:04 #1567 hock87: ありがとうございます、Mladen。しかし、私は買い注文のコードにコードを合成するために失敗しました。 多くのエラーと警告が表示されます。 どのようにそれを配合する? ありがとうございます。 extern double lots = 0.1;extern double stopsize = 20; extern double profsize = 10; int err; int ticket; double stop; double prof; int start() { int TotalOrders = 0; for (int i=0; i <= OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol() == Symbol()) TotalOrders++; } if (TotalOrders<1) { ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen); stop=(Ask-stopsize*Point); prof=(Ask+profsize*Point); OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue); } err=GetLastError(); // Comment("This is a test ", err, " ", stop, " ", prof); Comment(" "); } このように試してみてください(私は今それをテストし、それが動作します)。 extern double lots = 0.1;extern double stopsize = 20; extern double profsize = 10; int err; int ticket; double stop; double prof; int init() { return(0); } int deinit() { return(0); } int start() { int TotalOrders = 0; for (int i=0; i <= OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol() == Symbol()) TotalOrders++; } if (TotalOrders<1) { ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen); stop=(Ask-stopsize*Point*MathPow(10,Digits%2)); prof=(Ask+profsize*Point*MathPow(10,Digits%2)); OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue); } err=GetLastError(); // Comment("This is a test ", err, " ", stop, " ", prof); Comment(" "); } ファイル: _test_1.mq4 1 kb test_1.gif 78 kb Coding help [アーカイブ!】どんなエキスパートやインジケーターでも無料で書きます。 初心者の方からの質問 MQL4 MT4 MetaTrader kingsleyedeh4re 2013.10.03 09:38 #1568 親愛なるMLADENとMr.tools pls, 3つまたは4つの指標のシグナルがあらかじめ定義された条件を満たすような、特定の条件に基づいてシグナルを与えるEAを作成することは可能ですか? 例 買いシグナルを出すEAを作りたい。 ema 8 cross ema 21 0以上のqqe 非遅延MAは緑である キャンドルが雲の上に ある。 EAは取引を開始せず、指定された条件が満たされたときにシグナルを出すだけで良い。 Hock 2013.10.03 09:49 #1569 ムラデンさん、ありがとうございます。 私はそれを試してみました。 しかし、それはまだ$ 0.1でロットを開きます。 私はたい私の口座残高 の割合でロットサイズを開く。 例:口座残高が500ドルある。 5%のロットサイズを開くと、0.25ドルのロット、TP=10 SL=20をオートカウントして開く。 LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100) LotSizeSlot1 = $500*(5%/100) LotSizeSlot1 = $ 0.25 それからそれは自動で$0.25ロットとTP=10 SL=20を開く。 どのようにそれを作成するには? ありがとうございます。 Mladen Rakic 2013.10.03 09:56 #1570 hock87: ありがとうございます、Mladen。私はそれを試してみました。 しかし、それはまだ$ 0.1でロットを開きます。 私は私の口座残高の割合でロットサイズを開きたい。 例:口座残高が500ドルある。 5%のロットサイズを開くと、自動的に0.25ドルのロット、TP=10 SL=20がカウントされ、開かれます。 LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100) LotSizeSlot1 = $500*(5%/100) LotSizeSlot1 = $ 0.25 それからそれは自動で$0.25ロットとTP=10 SL=20を開く。 どのようにそれを作成するには? ありがとうございます。 添付されたもののように ファイル: _test_2.mq4 2 kb 1...150151152153154155156157158159160161162163164...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
クリストフ
そうすれば、Decimals変数もOKになるはずです
いずれにせよ、注文(部分)決済に失敗した場合、どのようなエラーコードが表示されるのか確認してください。Mladenです。
ヒントをありがとうございます。
問題は、エラーメッセージがないことです。うまくいかないときは、まるでPartialTP関数が 呼ばれていないかのように見えます。他の時-通常、EA再起動後の最初の注文で-はうまくいきます。
変数の1つがゼロ値に戻らないとか、そのようなことを考えたのですが、まだバグを見つけることができません。
ムラデン
ヒントをありがとうございました。
問題は、エラーメッセージがないことです。うまくいかないときは、まるでPartialTP関数が呼び出されていないかのように見えます。他の時 - 通常、EA再起動後の最初の注文で - それはうまく動作します。
変数の1つがゼロ値に戻らないとか、そういうことかと思ったのですが、まだバグを見つけられずにいます。クリスストッフ
申し訳ありませんが、部分的なコードでは、これ以上お役に立てません。
あなたが言っていることは、コードをデバッグする必要があることを意味します - そしてそれは、ある種の制御 点を使用しながらそれを実行することによってのみ行うことができます
クリスストッフ
申し訳ありませんが、部分的なコードで、私はより多くの助けをすることはできません。
あなたが言っていることは、コードをデバッグする必要があるということで、それはある種の制御点を使用しながら実行することによってのみ可能です。Mladenさん、ありがとうございます。
コードに問題がなかったということで、心強いです。
コードの関連する部分はすべて投稿されたと思うので、他の場所でバグを見つける必要があります。
ホック87
その問題の解決策については、あなたの投稿の上の投稿をお読みください。
そのための完全なコードは次のとおりです。
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
モルデンです。
もし私が 口座残高の パーセンテージでロットサイズをオープンしたい場合、どのようにコード化するのでしょうか?
例
私の口座残高が500ドルです。
私は5%のロットサイズを開きたい、そしてそれは自動カウントと$ 0.25ロット、TP=10 SL=20を開く。
どのようにそれをコード化するには?
ありがとうございます。
Maldenです。
口座残高の何%かのロットサイズをオープンしたい場合、どのようにコード化すればよいですか?
例
私の口座残高は500ドルです。
私は5%のロットサイズを開きたい、それは自動カウントと$ 0.25ロット、TP = 10 SL = 20を開く。
どのようにそれをコード化するのですか?
ありがとうございます。あなたはそれのためにこのような関数を 使用することができます。
{
RefreshRates();
double pPoint = MarketInfo(Symbol(),MODE_POINT);
double step = MarketInfo(Symbol(),MODE_LOTSTEP);
double minLot = MarketInfo(Symbol()l,MODE_MINLOT);
double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);
double lots = minLot;
if (risk>0 && stopLoss>0)
{
lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint);
}
}
return(MathMax(MathMin(lots,maxLot),minLot));
}
PS: stopLoss は関数に pips/points で渡さなければなりません (整数値ではありません)。
このような関数を使用することができます。
{
RefreshRates();
double pPoint = MarketInfo(Symbol(),MODE_POINT);
double step = MarketInfo(Symbol(),MODE_LOTSTEP);
double minLot = MarketInfo(Symbol()l,MODE_MINLOT);
double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);
double lots = minLot;
if (risk>0 && stopLoss>0)
{
lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint);
}
}
return(MathMax(MathMin(lots,maxLot),minLot));
}
ありがとう、Mladen。
でも、買い注文のコードを複合化するのに失敗しました。
多くのエラーと警告が表示されます。
どのようにそれを複合化するのですか?
ありがとうございます。
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}ありがとうございます、Mladen。
しかし、私は買い注文のコードにコードを合成するために失敗しました。
多くのエラーと警告が表示されます。
どのようにそれを配合する?
ありがとうございます。
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}このように試してみてください(私は今それをテストし、それが動作します)。
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int init() { return(0); }
int deinit() { return(0); }
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point*MathPow(10,Digits%2));
prof=(Ask+profsize*Point*MathPow(10,Digits%2));
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}親愛なるMLADENとMr.tools pls,
3つまたは4つの指標のシグナルがあらかじめ定義された条件を満たすような、特定の条件に基づいてシグナルを与えるEAを作成することは可能ですか?
例
買いシグナルを出すEAを作りたい。
ema 8 cross ema 21
0以上のqqe
非遅延MAは緑である
キャンドルが雲の上に ある。
EAは取引を開始せず、指定された条件が満たされたときにシグナルを出すだけで良い。
ムラデンさん、ありがとうございます。
私はそれを試してみました。
しかし、それはまだ$ 0.1でロットを開きます。
私はたい私の口座残高 の割合でロットサイズを開く。
例:口座残高が500ドルある。
5%のロットサイズを開くと、0.25ドルのロット、TP=10 SL=20をオートカウントして開く。
LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100)
LotSizeSlot1 = $500*(5%/100)
LotSizeSlot1 = $ 0.25
それからそれは自動で$0.25ロットとTP=10 SL=20を開く。
どのようにそれを作成するには?
ありがとうございます。
ありがとうございます、Mladen。
私はそれを試してみました。
しかし、それはまだ$ 0.1でロットを開きます。
私は私の口座残高の割合でロットサイズを開きたい。
例:口座残高が500ドルある。
5%のロットサイズを開くと、自動的に0.25ドルのロット、TP=10 SL=20がカウントされ、開かれます。
LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100)
LotSizeSlot1 = $500*(5%/100)
LotSizeSlot1 = $ 0.25
それからそれは自動で$0.25ロットとTP=10 SL=20を開く。
どのようにそれを作成するには?
ありがとうございます。添付されたもののように