SiparişlerToplam 0 döndürür
#include <Trade\Trade.mqh>
CTrade trade;
int gi_flag= 1 ;
void OnTick ()
{
if (gi_flag== 1 )
{
trade.PositionOpen( _Symbol , ORDER_TYPE_SELL , 1 , SymbolInfoDouble ( _Symbol , ORDER_TYPE_SELL == ORDER_TYPE_SELL ? SYMBOL_BID : SYMBOL_ASK ), 0 , 0 );
gi_flag= 0 ;
}
PrintFormat ( DoubleToString ( OrdersTotal (), 1 ));
}
Her ne kadar anladığım kadarıyla 1 döndürmeli yoksa doğru anlamıyor muyum?
Emirler pozisyon değildir. Emir, henüz gerçekleşmemiş bir pozisyonu açmak için verilen emirdir, pozisyon emrin uygulanmasının sonucudur.
Teşekkürler, anlıyorum, bu yüzden PositionsTotal işlevini kullanacağız.
Peki ya ilk sorun?
Bu kodu yazdım, bir şey net değil nerede bir hata olabilir
string Data() { string vr; string den; datetime date= TimeCurrent (); MqlDateTime str; TimeToStruct (date,str); switch (str.day_of_week) { case 0 : den = "Воскресенье" ; case 1 : den = "Понедельник" ; case 2 : den = "Вторник" ; case 3 : den = "Среда" ; case 4 : den = "Четверг" ; case 5 : den = "Пятница" ; case 6 : den = "Суббота" ; } printf ( "%02d.%02d.%4d %02d:%02d:%02d %d" ,str.day,str.mon,str.year,str.hour,str.min,str.sec,str.day_of_week); printf ( "%02d.%02d.%4d %02d:%02d:%02d %s" ,str.day,str.mon,str.year,str.hour,str.min,str.sec,den); return ( StringFormat ( "%02d.%02d.%4d %02d:%02d:%02d %s" ,str.day,str.mon,str.year,str.hour,str.min,str.sec,den)); }
aşağıdaki sonuçları günlüğe yazdırır
MF 0 11:06:34 06/04/2010 09:06:43 5RN 0 11:06:34 06/04/2010 09:06:43 Cumartesi
Bildiğim kadarıyla 5. Gün Cuma.
Bu kodu yazdım, bir şey net değil nerede bir hata olabilir
aşağıdaki sonuçları günlüğe yazdırır
MF 0 11:06:34 06/04/2010 09:06:43 5RN 0 11:06:34 06/04/2010 09:06:43 Cumartesi
Bildiğim kadarıyla 5. Gün Cuma.
Day_of_week'in herhangi bir değeri için "Cumartesi" değerini alırsınız. Çünkü durumlar arasında break ifadesi yoktur.
2 garip şey daha
void OnTick ()
{
for ( int li= 1 ; li< 2 ; li++)
{
PrintFormat ( SymbolName (li,true));
}
}
Bir boşluk veya boşluk döndürür, ancak sembol adını değil
void OnTick ()
{
PrintFormat ( DoubleToString ( SymbolsTotal (true), 1 ));
}
En az 10 açık olsa bile 1 döndürür
Ama doğru değil yanlış koyarsanız, o zaman her şey yolunda görünüyor
Bir boşluk veya boşluk döndürür, ancak sembol adını değil
for ( int li= 0 ; li< SymbolsTotal (false); li++) { PrintFormat ( SymbolName (li,false)); }Bu nedenle, DC'deki her şeyi sıralamanız gerekirse, muhtemelen daha doğru olacaktır. yalnızca tablodaki terminalde ne varsa, false değerini true olarak değiştirin.
Yani bu ve doğru ile çalışmayan konuşma hakkında!
Yani bu ve doğru ile çalışmayan konuşma hakkında!
Çalışır, üç DC'de test edilmiştir (DC'lerde işlem gören tüm enstrümanların numaralandırılması)
for ( int li= 0 ; li< SymbolsTotal (false); li++) { PrintFormat ( SymbolName (li,false)); }
Ancak bu kod, "Piyasa İzleme" penceresinde seçilen her şeyi gözden geçirecektir.
for ( int li= 0 ; li< SymbolsTotal (true); li++) { PrintFormat ( SymbolName (li,true)); }
Sadece burada anlamadığım şey bu. OnTick'te () böyle bir arama ne yapacak?
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Test cihazını EURUSD çiftinde başlattık, her şey çalışıyor, her iki sipariş de gönderildi. Satırın yorumunu kaldırırsanız, GBPUSD siparişi açılmaz ve günlükte bir hata vardır:
2010.06.02 10:34:26 Çekirdek 1, 0.00000'de 1.00 GBPUSD anında satışta başarısız oldu [Geçersiz duraklar]
2010.06.02 10:34:26 Çekirdek 1 Sembol GBPUSD için fiyat yok
SymbolInfoTick'i kullanmayı denedim, aynı şey.
Ve bana SymbolInfoTick veya SymbolInfoDouble'ı nasıl daha doğru kullanacağımı söyleyebilir misiniz?