どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 752

 

バーやローソク足の終値で注文を決済する方法

int start()
  {
      if ((Time[0] == prevtime) && openbarspriceonly) {
      return(0);
      }
   
      if (! IsTradeAllowed()) {
      Comment("Trades disallow");
      return(0);
      }
   
      prevtime = Time[0];

    if (CountTrades() == 0)
    {
        open = iOpen(Symbol(), PERIOD_D1, 0);
        close = iClose(Symbol(), PERIOD_D1, 1);

     if (DayOfWeek()==1&& Ask >= open)
     { 
        ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, Slippage, 0, 0, NULL, Magic, 0, Blue);
        if (ticket>0)
        {
          Print("Ордер ошибка в Лонг: ", GetLastError());
        }
        else 
           Print("Ордер открыт успешно");
        if(OrderSelect( ticket, SELECT_BY_POS))
        {
          if(OrderClose(ticket, lots, close,Slippage,0))
          return(0);
        }
     }
     if (DayOfWeek()==5&& Bid <= open)
     {
        ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, Slippage, 0, 0, NULL, Magic, 0, Red);
        if (ticket>0)
        {
          Print("Ордер ошибка в Шорт ", GetLastError());
        }
        else 
           Print("Ордер открыт успешно");
        if(OrderSelect( ticket, SELECT_BY_POS))
        {
          if(OrderClose(ticket, lots, close,Slippage,0))
          return(0);
        }

     }
    }
    return(0);
  }
 
ikatsko:

ストラテジーテスターの コマンドMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) これは、例えば、商品がEURUSDでバランス通貨がRURの場合に起こります...。といった組み合わせで私の理解では、バランス通貨は、通貨ペアの2番目の通貨名と同じでなければ なりません。そうでない場合は、(ストラテジーテスターで)0値を返すので、目的の組み合わせでテストを行うことは不可能です。この問題を解決するにはどうすればいいのか。

ハイライトがおかしい!EURUSD、GBPUSDなどでユーロ建てで計算しています。オンにしたときだけ、最初のデータの前に0が出ることがあるので、TICKVALUEで 計算する前に、if != 0という条件を付けています。

テスターでは、MarketInfo()が 機能しない場合があるので、1ティックのおおよその 価格を知り、IsTesting() || IsOptimization() || IsVisualMode() という条件で設定しています。

"1ティックのおおよその 価格がわかる" ? 私の解決策は以下の通りです:1ティックのおおよその価格 = 10*CURRENCY (USDCurrencyBalance)です。すべてのパラメータに設定されています。もちろん、通貨ペア(USDBalance通貨)の為替レートが端末で自動的に取得できれば良いのですが。すなわち、残高の通貨(AccountInfoString(ACCOUNT_CURRENCY))、例えばRURを知り、文字名文字列、例えばUSDRURを形成します。端末にそのような記号があるかどうか確認してください。もしかしたら、USDRUR_cのようなシンボルがあるかもしれませんね?端末で利用可能な通貨ペアを取得します。

 
artmedia70:
Vistaと何の関係があるんだ?マウスが、マウスがもう死んでいるんです。すぐに陳腐化する;)
私はマウスなしのノートパソコンを使っていますが、以前の大きなパソコンではマウスで人差し指が痛くなりました。
 
ikatsko:

ストラテジーテスターの コマンドMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) これは、例えば、商品がEURUSDでバランス通貨がRURの場合に起こります......。といった組み合わせで私の理解では、バランス通貨は、通貨ペアの2番目の通貨名と同じでなければ なりません。そうでない場合は、(ストラテジーテスターで)0値を返すので、目的の組み合わせでテストを行うことは不可能です。この問題を解決するにはどうすればいいのか。

ハイライトがおかしい!EURUSD、GBPUSDなどでユーロ建てで計算しています。有効にした場合のみ、最初のデータを受信するまで0を出すことがあるので、TICKVALUEで 計算する前にif != 0という条件を付けています。

テスターでは、MarketInfo()が 機能しない場合があるので、1ティックのおおよその 価格を知り、IsTesting() || IsOptimization() || IsVisualMode() という条件で設定しています。

"1ティックのおおよその 価格がわかる" ? 私の解決策は以下の通りです:1ティックのおおよその価格 = 10*CURRENCY (USDCurrencyBalance)です。すべてのパラメータで設定する必要があります。もちろん、通貨ペア(USDBalance通貨)の為替レートが端末で自動的に取得できれば良いのですが。すなわち、残高の通貨(AccountInfoString(ACCOUNT_CURRENCY))、例えばRURを知り、文字名文字列、例えばUSDRURを形成します。端末にそのような記号があるかどうか確認してください。もしかしたら、USDRUR_cのようなシンボルがあるかもしれませんね?端末で利用可能な通貨ペアを取得します。

私にとっては、テスト中にティックの価格が変わることはありませんし、スプレッドや他の多くのものと同様、必要ありません。そのため、私はいつもどのシンボルのチャートにもMarketInfo(Symbol(),MODE_TICKVALUE) を表示し、どのチャートインジケータでもその値をEAのコードに入れてからテストしています。
 
borilunad:
昔、大きなパソコンを持っていて、マウスで人差し指が痛くなった!なんてことはなく、マウスなしのノートパソコンを使っています。

だから、タッチパッドが不具合なんですね。ボタンもついています。

それとも指が変わったのかな・・・。:)しかし、「ブツブツ」がOSの原因であるとは思えません

 
artmedia70:

だから、タッチパッドが不具合なんですね。ボタンもついています。

あるいは指がおかしくなったか...。:)しかし、「ガラケー」がOSの原因とは思えません

用語が苦手で、タッチパッド、ガラケー...。タッチパッドは車が倒れるときですが?でも、私は車を持っていないし、必要ないので、怖くはありません。美しい街を歩くのも楽しいし、いざというときは、道がよくて渋滞もない、とても便利な公共交通機関です:)
 
borilunad:
私は用語が苦手で、タッチパッド、「ガラガラ」・・・。タッチパッドは車が倒れた時ですが...!?でも、私は車を持っていないし、必要ないから平気です。美しい街を歩くのも楽しいし、いざというときは、道がよくて渋滞もない、とても便利な公共交通機関です:)

Googleから追放されたのですか?

タッチパッドtouchpad)、タッチパネルはポインティング入力装置 であり、本発明はオートメーションとコンピュータ工学に関するもので、記号などの情報をコンピュータに読み込んで入力したり、タッチパネルの表面にある磁性材料でできた要素や部品の位置の座標に関する情報を 入力するために用いることができます。タッチパネルには、プリント基板がパッケージされています。各プリント基板の層には、マトリックスの行と列に沿って直列にチェーン接続された平らな螺旋状の誘導性容量性素子がある。すべてのPCBのマトリックスが互いに整列している。隣接するプリント基板表面の間に絶縁層を設ける。iプリント基板の行(列)の出力は、(i+1)プリント基板の行(列)の入力に接続され、パッケージ内の最初のプリント基板のマトリックスの行と列の入力は、パッケージ内の最後のプリント基板のマトリックスの行と列の出力であるタッチパネルの入力となる。他のポインティングデバイスと同様、タッチパッドは通常デバイスの表面を指で動かしてポインター」を操作するために使用さ れます。タッチパッドにはさまざまなサイズがありますが、一般的には50cm²以下の大きさです。形状は長方形が最も多いが、円形のモデルもある。

 

今日発生した不具合は何が原因なのか、皆さん教えてください。

このEAには、金曜日のマーケットクローズ15分前に取引を停止するオプションがあります。

新しい日が表示されたら、EAはそれが金曜日であるかどうかをチェックし、今日はStringToTime("23:59")-15*60で取引を停止します。

datetime FinishInFriday;
void OnTick()   {
   datetime cur=TimeCurrent();
   if(PrevDay!=Day()) {                               // при наступлении нового дня
      PrevDay =Day();
      
       if(TimeDayOfWeek(cur)==5) {                    // если сегодня пятница
         FinishInFriday=StringToTime("23:59")-15*60;    // время окончания торговли
         Print("Finish In Friday = ",FinishInFriday);   
       }
   }
   if(TimeDayOfWeek(cur)==5)
      if(cur>FinishInFriday) 
         return;
}

テスターでは 正常に動作していますが、実際の取引では、金曜日が来るとExpert Advisorが最初のティックで取引を停止してしまうという、全く異なる状況が見られます。

Expert Advisorの日記からプリントを紹介します。

ブローカー1号、デモ

0 05:59:47.731 Scalper GBPAUDpt,M1: Finish In Friday = 2014.10.23 23:44:00

ブローカー2、リアル。

0 03:00:11.999 Scalper EURUSD,M1: Finish In Friday = 2014.10.23 23:44:00

つまり、1ティック目に今日の日足バー(10月24日(金))が表示されると、EA

は、"23:59 "という行を、今日の日を代入するのではなく、昨日の時間に変換します。

しかし、金曜日の日中にEAを再起動すると、完了時刻を正しく判断することができます。

 
tuner:

今日発生した不具合は何が原因なのか、皆さん教えてください。

このEAには、金曜日のマーケットクローズ15分前に取引を停止するオプションがあります。

新しい日が表示されたら、EAはそれが金曜日であるかどうかをチェックし、今日はStringToTime("23:59")-15*60で取引を停止します。

テスターでは正常に動作していますが、実際の取引では、金曜日が来るとExpert Advisorが最初のティックで取引を停止してしまうという、全く異なる状況が見られます。

Expert Advisorの日記からプリントを紹介します。

ブローカー1号、デモ

0 05:59:47.731 Scalper GBPAUDpt,M1: Finish In Friday = 2014.10.23 23:44:00

ブローカー2、リアル。

0 03:00:11.999 Scalper EURUSD,M1: Finish In Friday = 2014.10.23 23:44:00

つまり、1ティック目に今日の日足バー(10月24日(金))が表示されると、EA

は、"23:59 "という行を、今日の日を代入するのではなく、昨日の時間に変換します。

しかし、金曜日の昼間にEAを再起動すると、完了時刻を正しく判断することができます。

よく見てください。

もし昨日の今日が今日の今日と同じでないなら...。

このユニットには1日1回しか入れません。

なんとなくですが、テスターでも正しく動作しないのではと思います。

MqlDateTimeと TimeToStructをドキュメントで見てください。

シンプルな構造ですが、このような日付や時間の変換を行うよりもはるかに便利に作業することができます。

 
Vinin:

Googleから追放されたのですか?

タッチパッドtouchpad)、タッチパネルはポインティング入力装置 であり、本発明はオートメーションとコンピュータ工学に関するもので、タッチパネルの表面にある記号などの情報、磁性材料でできた要素や部品の位置の座標情報を読み取り、入力 することができる。タッチパネルには、プリント基板がパッケージされています。各プリント基板の層には、マトリックスの行と列に沿って直列にチェーン接続された平らな螺旋状の誘導性容量性素子がある。すべてのPCBのマトリックスが互いに整列している。隣接するプリント基板表面の間に絶縁層を設ける。iプリント基板の行(列)の出力は、(i+1)プリント基板の行(列)の入力に接続され、パッケージ内の最初のプリント基板のマトリックスの行と列の入力は、パッケージ内の最後のプリント基板のマトリックスの行と列の出力であるタッチパネルの入力になります。他のポインティングデバイスと同様、タッチパッドは通常デバイスの表面を指で動かしてポインター」を操作するために使用さ れます。タッチパッドにはさまざまなサイズがありますが、一般的には50cm²以下の大きさです。形状は長方形が最も多いが、円形のモデルもある。

Vistaの私や、新しい8-kaの長方形のように、そのふざけた態度に失望し、静かに仕事をすることは不可能で、突然すべてが飛んでしまいます。情報満載のメッセージをありがとうございます!(冗談は通じないか?)