#define templ(T) template<typename T> // один входной параметр именуемый буквой "T" т. е. "T" это просто имя.
templ(T1) T1 Funct(T1 a) { return a;} // функция вернёт тот же тип, что и будет передан при вызове это функции
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте. identifier заменяется только в том случае, если он представляет собой отдельный токен. identifier не заменяется, если он является частью комментария, частью строки, или частью другого более длинного идентификатора. expression...
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
// здесь пофиг какой символ и какая позиция ... последняя позиция и всеint ClosePos = SecondsAfterCloseLastPos();
// здесь по тек. символу и пофиг какая позиция // int ClosePos = SecondsAfterCloseLastPos(Symbol()); // здесь по тек. символу и OP_BUY позиция // int ClosePos = SecondsAfterCloseLastPos(Symbol(),OP_BUY); // здесь по тек. символу , OP_BUY позиция , и магик 5 // int ClosePos = SecondsAfterCloseLastPos(Symbol(),OP_BUY,5);// продажи, вместо OP_BUY прописываем OP_SELL.if(ClosePos > 3600 || ClosePos == 0 ) {/*можно открывать*/}
}
//+------------------------------------------------------------------+//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество секунд после закрытия последней позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int SecondsAfterCloseLastPos(string sy="",int op=-1,int mn=-1)
{
datetime t=0;
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 || sy=="")
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(op<0 || OrderType()==op)
{
if(mn<0 || OrderMagicNumber()==mn)
{
if(t<OrderCloseTime()) t=OrderCloseTime();
}
}
}
}
}
}
int CloseTime;
if(t==0)
CloseTime=0;
else
CloseTime = int(TimeCurrent()-t);
return(CloseTime);
}
//+----------------------------------------------------------------------------+
各関数の前にtempl(T1) と書いて、変数や必要な引数を取る必要があるのでしょうか?templ(T)が宣言され、templ(T1) が呼ばれるのはなぜですか?各関数の前に数字をつけるべきか(templ(T1)templ(T2)templ(T3))、どこでもtempl(T1) と書いていいのでしょうか?また,template<typename T> の中で複数のパラメータがスコア化 されている場合,以下のように なります.template<typename T,typename P,typename Q>-templ(T,P,Q).
はい、レコードは、通常の関数を関数テンプレートにしたい各関数の前に、まだ行われます。ただ、今回のレコードは明らかに短くなりましたね。
T1はある種の データを示す名前であり、その名前(a)を持つ変数に格納される。数字を入れる必要はありません。同じ名前ならどこでも使えるし、番号のない同じTでもいい。
templは呼び出されず、#defineで前置されたものに自動的に置き換えられます。これは、あるテキストを別のテキストに置き換えるという単純なものですが、関数と同じように入力パラメータを括弧書きで記述することができます。
コンパイル時に templ(T1) 式は template<typename T1> に置き換えられ、次のようになります。
複数のパラメータについては、はい、記述方法を正しく推測してください。
なるほど、情報ありがとうございます!もう試しましたよ~、便利ですね。
スイッチ経由で選択し、そこで名前を入力する必要があると理解しています。
文字列を選択する必要があるのに、コードがint値を表示する。
つまり、私の例では、ユーザーがレコードを選択すると、そのレコードの番号が表示されます。この番号は、文字 列配列の要素(インデックス)の番号にすることができ、ここにインジケータのテキスト名を格納することができます。
端末がないので、コードの例を示すことができませんが、考え方は説明できたと思います。
PS:
例えば、私の例では、ユーザーによって選択されたときにレコードの番号が表示されますが、この番号は、インジケータのテキスト名を保存する文字列 配列の要素(インデックス)の番号であることが可能です。
端末がないので、コードの例を示すことができませんが、考え方は説明できたと思います。
PS:
ありがとうございます、やってみました、かなり便利です。
そして最終版、これはまさに爆弾です。ターミナルで20チャート以上開いているので、ずっと見逃していました
皆さん、こんにちは。助けてください。取引終了後、n時間待つようにしたいのですが。この機能にも手を加えることができますか。Mode_TradesをMode_Historyに変更するのが正しいのでしょうか?ありがとうございました。
MODE_HISTORY - もちろん必要なのですが、もう一つポイントがあります。
そして、バーに行って時間Tを返し、それをなんとなく使ってしまうのはやめましょう。
MODE_HISTORY - もちろん必要なのですが、もう一つポイントがあります。
そして、バーに行って時間Tを返し、それをなんとなく使ってしまうのはやめましょう。
Mode_Historyに修正したのは、フクロウが最初の注文を開けないようにするためです。解決策を詳しく教えてください。感謝
Mode_Historyに修正したので、フクロウは最初の注文を開けない。解決策を詳しく教えてください。感謝
これを見てください。
これを見てください。
1順目はどのように解決するのでしょうか?
また、最初の注文はどのように許可するのですか?
機能が若干変更されていますので、ご注意ください。