Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
En azından ayarlayıcı yöntemlerde bu haklıdır - kod daha okunabilir ve daha kompakt hale gelebilir, la adlı parametreler elde edersiniz
ChartObject *hline=HLine::New(1.255).Color(clrGreen).Width(2).Selectable(true); // не надо помнить очерёдность параметров и можно писать в одну строку - цепочкой
// получается вот из подобного :
class HLine:public ChartObject {
public:
HLine(double price);
HLine *New(double _price) { return new HLine(_price); } // это чтобы не городить (new HLine(...)).Method1
HLine *Color(color _clr) { fgColor=_clr; return GetPointer(this); } // а это чтобы получались цепочки obj.Method1(..).Method2(..)
};
ve işlevlerin dönüş türüne göre niteliği biraz karışır.
GetPointer(this) öğesini yöntemlerden döndürmekten çekinmeyin.
Yani &bu daha kısa.
Pekala, önce başlayalım.
Bir emri kapatmak için emir tipinin ve bu tipe karşılık gelen fiyatın tanımlanmasına gerek yoktur. OrderClosePrice() fiyatına yakın yazmanız yeterlidir.
void OnStart ()
{
int i, total = OrdersTotal ()- 1 ;
for (i = total; i >= 0 ; i--)
{
if ( OrderType () < OP_SELLSTOP )
{
if (! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 100 ))
printf ( "***********" );
}
}
} /********************************************************************/
Güzel! ) Teşekkürler.
Örneğe bakılırsa, OrderSelect () gerekli değil mi?
Güzel! ) Teşekkürler.
Örneğe bakılırsa, OrderSelect () gerekli değil mi?
Güzel! ) Teşekkürler.
Gerekli. Alexey'nin parktan geçmesine izin verdim...
Evet... Gerçekten berbattı.
Ama ondan önce bu konularla tanışmadım.
Böylece OrderClosePrice'ı yalnızca ilgili OrderSelect'ten hemen sonra kullanabilirsiniz. Çünkü OrderSelect, Order(const)-işlevlerinin verilerini bir kez kopyalar ve aynı RefreshRates bunları güncelleyemez.
Onlar. örneğin, OrderClosePrice ile kapatmak mümkün olmadıysa, bir sonraki denemeden önce OrderSelect'i tekrar yapmak gerekir (RefreshRates gerekli değildir).
Tehdit Bu konu zaten 2005'te ! İşte geliştiricilerin ayrıntılı argümanları.
Açık siparişler daha yüksek bir sayıdan analiz edilmelidir, yani. for(int nom=OrdersTotal()-1; nom>=0; nom--)
Bu özellikle siparişleri silerken önemlidir.
Ancak for(int nom=0; nom<OrdersTotal(); nom++) tersini yaparsanız ne olur?
İlk olarak, indeks sıfırdır ve 0 numaralı ilk sıra silinir.
Ardından endeks 1'e eşit olur. Bu sırada, kalan emirler kaydırılır ve 1 numaralı emir,
sıfır konumunu işgal eder. Eski 2 numara 1 pozisyonu alır. Kaldırılacak.
Daha sonra indeks 2'ye eşit olur ve başlangıçta 4 numaradaki sıra silinir. ...
Böylece başlangıçta bile pozisyon işgal eden emirler silinir. Ve tuhaf olanlar kalır. Bu, siparişler ve sayılar hakkındaki yorumlardan görülebilir.
Hem kaldırma seçeneklerini hem de ekran görüntülerini gösteren bir komut dosyası ekliyorum
20 bekleyen sipariş oluşturuldu
Birinden sonra gitti