Templ(T1) kaydetmek için her işlevden önce anlamına gelir ve bir değişkeni veya gerekli argümanı kabul edecek mi? Ve neden templ(T) bildirildi ve templ(T1) çağrıldı, her işlevden önce bir sayı eklemem ( templ(T1)templ(T2)templ(T3) ) veya her yere templ(T1) yazmam gerekir mi? Ve eğer birkaç parametre şablonun içine tıkıştırılırsa<typenameT>, o zaman nasıl olacak, buşablon gibi<typenameT,typenameP,typenameQ> -templ(T,P,Q).
Evet, giriş yine de normal bir işlevi bir işlev şablonuna dönüştürmeniz gereken her işlevden önce yapılır. Sadece bu giriş şimdi fark edilir şekilde daha kısa. T1, adı (a) ile gösterilen bir değişkende saklanan bir tür veriyi ifade eden bir isimdir. Numara eklemek gerekli değildir. Her yerde aynı adı kullanabilirsiniz, hatta aynı T'yi numarasız kullanabilirsiniz. templ çağrılmaz, ancak otomatik olarak #define içinde kendisine yazılanla değiştirilir. Bu, bir metnin diğeriyle basit bir şekilde değiştirilmesidir, ancak giriş parametrelerini tıpkı işlevler gibi parantez içinde yazabilirsiniz.
#define templ(T) template < typename T> // один входной параметр именуемый буквой "T" т. е. "T" это просто имя.
templ(T1) T1 Funct(T1 a) { return a;} // функция вернёт тот же тип, что и будет передан при вызове это функции
derleme zamanında, templ(T1) ifadesi şablon<typename T1> ile değiştirilecek ve bu
template < typename T1>
T1 Funct(T1 a) { return a;}
Birden fazla parametre için, evet, nasıl tanımlayacağınızı doğru tahmin ettiniz.
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте. identifier заменяется только в том случае, если он представляет собой отдельный токен. identifier не заменяется, если он является частью комментария, частью строки, или частью другого более длинного идентификатора. expression...
Anladığım kadarıyla, bir anahtar aracılığıyla bir seçim yapmanız ve oraya isimleri girmeniz gerekiyor.
Kodunuz bir int değeri yazdırıyor, ancak bir dize seçmeniz gerekiyor
Göstergenin adını bir dizi dize sabiti aracılığıyla seçerdim, yani. benim örneğim, kullanıcı tarafından seçildiğinde size kayıt numarasını verir ve bu sayı, göstergelerin metin adlarını saklayacağınız dizi dizisinin eleman numarası (indeks) olabilir.
maalesef terminal yok kodda örnek göstermeyeceğim ama sanırım fikri açıkladım
Göstergenin adını bir dizi dize sabiti aracılığıyla seçerdim, yani. benim örneğim, kullanıcı tarafından seçildiğinde size kayıt numarasını verir ve bu sayı, göstergelerin metin adlarını saklayacağınız dizi dizisinin eleman numarası (indeks) olabilir.
maalesef terminal yok kodda örnek göstermeyeceğim ama sanırım fikri açıkladım
not:
Teşekkürler, bunu yaptım, oldukça uygun.
Ama son versiyon, sadece bir bomba. Terminalde açık en az 20 çizelge olduğu için bunu uzun zamandır kaçırdım.
Herkese selam. Bana yardım et lütfen. EA'nın işlem kapandıktan sonra n saat beklemesini istiyorum. Bu özelliği de değiştirebilirsiniz. Mode_Trades'i Mode_History olarak değiştirmek doğru olur mu? teşekkürler
int BarsAfterOrderBuy()
{
datetime t= 0 ; int i;
for (i= OrdersHistoryTotal ()- 1 ;i>= 0 ;i--)
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderType ()== OP_BUY && OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic)
{ if (t< OrderOpenTime ())t= OrderOpenTime ();}
return ( iBarShift ( Symbol (), 0 ,t, true ));
}
Carcass77 : Herkese selam. Bana yardım et lütfen. EA'nın işlem kapandıktan sonra n saat beklemesini istiyorum. Bu özelliği de değiştirebilirsiniz. Mode_Trades'i Mode_History olarak değiştirmek doğru olur mu? teşekkürler
MODE_HISTORY - elbette gerekli, ancak bir şey daha var: "kapattıktan sonra" metninde ve Sipariş Açma Süresi kodunda
Ve çubuklara geçmeyin, t zamanını geri döndürün ve ardından şöyle bir şey kullanın:
//+------------------------------------------------------------------+//| 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) kaydetmek için her işlevden önce anlamına gelir ve bir değişkeni veya gerekli argümanı kabul edecek mi? Ve neden templ(T) bildirildi ve templ(T1) çağrıldı, her işlevden önce bir sayı eklemem ( templ(T1) templ(T2) templ(T3) ) veya her yere templ(T1) yazmam gerekir mi? Ve eğer birkaç parametre şablonun içine tıkıştırılırsa < typename T> , o zaman nasıl olacak, bu şablon gibi< typename T, typename P, typename Q > - templ(T,P,Q).
Evet, giriş yine de normal bir işlevi bir işlev şablonuna dönüştürmeniz gereken her işlevden önce yapılır. Sadece bu giriş şimdi fark edilir şekilde daha kısa.
T1, adı (a) ile gösterilen bir değişkende saklanan bir tür veriyi ifade eden bir isimdir. Numara eklemek gerekli değildir. Her yerde aynı adı kullanabilirsiniz, hatta aynı T'yi numarasız kullanabilirsiniz.
templ çağrılmaz, ancak otomatik olarak #define içinde kendisine yazılanla değiştirilir. Bu, bir metnin diğeriyle basit bir şekilde değiştirilmesidir, ancak giriş parametrelerini tıpkı işlevler gibi parantez içinde yazabilirsiniz.
derleme zamanında, templ(T1) ifadesi şablon<typename T1> ile değiştirilecek ve bu
Birden fazla parametre için, evet, nasıl tanımlayacağınızı doğru tahmin ettiniz.
Açık, bilgi için teşekkürler, zaten denedim, uygun.
Anladığım kadarıyla, bir anahtar aracılığıyla bir seçim yapmanız ve oraya isimleri girmeniz gerekiyor.
Kodunuz bir int değeri yazdırıyor, ancak bir dize seçmeniz gerekiyor
Göstergenin adını bir dizi dize sabiti aracılığıyla seçerdim, yani. benim örneğim, kullanıcı tarafından seçildiğinde size kayıt numarasını verir ve bu sayı, göstergelerin metin adlarını saklayacağınız dizi dizisinin eleman numarası (indeks) olabilir.
maalesef terminal yok kodda örnek göstermeyeceğim ama sanırım fikri açıkladım
not:
Göstergenin adını bir dizi dize sabiti aracılığıyla seçerdim, yani. benim örneğim, kullanıcı tarafından seçildiğinde size kayıt numarasını verir ve bu sayı, göstergelerin metin adlarını saklayacağınız dizi dizisinin eleman numarası (indeks) olabilir.
maalesef terminal yok kodda örnek göstermeyeceğim ama sanırım fikri açıkladım
not:
Teşekkürler, bunu yaptım, oldukça uygun.
Ama son versiyon, sadece bir bomba. Terminalde açık en az 20 çizelge olduğu için bunu uzun zamandır kaçırdım.
Herkese selam. Bana yardım et lütfen. EA'nın işlem kapandıktan sonra n saat beklemesini istiyorum. Bu özelliği de değiştirebilirsiniz. Mode_Trades'i Mode_History olarak değiştirmek doğru olur mu? teşekkürler
MODE_HISTORY - elbette gerekli, ancak bir şey daha var: "kapattıktan sonra" metninde ve Sipariş Açma Süresi kodunda
Ve çubuklara geçmeyin, t zamanını geri döndürün ve ardından şöyle bir şey kullanın:
MODE_HISTORY - elbette gerekli, ancak bir şey daha var: "kapattıktan sonra" metninde ve Sipariş Açma Süresi kodunda
Ve çubuklara geçmeyin, t zamanını döndürün ve sonra şöyle bir şey kullanın:
Mode_History'de düzelttim, bu yüzden baykuş ilk siparişi açmıyor. Çözümü detaylandırabilir misiniz? teşekkürler
Mode_History'de düzelttim, bu yüzden baykuş ilk siparişi açmıyor. Çözümü detaylandırabilir misiniz? teşekkürler
Buna bir bak.
Buna bir bak.
Ve ilk sipariş nasıl çözülür?
Ve ilk sipariş nasıl çözülür?
Lütfen işlevin biraz değiştiğini unutmayın.