[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 417

 
okvseok:


まあ、例えば、マウスホイール(キー)を左右3分ずつ回したりしないで、特定のバーの日付とかを入力すればいいんですけどね。

ご回答ありがとうございました


スペースバーを押して、希望の日付を入力します。

答えは正解であると同時に無駄である。質問と全く関係ありません。

 
TarasBY:
グラフの左下(日付のあるところ)をダブルクリックし、開いたウィンドウに、希望の日付をDD.MM.YYYY形式で入力します。これで「手書きではない」のでしょうか?
はい、ありがとうございました。
 
Run:

つまり、
スクリプトはおおよそn行書くはずなのに、1行しか書かない。

手始めに、ファイルを 開いたり閉じたりする プロシージャをループの外に移動させます。
 

ありがとうございます、うまくいっています。

  handle=FileOpen("AUDJPY.csv", FILE_READ|FILE_WRITE, '\t');
  for (int i=NumberOfCandels; i>0; i--) {
    arrowbuy = iCustom(NULL, 0, "xxx", 0, i);
    arrowsell = iCustom(NULL, 0, "xxx", 1, i);
    if(arrowbuy != EMPTY_VALUE && arrowsell == EMPTY_VALUE) {
      if(handle>0) {
        FileWrite(handle, TimeToStr(Time[i], TIME_DATE|TIME_MINUTES), " Buy");
        }
      }
    if(arrowsell != EMPTY_VALUE && arrowbuy == EMPTY_VALUE) {
      if(handle>0) {
        FileWrite(handle, TimeToStr(Time[i], TIME_DATE|TIME_MINUTES), " Sell");
        }
      }
  }
  FileClose(handle);
 
okvseok:


まあ、例えば、マウスホイール(キー)を左右に3分ずつ回す))のではなく、あるバーの日付とかを入力すればいいんです。

返信ありがとうございました

という関数があります。

intiBarShift() 文字列シンボル, int timeframe, datetime time, bool exact=false)
時間からバーを探すこの関数は、指定された時刻が属するバーのオフセットを返します。指定した時間にバーがない場合(履歴の「穴」)、この関数は正確な パラメータに応じて、-1 または最も近いバーのオフセットを返します。
パラメータ
記号 - 機器のシンボル名。NULLはカレントシンボルを意味する。
タイムフレーム - 期間チャートのタイムフレームの 1つを指定することができます。0は現在のチャートの期間を表します。
- 検索する時間値。
せいせい - バーが見つからなかった場合の戻り値。FALSE - iBarShiftは最も近いものを返します。TRUE - iBarShift は -1 を返します。
 datetime some_time=D'2004.03.21 12:00'; int shift=iBarShift("EUROUSD",PERIOD_M1,some_time); Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift");

 
Chiripaha:

:))))) (表記なし...コメントもなし)

質問者と回答者の2人のうち、質問者の方が、保留中の注文がトリガーされたときにどうなるのか、よく理解していない可能性が高いです。保留中の注文は、それに最も近い任意の価格で執行されます。保留中の注文の経験則は、価格がそれに達した場合、取引はマーケットに入ることです。そして、値段は関係ないでしょう。ストップロスも同様に保留中の注文であり、取引そのものと逆のポジションを取るだけなので、これはストップロスにも当てはまります。これは、取引所での取引とは少し違います。そのためか、混乱しているようですね。

この意味で、ブローカーの質に大きく依存する。つまり、取引を実行するための規制と、そのブローカーでの流動性の有無、そしておそらく他の機能の束:おそらく誠実さ、などなど...の両方を意味します。あなたはほぼすべての外国為替ブローカー(DC)との契約を読んだ場合、それはあなたのトランザクション(および他のトレーダー)は、この "ブローカー "の任意の便利な価格で閉じることができ、それはあなたがそれに署名しているので、法律や規制の範囲内になることが判明した。- しかし、それらは別のテーマです。プログラミングとは関係ない。


デモでロボットがあれば、普通はそこで全部ちゃんと開いて人を呼び込むんです。そして、繰り返しになりますが、手動で開いた注文は、設定された場所で開いているのです
 
Ekburg:

FX業者については、明確なイメージはないのですが、デモで取引したことがあります。そして、繰り返しになりますが、手動で開いた注文は、設定した場所で開いています!

結論:もちろん、興味本位で、ロボットの注文はいつ決まったのか(事前か否か、ロボットと同時期のマニュアルか否か、など)、大まかな説明しかしていないので、もっと詳しく状況を説明してもらうことも可能です。しかし、この場合でも、ブローカーは自分のスレッドを持っていて、おそらく取引をキューに入れるので、ブローカーとだけ取引する必要があるのです。仮に、手動による保留注文が先に発注された場合、その執行時刻が異なるため(他のクライアントの待ち行列を含む)、価格が異なる可能性があります。ロボットがシグナルが形成された期間内に注文を出した場合、キュー内の注文の到着は明らかではありません - それ故、実行価格に偏りが生じる可能性があります。また、何も書かないポジションの大きさにも影響されるかもしれませんが...。など...

でも...が、これはブローカー(DC)に聞かないとわからない。そして、私が言及しなかった理由を、彼はたくさん見つけてくれるだろうと思います。- そして、アドバイスは正しかった:あなたの手の中に、ブローカーへのログは、もちろんあなたはまだあなたの保留中の 注文が移動していると思う場合を除き、。しかし、保留中の注文とこの保留中の注文に対する取引という2つの異なる概念を混同しないようにしてください。指値注文は、宣言された数量で、最も近い任意の価格で市場に参入する指示である。そして、ディールとは、宣言した数量(ロット)の注文を実行することが可能であった価格です。- そして、これらの注文の価格は異なる可能性が高いです(特に、あなたがリンクを与えられたファストマーケットでは)。指値注文の場合、注文の価格と約定価格は(定義上)等しくなります。

また、ブローカーのデモと実際の注文に差がないのも良いですね!- このことは、このブローカーが(あなたが言うように)顧客を引き付けるために取引を偽装していないことを示しています。- この場合、見るべき矛盾はない。

 
Zhunko:

1.どのように始めたのですか?まずはアップデートせずに実行する必要があります。すなわち、IsRefreshRates = falseです。データは更新されません。

2.そして、IsRefreshRates = trueで実行する必要があります。データは更新されます。

以下は、スクリーンショット1です。スクリーンショット2

バータイムにご注目ください。また、MarketInfo()がマーケット概要からデータを取得して いることがわかります。

こちらがExpert Advisorです。少し修正しました。楽器名を消した。


1.ア ップデートしてもしなくても画面は同じ!1つの端末を使いました。Dookieから99%引用したテスト用のスクリプトと一緒にターミナルをダウンロードしました。オーバーサイズで付かないので流し込みました。以下、リンク先:http://www.load.to/PqWVW2JQ75/Тиковые_котировки_для_тестера_MT4_от_DukasCopy.zip

2. 他の端末では、すでに状況が異なっている。例えば、ここOANDAでは。

2.1 当初の場合

IsRefreshRates = false

だから

2.2 さらに場合によっては

IsRefreshRates = true

このように

最初のモードでわかるように、価格はAUDNZDのペアとはかけ離れている...。で、2番目のモードでは、価格はまさに私たちが望んでいるものです...。

その結果、やはりRefreshRates()がサーバーから引用符を「引っ張ってくる」ことが判明しました。サポートが寝ているので、このバリエーションはオリジナルより近いです。

 
Zhunko:
RefreshRates()は、エキスパートが作業しているものだけを更新します。そうやって見つけ出していくのです。専門家から昔、Metakvotの誰かが書いていた。


Vadim、私はRefreshRates() がExpert Advisorが必要とするツールを認識しているかどうか疑っています。すべてのExpert Advisorが、グローバルパラメータでツール名を 定義しているわけではありませんね。まあ...もしそうなら、RefreshRates()は 何を根拠に、どのツールの市場データを更新しなければならないか、何を更新してはならないかを知っているのだろうか、という疑問が生じる。
 
Integer:

Junkoさん、409ページ、一番下の投稿-データが更新される理由が書いてあります。iOpen()、iClose()が呼ばれるからで、それはRefreshRates()から証明されるわけです。初回はRefreshRates()なしでスクリプトを実行したが、iOpen()とiClose()関数が呼ばれ、ここから端末がデータを読み込む。2回目の実行ではデータがすでにあり、ゼロバーが最初にロードされることがわかっているので、印象としてはデータがすべてロードされているように見えますが、すべてロードされているわけではなく、処理中である可能性があります。

...それなのに、データロードを把握したことを証明するのか...。どのようなストリームとシンクロがあるのでしょうか?


なぜiOpen() は サーバーからデータを引き出すのでしょうか?ドキュメントには、値を返すと書いてあるのですが・・・。だから、ダウンロードではなく、リターンなんです。