[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 214

 

Tünaydın. Sipariş açıldığında çubuk sayısını döndürmesi gereken bir fonksiyon yazdım:

int BarLastOpenPose()
{
tarihsaat t;
(int i=0; i<SiparişToplam(); i++) için
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
(OrderSymbol()!=Symbol()) devam ederse;
(OrderType()>1) devam ederse;
if (t<OrderOpenPrice()) t=OrderOpenPrice();
}
}

dönüş (iBarShift(Symbol(),Period(),t,true));
}

Ancak, her zaman -1 döndürür. Nerede hata yaptım? Şimdiden teşekkürler.

 
first_may :

Tünaydın. Bir sipariş açıldığında çubuk sayısını döndürmesi gereken bir fonksiyon yazdım:

int BarLastOpenPose()
{
tarihsaat t;
(int i=0; i<SiparişToplam(); i++) için
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
(OrderSymbol()!=Symbol()) devam ederse;
(OrderType()>1) devam ederse;
if (t<OrderOpenPrice()) t=OrderOpenPrice();
}
}

dönüş (iBarShift(Symbol(),Period(),t,true));
}

Ancak, her zaman -1 döndürür. Nerede hata yaptım? Şimdiden teşekkürler.

Belki bu yüzden:

dönüş ( iBarShift (Symbol(),Period(),t)); yani gerçek olmadan.

 
first_may :

Tünaydın. Bir sipariş açıldığında çubuk sayısını döndürmesi gereken bir fonksiyon yazdım:

int BarLastOpenPose()
{
tarihsaat t;
(int i=0; i<SiparişlerToplam(); i++) için
{
if (Sipariş Seçimi(i,SELECT_BY_POS,MODE_TRADES))
{
(OrderSymbol()!=Symbol()) devam ederse;
(OrderType()>1) devam ederse;
if (t<OrderOpenPrice()) t=OrderOpenPrice();
}
}

dönüş (iBarShift(Symbol(),Period(),t,true));
}

Ancak, her zaman -1 döndürür. Nerede hata yaptım? Şimdiden teşekkürler.

Bir tamsayı olarak bildirilmesine rağmen, t değişkenine açılış fiyatı atanır.

 
Vinin :

Bir tamsayı olarak bildirilmesine rağmen, t değişkenine açılış fiyatı atanır.

Aynen, OrderOpenTime() yazmak istedim ama OrderOpenPrice() yazdım;
 
Teşekkürler, hatamı anladım.
 

Böyle bir durum nasıl tarif edilir?



avatar
on üç
4 absinth 25.09.2011 19:23

Lütfen bana söyle.

Geçerli günün ilk 5 dakikalık çubuğunun ekstremumu (örneğin, yüksek) o günün ekstremumuyla (günlük) çakışıyorsa, o zaman bir şeyler yaparız. Bu nasıl tarif edilir?


Anlaşıldı 25.09.2011 20:25 düzenle | silmek
if(MathAbs(Yüksek[1]-iYüksek(NULL,PERIOD_D1,0))<Nokta)
 

iyi insanlara yardım et!!!



avatar
1
sarkık 25.09.2011 19:34

Merhaba sevgili kaynak kullanıcıları!

Bir dosyaya gerçek bir sayı okumak / yazmakla karşılaşanlar lütfen yardım edin.

Görev, bakiyeyi dosyadan okumak, mevcut bakiye daha büyükse dosyanın üzerine yazmaktır.

Sorun, her zaman 0 (sıfır) vermesidir.

Tamsayıları yazarken/okurken böyle bir sorun bulamadım.

İşte kod:

çift denge;

int dosya_handle_bala;

file_handle_bala=FileOpen("file_bala.dat",FILE_BIN|FILE_READ);
//-boş bir dosya olması durumunda konumu kopyala - konum = 0
if (FileSize(file_handle_bala)>0)
{
denge=FileReadDouble(file_handle_bala,DOUBLE_VALUE);
uyarı(denge); ------------------------------------- İşte sıfırların gittiği yer orası, yazmam gerekse de daha önce kaydedilen bakiye
FileClose(file_handle_bala);
if (AccountBalance()>balance) ------------------------------ ve herhangi bir nedenle bu kural tetiklenmez çünkü uyarı aşağıda hiçbir şey göstermiyor
{
file_handle_bala=FileOpen("file_bala.dat",FILE_BIN|FILE_WRITE);
bakiye=HesapDenge();
uyarı(denge);
FileWriteInteger(file_handle_bala,denge,DOUBLE_VALUE);
FileClose(file_handle_bala);
}
}
else // dosya boşsa
{
FileClose(file_handle_bala); // önce açık dosyayı kapat
file_handle_bala=FileOpen("file_bala.dat",FILE_BIN|FILE_WRITE); // yazmak için aç
bakiye=HesapDenge();
FileWriteDouble(file_handle_bala,denge,DOUBLE_VALUE);
FileClose(file_handle_bala);
}

Herkese şimdiden çok teşekkürler!!!


avatar
2222
Anlaşıldı 25.09.2011 20:22

Bu satıra dikkat

FileWriteInteger(file_handle_bala,denge,DOUBLE_VALUE);


3461
Zhunko 25.09.2011 20:27

1. Kodu daha saygılı ve dostça yayınlamak gerekir.

2. 8 baytlık bir tamsayı yazmaya çalışmak. MQL4'te böyle bir veri türü yoktur.

 

\Neyi yanlış yaptım? Neden bu kadar çok hata var? (Maksimum değeri bulmamız gerekiyor son 10 bar için gösterge değeri). şimdiden teşekkürler.

 

Hepinize iyi günler!

İlk botumu yazıyorum ve aynı zamanda MQL dili ile tanışıyorum. Test sırasında aşağıdaki sorun oluştu:

OP_BUYSTOP emri verildikten hemen sonra tetiklenir, ancak grafiğe bakılırsa fiyat hedef değere ulaşmıyor (aşağıya bakınız)

Numara. Zaman Tip Sipariş Ses Fiyat S/L T/P Kâr Denge
1 2011.09.19 02:10 dur satın al 1 0.01 76.935 76.735 77.135
2 2011.09.19 02:10 satın almak 1 0.01 76.935 76.735 77.135

USD/JPY,M5 (görsel)

Tarih 2011.09.19

Zaman 02:15

açık 76.903

yüksek 76.909

düşük 76.890

kapat 76.890

Ses 66

Tüm keneleri test ediyorum.

Belki de OP_BUYSTOP siparişini yanlış anlıyorum? Fiyat belli bir değeri aşarsa satın alın, değil mi?

Sipariş veren bir kaynak kod parçası

int bilet=SiparişGönder(Sembre, OP_BUYSTOP, Parti, Fiyat, 0, SL, TP);

Herkese şimdiden çok teşekkürler!

 
Shniperson :

\Neyi yanlış yaptım? Neden bu kadar çok hata var? (Maksimum değeri bulmamız gerekiyor son 10 bar için gösterge değeri). şimdiden teşekkürler.

Bir Merhaba işlevi bildirirsiniz:

 double Hi( int pos= 0 )
start() fonksiyonunun içinde