//+----------------------------------------------------------------------------+datetime SecondsAfterCloseLastPos(string sy, int op, int mn)
{
datetime t;
int i, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()!=sy) continue;
if (OrderType()!=op) continue;
if (OrderMagicNumber()!=mn) continue;
if (t<OrderCloseTime()) t=OrderCloseTime();
}
}
return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+
聞かずにテスターで確認...。:)
専門家が一本の線を引く
コードに「線が引かれていなければ線1を引き、線が引かれていなければ線2を引く」と書いてあれば、引かないわけにはいきません:)
テストレポートのパーセンテージがすべて0になっている理由を教えてください。I.e. 相対的なドローダウン、最大ドローダウンなど?
例えば、こんな風に。
このように呼びかけます。
分単位を時間単位に変えてほしい・・・。:)言われたとおりに書いてみたのですが、動作は...やはり前のポジションの クローズでポジションを開いてしまいます...((
私が言いたいのは、前のポジションがクローズしてから1時間以内にオープンして欲しいということなのです。
前回の取引終了後、一定時間が経過した場合に取引を開始したいのですが...ヘルプ
for (int i=0; i<OrdersTotal(); i++){ if
(OrderSelect(i, SELECT_BY_POS)==true){ TC = TimeCurrent(); OM = OrderMagicNumber(); if (TC-OM>86400 && (OrderType()==OP_SELL)){ CLOSEORDER("Sell"); }.if (TC-OM>86400 && (OrderType()==OP_BUY)){ CLOSEORDER("Buy"); }. } }
OrderMagicNumber()で、注文を開くときに、Magic = TimeCurrent() と記述しています。
for (int i=0; i<OrdersTotal(); i++){ if (OrderSelect(i, SELECT_BY_POS)==true){ TC = TimeCurrent(); OM = OrderMagicNumber(); if (TC-OM>86400 && (OrderType()==OP_SELL)){ CLOSEORDER("Sell"); }.if (TC-OM>86400 && (OrderType()==OP_BUY)){ CLOSEORDER("Buy"); }. } }
OrderMagicNumber()で、注文を開くときに、Magic = TimeCurrent()と書いてあるのですが、これは何ですか?
忘れてました =)86400 -ポジションがクローズ されるまでの秒数です。
テストレポートのパーセンテージがすべて0になっている理由を教えてください。I.e.相対的ドローダウン、最大ドローダウンなど?
すべて解決 - 保証金が大きすぎた)
言われたとおりに書いてみたら、うまくいきました...やはり前のポジションの終値でポジションを開いてしまいますね...(
意味がわからないかもしれませんが、前の取引が終了してから1時間以内に取引を開始する必要があります。あなたの場合、繰り返し取引を開始する可能性を排除していますが、それが終了するとすぐに次の取引が開始されます。
そして、ファンクションコードを考える?4つの違いを見つけよう :) :