[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 249

 
artmedia70:
聞かずにテスターで確認...。:)
コンパイル後、Expert Advisor は変更前と同じように動作します。つまり、1本の線を引くのです。
 
globad:
専門家が一本の線を引く
もしコードが「線が 引かれていなければ 1を引き、線が引かれていなければ線2を引く」と書いてあれば、それらは引かれないはずはありません:)。
 
eddy:artmedia70 です。
コードに「線が引かれていなければ線1を引き、線が引かれていなければ線2を引く」と書いてあれば、引かないわけにはいきません:)
みんな、わかったよ!効果あり!
 

テストレポートのパーセンテージがすべて0になっている理由を教えてください。I.e. 相対的なドローダウン、最大ドローダウンなど?

 
artmedia70:

例えば、こんな風に。

このように呼びかけます。

分単位を時間単位に変えてほしい・・・。:)





言われたとおりに書いてみたのですが、動作は...やはり前のポジションの クローズでポジションを開いてしまいます...((

私が言いたいのは、前のポジションがクローズしてから1時間以内にオープンして欲しいということなのです。

 if (SecondsAfterOpenLastPos(NULL, OP_SELL, MAGIC)>=(Period()*Interval)*60) {
        OpenSell();  
           } 
 
前回の取引終了後、一定時間経過した場合に取引を開始するようにしたいのですが・・・・・・。
 
Vovo4ka:
前回の取引終了後、一定時間が経過した場合に取引を開始したいのですが...ヘルプ


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() と記述しています。

 
ILL:


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 -ポジションがクローズ されるまでの秒数です。
 
ILL:

テストレポートのパーセンテージがすべて0になっている理由を教えてください。I.e.相対的ドローダウン、最大ドローダウンなど?


すべて解決 - 保証金が大きすぎた)
 
Vovo4ka:


言われたとおりに書いてみたら、うまくいきました...やはり前のポジションの終値でポジションを開いてしまいますね...(

意味がわからないかもしれませんが、前の取引が終了してから1時間以内に取引を開始する必要があります。あなたの場合、繰り返し取引を開始する可能性を排除していますが、それが終了するとすぐに次の取引が開始されます。

そして、ファンクションコードを考える?4つの違いを見つけよう :) :

//+----------------------------------------------------------------------------+
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);
}
//+----------------------------------------------------------------------------+