初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 645

 
Alexey Kozitsyn:
時間による最後のオーダーがリストの最後のオーダーでないと仮定すると、あなたの例は一番最初のオーダー(#0)を考慮していないため、正しくありません。

時間的に最後のオーダーのチケットを最初に見つけ、その後、修正を加えたサイクルを作る。ループ内で前回発見された順番のチケットに遭遇した場合、そのチケットはスキップされます。

最後の注文のチケットを見つけるために、すべての注文の履歴を検索する必要はありません。検索する履歴の大きさは、1日、2日、3日、1週間...と設定することができます。"そして、検索範囲より早い時刻のオーダーをすべてスキップする。例えば、検索履歴のサイズを1日に設定した場合、現在の時刻より 1日前の注文はすべてスキップされます。でも、やっぱりサイクルが必要なんです。リストの最後の順番だけをとるとBuyになり、Sellが必要になります。最後の1枚ですが。したがって、彼のデータを入手することはできません。

 
Artyom Trishkin:

時間的に最後のオーダーのチケットを最初に見つけ、その後、修正を加えたサイクルを作る。ループ内で前回発見された順番のチケットに遭遇した場合、そのチケットはスキップされます。

最後の注文のチケットを検索するために、すべての注文の履歴を実行する必要はありません。検索される履歴のサイズは、1日、2日、3日、1週間...と設定することができます。"そして、検索範囲より早い時刻のオーダーをすべてスキップする。例えば、検索履歴のサイズを1日に設定した場合、現在の時刻より 1日前の注文はすべてスキップされます。しかし、ループはまだ必要です。リストの最後の順番だけをとるとBuyになり、Sellが必要になります。最後の1枚ですが。したがって、彼のデータを入手することはできません。

Artemさん、もちろん説明ありがとうございます。でも、リストで順番を見つける方法は知っていますよ。そして、私の返事はあなたに対してではなく、Alexeiの例に対するものです(特に、「> 0」という条件がうまくいかないということです)。

正しい方法(コードのみ)で書いた方がいい。私は怠け者です :)

 
Alexey Kozitsyn:
もし、最後のオーダーがリストの最後ではないと仮定すると、あなたの例は一番最初のオーダー(オーダー0)を考慮していないため、正しくありません。

そうでないわけがない。

アレクセイ・ヴィクトロフ

追加のバリエーション:ループの前に、変数_1に、例えばゼロオーダーの チケットを書き込んで、次に

/********************Script program start function********************/
void OnStart()
{
  int i, t1, t2, modTicket , total = OrdersTotal();
   datetime d1, d2;
    if(OrderSelect(0, SELECT_BY_POS))
     {
      t1 = OrderTicket();
       d1 = OrderOpenTime();
     }    
    for(i = 1; i < total; i++)
     {
      if(OrderSelect(i, SELECT_BY_POS))
       {
        t2 = OrderTicket();
         d2 = OrderOpenTime();
          modOrder((d1 < d2) ? t1 : t2);
         t1 = d1 < d2 ? t2 : t1;
        d1 = d1 < d2 ? t2 : t1;
       }
     }
}/********************************************************************/

void modOrder(int ticket);
{
// здесь код модификации ордера.
}/********************************************************************/
他に何か失敗していなければいいのですが。
 
Alexey Viktorov:

そうでないわけがない。

/********************Script program start function********************/
void OnStart()
{
  int i, t1, t2, modTicket , total = OrdersTotal();
   datetime d1, d2;
    if(OrderSelect(0, SELECT_BY_POS))
     {
      t1 = OrderTicket();
       d1 = OrderOpenTime();
     }    
    for(i = 1; i < total; i++)
     {
      if(OrderSelect(i, SELECT_BY_POS))
       {
        t2 = OrderTicket();
         d2 = OrderOpenTime();
          modOrder((d1 < d2) ? t1 : t2);
         t1 = d1 < d2 ? t2 : t1;
        d1 = d1 < d2 ? t2 : t1;
       }
     }
}/********************************************************************/

void modOrder(int ticket);
{
// здесь код модификации ордера.
}/********************************************************************/
他に間違いがなければいいのですが、もう一度確認したわけでもないので...。
前座として受けるならいいんですけど、端からやったほうが...。ただし、注文を削除しないのであれば、それもOKです。
 
Alexey Kozitsyn:
スタート地点のバリエーションとして捉えれば、それでいいのですが、端からやったほうが......。とはいえ、注文を消さなくてもいいのであれば、こちらも安心ですが。

実は、複数のオーダーを修正するためには、ループで通さなければならないのです。つまり、追加のマイクロ秒は、オーダーのオープン時間を 比較するためだけに使われることが判明したのです。これは最適なバリエーションになります。

サイクルの方向 ...クロージングオーダーとは関係ないので、どうでもいいんですけどね。前のバージョンと混同して「閉じる」と書いてしまったので、そこでもループが対応してしまいました...。

 

こんにちは。

インジケーターの作成に 挑戦しています。視覚的に望んだものを得たいのですが、例えば文字情報、int型など必要な情報をインジケータで送って欲しいのです。10個のバッファがあり、それに応じて線を引くことを考慮すると、どうすればよいでしょうか。ありがとうございます。

 

こんにちは、私を蹴ることはありませんが、私はこの見出しを見つけ、いくつかの質問をすることを決めた...私は端末を持っている...私は1ブローカーMT4(1)からダウンロード...デモを実行...いくつかの時間後にあまりにも、別で登録されている

私はターミナルをダウンロードするように提供された...結果として(2)をダウンロードし、2端末が行くことはありません...と1が登場プロファイル2ブローカー...一般的には、すべての混乱...その後バイナリから彼らはMT5に移動するという手紙を来る...インストールされており、一見すると、すべてのはるかに良いMT4よりも 。質問ですが、1つの端末で異なるブローカーに口座を開くことは可能でしょうか?そして、私はそれらのすべてをMT5に転送することができますか?とか、MT4のインジケーターが5に合うかどうか?

感謝

 

このような積極的な支援、本当にありがとうございます。

すでに新しい問題と格闘している)

新しいジグザグ 頂点の出現の事実を突き止めるのに役立ってください。

最初の頂点の価格を変数に格納し、それを比較して、価格が変わって いれば新しい頂点があるというフラグを立てようとしました。
if(newZZH1_PR!=GetExtremumZZPrice(Symbol(),T_F_,1))
{
   newZZH1_PR=GetExtremumZZPrice(Symbol(),T_F_,1);
   newZZH1=true;
}

しかし、この関数は、時間とともに、次に1つ目の頂点の価格、次に2つ目の頂点の価格と、カオス的に返ってくることが判明しました。

新しいトップが形成されないことが判明し、フラグが立つ。
double GetExtremumZZPrice(string sy="", int tf=0, int ne=0)
{

  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", ExtDepth,ExtDeviation,ExtBackstep, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
理想的には、この関数が常に最初の頂点の価格を返すように調整されるべきですが、私はどのような解決策でも嬉しいです。
 
mila.com:

このような積極的な支援、本当にありがとうございます。

すでに新しい問題と格闘している)

新しいジグザグ 頂点の出現の事実を突き止めるのに役立ってください。

最初の頂点の価格を変数に記憶し、比較し、価格が変更されている場合はフラグを上げると、新しい頂点があります。
if(newZZH1_PR!=GetExtremumZZPrice(Symbol(),T_F_,1))
{
   newZZH1_PR=GetExtremumZZPrice(Symbol(),T_F_,1);
   newZZH1=true;
}

しかし、この関数は、時間とともに、次に1つ目の頂点の価格、次に2つ目の頂点の価格と、カオス的に返ってくることが判明しました。

新しい頂点は形成されないが、フラグが立っていることが判明した。
double GetExtremumZZPrice(string sy="", int tf=0, int ne=0)
{

  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", ExtDepth,ExtDeviation,ExtBackstep, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
理想的には、この関数が常に最初の頂点の価格を返すように調整されるべきですが、私はどのような解決策でも嬉しいです。

ジグザグは、実際には3つのバッファを持っています - 合計0、1-上端、2-下端。

ゼロバーでは、最初のバッファ(膝が上がっている場合)または2番目のバッファ(膝が下がっている場合)のいずれかに、常に値が存在することになります。したがって、現在のキャンドル上のゼロバッファは、常に、最初のバッファまたは2番目のバッファのどちらかの値を持っています。

さて、明確な上限を見つけるには、小節1から始まる最初のバッファの空でない値を探せばよいでしょう。下限値については、小節1から始まる第2バッファの最初の空白でない値を求める必要がある。

これが新しいトップかボトムかを理解するためには、前回発見したトップ/トップの時間を記憶し、これまで発見したものと比較する必要があるのです。

とりとめのない文章ですが、ご理解いただけると幸いです...。

 
MT5端子は2つあります。課題:一方の端末ではロングトレードのみ、他方の端末ではショートトレードのみを許可するスクリプトを書くことは可能ですか?
理由: