基本的な質問 ... - ページ 8 1234567891011 新しいコメント Sergey Golubev 2008.10.08 14:58 #71 このスレッドを見てください: https://www.mql5.com/en/forum/178677 削除済み 2008.10.08 17:44 #72 newdigital: このスレッドを見てください:https://www.mql5.com/en/forum/178677 本当にありがとう、ファイルを開く命令とダウンロードリンクのために Marcel Corzo 2008.10.21 02:31 #73 10ポイント3 プログラマーさん、お願いします。 10points3のEAで、3つ目の取引が始まると、最初の取引が終了する必要があります。 実際、我々は持っています。 if (PreviousOpenOrders>OpenOrders) { for(cnt=OrdersTotal();cnt>=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); mode=OrderType()。 if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic) { if (mode==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(),slippage,Blue); }. if (mode==OP_SELL) { 注文取消(OrderTicket(),OrderLots(),OrderClosePri ce(),slippage,Red); }. return(0); } こうしようかと考えていました。 1. 2番目の取引が始まったら、1番目の取引のマジックナンバーを変更する、例えば magicnumber+1 2. 3番目の取引が始まったら、最初の取引を閉じて、magicnumber+1 を代入する。 私は正しいですか? それとも他の方法で、最初に開いた取引を後でクローズするように特定できますか? 私はプログラマーではなく、ただ勉強しているだけなので、もしあなたが私を指導したり、変更を加えることができれば、より良いことです。 この変更は、聖杯の 開始になります!!!! アスク! 10ポイント 3.mq4 コーディングの方法は? Marcel Corzo 2008.10.21 02:32 #74 10ポイント3 すみません、EAの方です。 ANDはこのスレッドにあります。 https://www.mql5.com/en/forum/174975 ありがとうございました。 ファイル: 10p3v0.03_1.mq4 12 kb begu 2008.11.07 23:36 #75 プログラミングヘルプ - return 演算子 こんにちは。 私はmt4プログラミングの初心者ですが、void関数から メインプログラム "start() "に変数をコミットするための解決策を見つけようとすることがよくあります。 質問は、変数 "CountOpenSell", "CountOpenBuy", "ProfitSell " と "ProfitBuy" からメインプログラムの start() に値をコミットするにはどうしたらいいか、ということです。 私は私の提案(太字のリターン)を追加しましたが、私はそれが正しいかどうか、どのように "start() "メインプログラムのための正しいコードであることを知っていますか? 私の悪い英語とヘルプのすべてのために申し訳ありません。 どうもありがとうございました。 よろしくお願いします。 FX2006 void CallBuySellProfit() { ProfitBuy=0; ProfitSell=0; CountOpenSell=0; CountOpenBuy=0。 for (i=OrdersTotal()-1;i>=0;i--) {if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if (OrderType()==OP_SELL) {ProfitSell = ProfitSell + OrderProfit();CountOpenSell++;}; }. if (OrderType()==OP_BUY)の場合 利益買い = 利益買い + 注文利益();CountOpenBuy++;} {利益買い = 利益買い + 注文利益();CountOpenBuy++;}。 else Print("Error when order select ", GetLastError()); } return(CountOpenSell)。 return(CountOpenBuy)。 return(ProfitSell); return(ProfitBuy); } Basic questions ... 無料でアドバイザーをお書きします EAが複数のペアで実行されない、助けが必要 bobfourie 2008.11.08 07:36 #76 forex2006プログラミングヘルプ - return演算子 こんにちは、forex2006です。 もし本当にMLを学びたいのであれば、codersguruのチュートリアルを試してみることをお勧めします。ご質問の件ですが、void関数は 値を返すことができません。void関数から値を取得する場合は、グローバル変数を使用する必要があります。void関数から値を取り出すには、グローバル変数を使用する必要があります。 以下に簡単な例を示します。グローバル変数を関数で使うと、後々大変なことになる可能性があるので、なるべく使わないようにしましょう。 参考になれば幸いです。 int start() { double ProfitBuy = CallBuySellProfit(OP_BUY,false); double ProfitSell = CallBuySellProfit(OP_SELL,false); int CountOpenBuy = CallBuySellProfit(OP_BUY,true)。 int CountOpenSell = CallBuySellProfit(OP_SELL,true); int CountOpenSell = CallBuySellProfit(OP_SELL,true); Comment( "ProfitBuy:コメント( "ProfitBuy: "+DoubleToStr(ProfitBuy,2) +"\n "+") 利益確定:"+DoubleToStr(ProfitSell,2)+"ⅹn "+". "CountOpenBuy "です。「買い建玉数: "+DoubleToStr(買い建玉数,2)+"ⅹn "売り建て回数:"+DoubleToStr(売り建て回数,2)+"ⅹn "+". ""); を返します。 } ダブル CallBuySellProfit(int iOrderType, bool bCount) { double dProfit = 0; int iCount = 0; for (int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(オーダータイプ()==iOrderType)) { dProfit = dProfit + OrderProfit(); iCount++; } } さもなければ { Print("Error when order select ", GetLastError()); } }//end for if(bCount)return(iCount)。 else return(dProfit); }//end CallBuySellProfit Basic questions ... please help to resolve MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 matrixebiz 2008.11.11 11:16 #77 同じバーでEAを停止させる こんにちは、EAがそのバーですでに取引が行われたかどうかをチェック し、新しいバーまでそれ以上取引を行わないようにコードを配置する方法は? ありがとうございます。 Zen Leow 2008.11.11 14:43 #78 matrixebizさん、ローソク足が閉じる前に同じローソク足で取引開始・終了する可能性は考えましたか? 履歴リストも確認した方がいいと思います。 私はいつもこの小さな関数を 自分のEA全てに移植しています。 bool DecideToOpenTrade() { int total = OrdersTotal(); if (total > 0) { for(int cnt=0;cnt<total;cnt++) { if(OrderSelect(cnt,SELECT_BY_POS)) { if(OrderSymbol()==Symbol() && OrderMagicNumber() == EA_MAGIC_NUM) { return (false); } } } } // in case trades has already opened and closed within the candle int histotal = OrdersHistoryTotal(); if (histotal > 0) { for(cnt=0;cnt<histotal;cnt++) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY)) { if(OrderSymbol()==Symbol() && OrderMagicNumber() == EA_MAGIC_NUM) { if (Time[0] <= OrderOpenTime()) // don't open a new position if we're still on the same candle { return (false); } } } } } return (true); } int start() { // some time check codes first.. blah blah // ... // ... // ... // check signals if (Should_Buy()) { if (DecideToOpenTrade()) { //... trade opening codes here } } if (Should_Sell()) { if (DecideToOpenTrade()) { //... trade opening codes here } } } 注:この関数は、EA_MAGIC_NUMにユニークな値を設定したことを前提としています。そうすれば、他のEAが開いた取引はチェックされない。 Should_Buy()とShould_Sell()は、売買シグナルが発生したかどうかを判断するために私がすべてのEAで作成している関数です。 これがお役に立てれば幸いです。さらに説明が必要であれば、私にPMしてください。 よろしくお願いします。 禅 Basic questions ... How to code? コーディングのヘルプ matrixebiz 2008.11.11 18:17 #79 を更新しました。 matrixebiz 2008.11.11 18:18 #80 これなら大丈夫そうです ありがとうございました。 void DesideToOpen() //----------------------------------------------------------------+ //----------------------------------------------------------------+ { int total = OrdersTotal(); if (total > 0) { for(int cnt=0;cnt<total;cnt++) { if(OrderSelect(cnt,SELECT_BY_POS)) { if(OrderComment() == EA_Name + MagicNumber) DecideToOpenTrade = false; } } } // in case trades has already opened and closed within the candle int histotal = OrdersHistoryTotal(); if (histotal > 0) { for(cnt=0;cnt<histotal;cnt++) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY)) { if(OrderComment() == EA_Name + MagicNumber) { if (Time[0] <= OrderOpenTime()) DecideToOpenTrade = false; // don't open a new position if we're still on the same candle } } } } } Basic questions ... Multiple trades [WARNING CLOSED!] Any newbie 1234567891011 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
このスレッドを見てください: https://www.mql5.com/en/forum/178677
このスレッドを見てください:https://www.mql5.com/en/forum/178677
本当にありがとう、ファイルを開く命令とダウンロードリンクのために
10ポイント3
プログラマーさん、お願いします。
10points3のEAで、3つ目の取引が始まると、最初の取引が終了する必要があります。
実際、我々は持っています。
if (PreviousOpenOrders>OpenOrders)
{
for(cnt=OrdersTotal();cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
mode=OrderType()。
if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
{
if (mode==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(),slippage,Blue); }.
if (mode==OP_SELL) { 注文取消(OrderTicket(),OrderLots(),OrderClosePri ce(),slippage,Red); }.
return(0);
}
こうしようかと考えていました。
1. 2番目の取引が始まったら、1番目の取引のマジックナンバーを変更する、例えば magicnumber+1
2. 3番目の取引が始まったら、最初の取引を閉じて、magicnumber+1 を代入する。
私は正しいですか?
それとも他の方法で、最初に開いた取引を後でクローズするように特定できますか?
私はプログラマーではなく、ただ勉強しているだけなので、もしあなたが私を指導したり、変更を加えることができれば、より良いことです。
この変更は、聖杯の 開始になります!!!!
10ポイント3
すみません、EAの方です。
ANDはこのスレッドにあります。
https://www.mql5.com/en/forum/174975
ありがとうございました。
プログラミングヘルプ - return 演算子
こんにちは。
私はmt4プログラミングの初心者ですが、void関数から メインプログラム "start() "に変数をコミットするための解決策を見つけようとすることがよくあります。
質問は、変数 "CountOpenSell", "CountOpenBuy", "ProfitSell " と "ProfitBuy" からメインプログラムの start() に値をコミットするにはどうしたらいいか、ということです。
私は私の提案(太字のリターン)を追加しましたが、私はそれが正しいかどうか、どのように "start() "メインプログラムのための正しいコードであることを知っていますか?
私の悪い英語とヘルプのすべてのために申し訳ありません。
どうもありがとうございました。
よろしくお願いします。
FX2006
void CallBuySellProfit()
{ ProfitBuy=0;
ProfitSell=0;
CountOpenSell=0;
CountOpenBuy=0。
for (i=OrdersTotal()-1;i>=0;i--)
{if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderType()==OP_SELL) {ProfitSell = ProfitSell + OrderProfit();CountOpenSell++;}; }.
if (OrderType()==OP_BUY)の場合 利益買い = 利益買い + 注文利益();CountOpenBuy++;} {利益買い = 利益買い + 注文利益();CountOpenBuy++;}。
else Print("Error when order select ", GetLastError());
}
return(CountOpenSell)。
return(CountOpenBuy)。
return(ProfitSell);
return(ProfitBuy);
}
forex2006プログラミングヘルプ - return演算子
こんにちは、forex2006です。
もし本当にMLを学びたいのであれば、codersguruのチュートリアルを試してみることをお勧めします。ご質問の件ですが、void関数は 値を返すことができません。void関数から値を取得する場合は、グローバル変数を使用する必要があります。void関数から値を取り出すには、グローバル変数を使用する必要があります。 以下に簡単な例を示します。グローバル変数を関数で使うと、後々大変なことになる可能性があるので、なるべく使わないようにしましょう。
参考になれば幸いです。
int start()
{
double ProfitBuy = CallBuySellProfit(OP_BUY,false);
double ProfitSell = CallBuySellProfit(OP_SELL,false);
int CountOpenBuy = CallBuySellProfit(OP_BUY,true)。
int CountOpenSell = CallBuySellProfit(OP_SELL,true); int CountOpenSell = CallBuySellProfit(OP_SELL,true);
Comment( "ProfitBuy:コメント( "ProfitBuy: "+DoubleToStr(ProfitBuy,2) +"\n "+")
利益確定:"+DoubleToStr(ProfitSell,2)+"ⅹn "+".
"CountOpenBuy "です。「買い建玉数: "+DoubleToStr(買い建玉数,2)+"ⅹn
"売り建て回数:"+DoubleToStr(売り建て回数,2)+"ⅹn "+".
"");
を返します。
}
ダブル CallBuySellProfit(int iOrderType, bool bCount)
{
double dProfit = 0;
int iCount = 0;
for (int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(オーダータイプ()==iOrderType))
{
dProfit = dProfit + OrderProfit();
iCount++;
}
}
さもなければ
{
Print("Error when order select ", GetLastError());
}
}//end for
if(bCount)return(iCount)。
else return(dProfit);
}//end CallBuySellProfit
同じバーでEAを停止させる
こんにちは、EAがそのバーですでに取引が行われたかどうかをチェック し、新しいバーまでそれ以上取引を行わないようにコードを配置する方法は?
ありがとうございます。
matrixebizさん、ローソク足が閉じる前に同じローソク足で取引開始・終了する可能性は考えましたか? 履歴リストも確認した方がいいと思います。
私はいつもこの小さな関数を 自分のEA全てに移植しています。
bool DecideToOpenTrade()
{
int total = OrdersTotal();
if (total > 0)
{
for(int cnt=0;cnt<total;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber() == EA_MAGIC_NUM)
{
return (false);
}
}
}
}
// in case trades has already opened and closed within the candle
int histotal = OrdersHistoryTotal();
if (histotal > 0)
{
for(cnt=0;cnt<histotal;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber() == EA_MAGIC_NUM)
{
if (Time[0] <= OrderOpenTime()) // don't open a new position if we're still on the same candle
{
return (false);
}
}
}
}
}
return (true);
}
int start()
{
// some time check codes first.. blah blah
// ...
// ...
// ...
// check signals
if (Should_Buy())
{
if (DecideToOpenTrade())
{
//... trade opening codes here
}
}
if (Should_Sell())
{
if (DecideToOpenTrade())
{
//... trade opening codes here
}
}
}
注:この関数は、EA_MAGIC_NUMにユニークな値を設定したことを前提としています。そうすれば、他のEAが開いた取引はチェックされない。
Should_Buy()とShould_Sell()は、売買シグナルが発生したかどうかを判断するために私がすべてのEAで作成している関数です。
これがお役に立てれば幸いです。さらに説明が必要であれば、私にPMしてください。
よろしくお願いします。
禅
を更新しました。
これなら大丈夫そうです
ありがとうございました。
void DesideToOpen()
//----------------------------------------------------------------+
//----------------------------------------------------------------+
{
int total = OrdersTotal();
if (total > 0)
{
for(int cnt=0;cnt<total;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS))
{
if(OrderComment() == EA_Name + MagicNumber) DecideToOpenTrade = false;
}
}
}
// in case trades has already opened and closed within the candle
int histotal = OrdersHistoryTotal();
if (histotal > 0)
{
for(cnt=0;cnt<histotal;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderComment() == EA_Name + MagicNumber)
{
if (Time[0] <= OrderOpenTime()) DecideToOpenTrade = false; // don't open a new position if we're still on the same candle
}
}
}
}
}