受注サイクルの整理 - ページ 13

 
fxsaber:

テンプレートの例は、特にSBで書かれています。MT5のスペシャリストに質問ですが、コードは正しいのでしょうか?

専門家ではありませんが、明白なことを指摘します。そのようなコードは、(例えば、取引セッションの終了時に)ポジションを閉じるための 無限の試みから逃れることができるのです。

まあ、複雑な条件を1行にまとめたりすると、もちろんコードは減りますが、読みづらくなります。

 
Andrey Khatimlianskii:

専門家ではありませんが、明白なことを指摘します。そのようなコードは、(例えば取引セッションの終了時に)延々とポジションを閉じようと することから逃れられるのです。

それはできません。

まあ、1行のコードに複雑な条件をつけると、もちろんコードは減りますが、読みづらくなります。

この場合、簡潔さは唯一の救いであり、TS全体が画面に表示されます。

 
fxsaber:

そう文字通りに受け取れば、マーケットウォッチで各シンボルの過去のティック履歴を読むこともできるのです。でも、実はこの発言の意味を理解しているのではないでしょうか。

このコードは、そのステートメントを実装しているようなものです。そのため、MT5を理解している皆さんに、「このコードは正しいですか?

まあ、私たちはプログラマーですからね。

So understood ...

恨みっこなし。

 

fxsaber:

そんなわけで、MT5を理解している皆さんに質問なのですが、このコードは正しいのでしょうか?

あまりコードを見ていない - 誰が積極的にSB(私 - いいえ、より正確には取引クラスではない)を使用して、多分彼らは伝えることができますか?

 
Artyom Trishkin:

私はあまりコードを見ていない - 誰が積極的にSB(私 - いいえ、より正確には取引クラスではない)を使用して、多分彼らは伝えることができますか?

これは、SBが本来の機能を発揮するための珍しいケースです。テンプレートはスケルトンです。もちろん、充填チェックやロットなどの形で、いろいろな肉を投入することも可能です。でも、基地は残ります。

テンプレートはMT4で最小限の手間で書き換えられ、MT5でも100%動作します。しかし、一方で、MT5では本当に良い質問ですね。

 
fxsaber:

これは、SBが正常に動作している稀なケースです。テンプレートはスケルトンです。もちろん、充填チェックや忠誠心など、さまざまな肉を投入することも可能です。しかし、大元の基本は変わりません。

MT4で作成したテンプレートを最小限の労力で書き換え、MT5で100%動作させることができます。しかし、MT5では、本当に良い質問ですね。

朝の5時ではなく、すっきりした頭で使ってみようと思います :)

SBをよく知る人の書き込みがなければ、可能性の高い小石を考えてみるのもいいかと思い、起きてみます。

 
fxsaber:

テンプレートは最小限の労力でMT4に書き換えることができ、そこで100%動作します。

MT4でリライト

// Шаблон большинства ТС

#property strict // обязательно

// Сигнал на покупку
bool BuySignal( const string Symb ) { return(true); }

// Сигнал на продажу
bool SellSignal( const string Symb ) { return(false); }

// Находит ордер соответствующего типа
bool OrdersScan( const string Symb, const int Type )
{
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS) && (OrderType() == Type) && (OrderSymbol() == Symb))
      return(true);    
    
  return(false);  
}

// Торговое действие на сигнал
bool Action( const string Symb, const int Type, const double Lots = 1 )
{
  bool Res = true;    
  
  // Закрыли противоположные сигналу позиции
  while ((OrdersScan(Symb, 1 - Type)) && (Res = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100)));

  // Открыли позицию по сигналу
  return(Res && !OrdersScan(Symb, Type) && OrderSend(Symb, Type, Lots, SymbolInfoDouble(Symb, Type ? SYMBOL_BID : SYMBOL_ASK), 100, 0, 0));
}

// Шаблон торговой стратегии
void Strategy( const string Symb )
{
  if (BuySignal(Symb))
    Action(Symb, OP_BUY);
  else if (SellSignal(Symb))
    Action(Symb, OP_SELL);
}

void OnTick()
{
  Strategy(_Symbol);
}

しかし、MT5では、本当に良い質問ですね。

MT5に関するコメントが興味深い。
 
fxsaber:

彼はできない。

はい、できます。必要な時にポジションを閉じる ことができない。


fxsaber:

この場合、簡潔であることが唯一の救いであり、TS全体が画面に表示されます。

5行で書いても、読みやすくなるわけではありません。

私の認識を共有します。

 
Andrey Khatimlianskii:

ええ、その通りです。必要な時にポジションを閉じないかも しれない。

MT4のバリエーションは、より親しみやすくするために、あえて書きました。MT4とMT5のバリエーションは同一と思われます。SBも全く同じです。MT4バリアントが100%動作していることを前提とします。つまり、細かいことは省略します。

5行で書いても、読みやすくなるわけではありません。

私の認識をお伝えしています。

そう、誰かのコードは謎なのだ。

 
fxsaber:

MT4のバリエーションは、より親しみやすくするために、あえて書きました。MT4とMT5のバリエーションは同一と思われます。SBも全く同じです。

そして、OrderCloseは取引を終了することが保証されているのか?


fxsaber

そう、他人のコードは暗いのです。

いえ、いつもそうとは限りません。スタイルという意味です。