クローズドオーダーの利益計算 "HELP" - ページ 4 123456789 新しいコメント 削除済み 2016.12.11 16:53 #31 Renat Akhtyamov:いいえ、この行は削除されます。これは利益計算です、そううまくはいきません。 closeコマンドはコードのどこにあるのでしょうか?//+----------------------------------------------------------------------------+// Возвращает суммарный профит в валюте депозита серии закрытых ордеров |//+----------------------------------------------------------------------------+double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция) double LastProfit=0; for(i=OrdersHistoryTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) { if (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue; if (op<0 || OrderType()==op){if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();} } return(LastProfit); }とクロージング条件において{CloseOrder(OrderTicket());t=TimeCurrent();} {DeleteAll();t=TimeCurrent();}1はカウントしない、2は正しくカウントする、3は0をカウントしない。 コーディングの方法は? Profit calculation of closed MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 Renat Akhtyamov 2016.12.11 16:59 #32 Natashe4ka://+----------------------------------------------------------------------------+// Возвращает суммарный профит в валюте депозита серии закрытых ордеров |//+----------------------------------------------------------------------------+double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция) double LastProfit=0; for(i=OrdersHistoryTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) { if (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue; if (op<0 || OrderType()==op){if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();} } return(LastProfit); }とクロージング条件において{CloseOrder(OrderTicket());t=TimeCurrent();} {DeleteAll();t=TimeCurrent();}1は数えない、2は正しく数える、3は数えない 0ということで、終了です。{t=TimeCurrent();CloseOrder(OrderTicket());} {DeleteAll();}そしてもうひとつ。チケットにしたがって、注文は終了しているのでしょうか?そのため、シリーズを早めに終了させるためには、開始時刻を覚えておく必要がありますつまり、シリーズを閉じるという決定がなされたばかりの場合、実際に閉じるかどうかは問題ではないのです Vitaly Muzichenko 2016.12.11 17:02 #33 Natashe4ka: //+----------------------------------------------------------------------------+あなたの主張は理解できますが、私は、テスターでは動作しない、実際の取引のための一連のポジションを閉じるという優れた機能を持つ、動作するバージョンをお渡ししました。端末を再起動しても、すべてカウントして記憶しています。以下、テスターで実行し、取引履歴 と結果を比較するだけです。PS.コードを書き込むのを忘れていたため、以下のように修正しました。 ファイル: e-info.mq4 10 kb 削除済み 2016.12.11 17:13 #34 Vitaly Muzichenko:あなたの主張は理解できますが、私は、テスターでは動作しない、実際の取引のための一連のポジションを閉じるという優れた機能を持つ、動作するバージョンをお渡ししました。端末を再起動しても、すべてカウントして記憶しています。以下、テスターで実行し、取引履歴 と結果を比較するだけです。これを自分のコードに適用するにはどうしたらよいでしょうか?LastProfitCLの 値によって、私の次の行動が 決まります。 削除済み 2016.12.11 17:15 #35 Renat Akhtyamov:然もなくば{t=TimeCurrent();CloseOrder(OrderTicket());} {DeleteAll();}もうひとつ。チケットで注文を締め切っていませんか?だから、シリーズが終了する時間をもっと早く覚えておく必要があるのですつまり、シリーズを閉じるという決定がなされたばかりの場合、実際に閉じるかどうかは問題ではないのです 注文がストップで閉じられた場合、{t=TimeCurrent();CloseOrder(OrderTicket();}{DeleteAll();}はすでに利益の値を逃して います。 Vitaly Muzichenko 2016.12.11 17:17 #36 Natashe4ka:これを自分のコードに適用するにはどうしたらいいのでしょうか?次のアクションを決定 するLastProfitCL 値を持っています。だから明確で、自分の思うように適用すればいい。 double LastProfit = LastProfitCL(-1, (datetime)GlobalVariableGet(GetGlobalVariableName("LastProfit"))); Comment(" Последний: ",DoubleToString(LastProfit,1) ," Профит: ", DoubleToString(Profit,1) );LastProfit"を一度宣言し、必要な場所で使用する。 Renat Akhtyamov 2016.12.11 17:17 #37 Natashe4ka: 注文がストップで閉じられた場合、{t=TimeCurrent();CloseOrder(OrderTicket();}{DeleteAll();}はすでに利益の値を逃す ことになります。はい、そうなります。ライブオーダーがどれだけ残っているか、ティックごとに 確認することができます。もし同じなら、前の刻みの時間を覚えておくとよいでしょう。そうすれば、必要なものが手に入るはずです。しかし、オートマトンでは通常、停止は起こりません。 Vitaly Muzichenko 2016.12.11 17:18 #38 Natashe4ka: ストップ高で引けた場合、{t=TimeCurrent();CloseOrder(OrderTicket();}{DeleteAll();}はすでに利益値を逃す ことになります。時間的に最後に閉じたものだけをカウントし、決算額には依存しない。一般に、タスクが完全に明確ではないので、これ以上の議論はない。//---------------------------------------------------------ここに書き出したら、もう問題がわからなくなった。 ファイル: e_info.mq4 10 kb 削除済み 2016.12.11 17:38 #39 Vitaly Muzichenko:ここにきて、その作業がわからなくなりました。 OK、ありがとうございます。 削除済み 2016.12.11 18:31 #40 これは「cnt」がゼロに設定されている場合も正しいのですが、その場合はスクリーンショット3のようにまた訳の分からない値になってしまいます(利益の値は4.27であるべきです)。double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция) int cnt=0; double LastProfit=0; for(i=0;i<OrdersHistoryTotal();i++) if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) { if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue; if ((op<0 || OrderType()==op) && cnt==0) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); cnt++;} else {cnt=0;} } return(LastProfit); } Profit calculation of closed コーディングの方法は? 10ポイント 3.mq4 123456789 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
いいえ、この行は削除されます。これは利益計算です、そううまくはいきません。
closeコマンドはコードのどこにあるのでしょうか?
// Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(i=OrdersHistoryTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue;
if (op<0 || OrderType()==op){if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
}
return(LastProfit);
}
とクロージング条件において
{CloseOrder(OrderTicket());t=TimeCurrent();}
{DeleteAll();t=TimeCurrent();}1はカウントしない、2は正しくカウントする、3は0をカウントしない。
// Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(i=OrdersHistoryTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue;
if (op<0 || OrderType()==op){if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
}
return(LastProfit);
}
とクロージング条件において
{CloseOrder(OrderTicket());t=TimeCurrent();}
{DeleteAll();t=TimeCurrent();}1は数えない、2は正しく数える、3は数えない 0
ということで、終了です。
{DeleteAll();}
そしてもうひとつ。
チケットにしたがって、注文は終了しているのでしょうか?
そのため、シリーズを早めに終了させるためには、開始時刻を覚えておく必要があります
つまり、シリーズを閉じるという決定がなされたばかりの場合、実際に閉じるかどうかは問題ではないのです
あなたの主張は理解できますが、私は、テスターでは動作しない、実際の取引のための一連のポジションを閉じるという優れた機能を持つ、動作するバージョンをお渡ししました。
端末を再起動しても、すべてカウントして記憶しています。
以下、テスターで実行し、取引履歴 と結果を比較するだけです。
PS.コードを書き込むのを忘れていたため、以下のように修正しました。
あなたの主張は理解できますが、私は、テスターでは動作しない、実際の取引のための一連のポジションを閉じるという優れた機能を持つ、動作するバージョンをお渡ししました。
端末を再起動しても、すべてカウントして記憶しています。
以下、テスターで実行し、取引履歴 と結果を比較するだけです。
これを自分のコードに適用するにはどうしたらよいでしょうか?
LastProfitCLの 値によって、私の次の行動が 決まります。
然もなくば
{DeleteAll();}
もうひとつ。
チケットで注文を締め切っていませんか?
だから、シリーズが終了する時間をもっと早く覚えておく必要があるのです
つまり、シリーズを閉じるという決定がなされたばかりの場合、実際に閉じるかどうかは問題ではないのです
これを自分のコードに適用するにはどうしたらいいのでしょうか?
次のアクションを決定 するLastProfitCL 値を持っています。
だから明確で、自分の思うように適用すればいい。
Comment(" Последний: ",DoubleToString(LastProfit,1) ," Профит: ", DoubleToString(Profit,1) );
LastProfit"を一度宣言し、必要な場所で使用する。
注文がストップで閉じられた場合、{t=TimeCurrent();CloseOrder(OrderTicket();}{DeleteAll();}はすでに利益の値を逃す ことになります。
はい、そうなります。
ライブオーダーがどれだけ残っているか、ティックごとに 確認することができます。
もし同じなら、前の刻みの時間を覚えておくとよいでしょう。
そうすれば、必要なものが手に入るはずです。
しかし、オートマトンでは通常、停止は起こりません。
ストップ高で引けた場合、{t=TimeCurrent();CloseOrder(OrderTicket();}{DeleteAll();}はすでに利益値を逃す ことになります。
時間的に最後に閉じたものだけをカウントし、決算額には依存しない。
一般に、タスクが完全に明確ではないので、これ以上の議論はない。
//---------------------------------------------------------
ここに書き出したら、もう問題がわからなくなった。
ここにきて、その作業がわからなくなりました。
これは「cnt」がゼロに設定されている場合も正しいのですが、その場合はスクリーンショット3のようにまた訳の分からない値になってしまいます(利益の値は4.27であるべきです)。
int cnt=0;
double LastProfit=0;
for(i=0;i<OrdersHistoryTotal();i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
if ((op<0 || OrderType()==op) && cnt==0) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); cnt++;} else {cnt=0;}
}
return(LastProfit);
}