всokidoki543 : Teşekkürler ama kesin bir çözüm istiyorum. Böylece mevcut çubuk dikkate alınmaz, sadece önceki çubuklar dikkate alınır.
Kahretsin, başka birinin kodunu araştırdım, yine hazırlıksız, bu parçayı burada değiştirmeyi deneyin. Bu durumda, muhtemelen PRICE_CLOSE veya 0 olmalıdır...
MA1_0= iMA ( NULL , 0 , MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1 ); // Текущее значение 1-й МА
MA1_1= iMA ( NULL , 0 , MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 2 ); // Предыдущее значение 1-й МА
MA2_0= iMA ( NULL , 0 , MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1 ); // Текущее значение 2-й МА
MA2_1= iMA ( NULL , 0 , MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 2 ); // Предыдущее значение 2-й МА
İşte kod, vardiyaları 0'dan 1'e değiştirdi. Yardımcı olacak mı?
//============================================== ========================================== // // // // // //============================================== ========================================== harici int MA1_Period=7; // 1. MA Dönemi harici int MA2_Period=13; // 2. MA Dönemi harici int MA1_Yöntem=1; // MA1 hesaplama yöntemi (SMA=0,EMA=1,SMMA=2,LWMA=3) harici int MA2_Yöntem=1; // MA2 hesaplama yöntemi (SMA=0,EMA=1,SMMA=2,LWMA=3) harici int MA1_Fiyat=0; // MA1 fiyat hesaplama yöntemi harici int MA2_Fiyat=0; // MA2 fiyat hesaplama yöntemi harici int MA1_Shift=1; // Zaman kaydırma MA1 harici int MA2_Shift=1; // Zaman kaydırma MA2 harici çift Parti = 0.01; // Sabit parti dış int kayma = 0; // Piyasa emirleri için fiyat sapması int Yeni_Bar; // 0/1 Yeni bir çubuğun oluşumu gerçeği int Zaman_0; // Yeni çubuk başlangıç zamanı
int PosClose; // Geçiş Yönü int toplam; // Açık sipariş sayısı çift MA1_0; // 1. MA'nın mevcut değeri (pembe) çift MA1_1; // 1. MA'nın önceki değeri (pembe) çift MA2_0; // 2. MA'nın mevcut değeri (mavi) çift MA2_1; // 2. MA'nın önceki değeri (mavi) int siparişSatın al; // 1 = bir Satın Alma emrinin mevcut olduğu gerçeği int siparişSatış; // 1 = Satış emrinin varlığı gerçeği //============================================== ========================================== int init() {
} //============================================== ========================================== int başlangıç() {
çift fiyat;
int toplam=SiparişToplam(); // Toplam sipariş sayısı for(int i=toplam-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) // Bir sipariş seçin { if(OrderType()==OP_BUY) // Alım emri varsa { siparişSatın al=1; if(CrossPositionClose()==1) // Uygunsa siparişi kapat { // koşul CrossPositionClose()=1 fiyat=MarketInfo(Symbol(),MODE_BID); OrderClose(OrderTicket(),OrderLots(),fiyat,slippage, CLR_NONE ); } } if(OrderType()==OP_SELL) // Alım emri varsa { siparişSat=1; if(CrossPositionClose()==2) // Uygunsa siparişi kapat { // koşul CrossPositionClose()=2 fiyat=MarketInfo(Symbol(),MODE_ASK); OrderClose(OrderTicket(),OrderLots(),fiyat,slippage,CLR_NONE); } } } }
Yeni_Bar=0; // Önce sıfırla if (Time_0 != Time[0]) // Çubuk başlangıç zamanı zaten farklıysa { Yeni_Bar=1; // Ve işte yeni çubuk Zaman_0 = Zaman[0]; // Yeni bir çubuğun başlangıç zamanını hatırla }
MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 0); // 1. MA'nın mevcut değeri MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1); // 1. MA'nın önceki değeri MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 0); // 2. MA'nın mevcut değeri MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1); // 2. MA'nın önceki değeri
dönüş; }
//============================================== ========================================== int CrossPositionClose() { PozKapat=0; // Köpeğin gömülü olduğu yer burası!! :) if ((MA1_1>=MA2_0 && MA1_0<MA2_0) || (MA1_1>MA2_0 && MA1_0<=MA2_0)) // Yukarıdan Aşağı Geçiş { { PozKapat=1; } if ((MA1_1<=MA2_0 && MA1_0>MA2_0) || (MA1_1<MA2_0 && MA1_0>=MA2_0)) // Aşağıdan Yukarıya Geçiş { PozKapat=2; } dönüş(PosClose); // Çapraz yönü döndür. } //============================================== ==========================================
//============================================== ========================================== int MAYöntemi(int MA_Yöntemi) { geçiş(MA_Yöntem) { durum 0: dönüş (0); // MODE_SMA=0 döndürür durum 1: dönüş(1); // MODE_EMA=1 döndürür durum 2: dönüş(2); // MODE_SMMA=2 döndürür durum 3: dönüş(3); // MODE_LWMA=3 döndürür } } //============================================== ========================================== int MAPrice(int MA_Fiyat) { geçiş(MA_Fiyat) { durum 0: dönüş(PRICE_CLOSE); // PRICE_CLOSE=0 döndürür durum 1: iade(PRICE_OPEN); // PRICE_OPEN=1 döndürür durum 2: iade(PRICE_HIGH); // PRICE_HIGH=2 döndürür durum 3: iade(PRICE_LOW); // PRICE_LOW=3 döndürür durum 4: dönüş(PRICE_MEDIAN); // PRICE_MEDIAN=4 döndürür durum 5: iade(PRICE_TYPICAL); // PRICE_TYPICAL=5 döndürür durum 6: dönüş(PRICE_WEIGHTED); // PRICE_WEIGHTED=6 döndürür } } //============================================== ==========================================
Fare çıngırak ya da başka bir şey olursa, bir kerede bir şeyim var, forumdaki cevaplarımdan ikisi aynı anda tek tıklamayla açılıyor. O zaman tekrarı silmem gerekiyor ...... Bu arada bu yazıya bir bakacağım ....
Teşekkürler ama kesin bir çözüm istiyorum. Böylece mevcut çubuk dikkate alınmaz, sadece önceki çubuklar dikkate alınır.
Teşekkürler ama kesin bir çözüm istiyorum. Böylece mevcut çubuk dikkate alınmaz, sadece önceki çubuklar dikkate alınır.
Kahretsin, başka birinin kodunu araştırdım, yine hazırlıksız, bu parçayı burada değiştirmeyi deneyin. Bu durumda, muhtemelen PRICE_CLOSE veya 0 olmalıdır...
İşte kod, vardiyaları 0'dan 1'e değiştirdi. Yardımcı olacak mı?
//============================================== ==========================================
//
//
//
//
//
//============================================== ==========================================
harici int MA1_Period=7; // 1. MA Dönemi
harici int MA2_Period=13; // 2. MA Dönemi
harici int MA1_Yöntem=1; // MA1 hesaplama yöntemi (SMA=0,EMA=1,SMMA=2,LWMA=3)
harici int MA2_Yöntem=1; // MA2 hesaplama yöntemi (SMA=0,EMA=1,SMMA=2,LWMA=3)
harici int MA1_Fiyat=0; // MA1 fiyat hesaplama yöntemi
harici int MA2_Fiyat=0; // MA2 fiyat hesaplama yöntemi
harici int MA1_Shift=1; // Zaman kaydırma MA1
harici int MA2_Shift=1; // Zaman kaydırma MA2
harici çift Parti = 0.01; // Sabit parti
dış int kayma = 0; // Piyasa emirleri için fiyat sapması
int Yeni_Bar; // 0/1 Yeni bir çubuğun oluşumu gerçeği
int Zaman_0; // Yeni çubuk başlangıç zamanı
int PosClose; // Geçiş Yönü
int toplam; // Açık sipariş sayısı
çift MA1_0; // 1. MA'nın mevcut değeri (pembe)
çift MA1_1; // 1. MA'nın önceki değeri (pembe)
çift MA2_0; // 2. MA'nın mevcut değeri (mavi)
çift MA2_1; // 2. MA'nın önceki değeri (mavi)
int siparişSatın al; // 1 = bir Satın Alma emrinin mevcut olduğu gerçeği
int siparişSatış; // 1 = Satış emrinin varlığı gerçeği
//============================================== ==========================================
int init()
{
}
//============================================== ==========================================
int başlangıç()
{
çift fiyat;
int toplam=SiparişToplam(); // Toplam sipariş sayısı
for(int i=toplam-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) // Bir sipariş seçin
{
if(OrderType()==OP_BUY) // Alım emri varsa
{
siparişSatın al=1;
if(CrossPositionClose()==1) // Uygunsa siparişi kapat
{ // koşul CrossPositionClose()=1
fiyat=MarketInfo(Symbol(),MODE_BID);
OrderClose(OrderTicket(),OrderLots(),fiyat,slippage, CLR_NONE );
}
}
if(OrderType()==OP_SELL) // Alım emri varsa
{
siparişSat=1;
if(CrossPositionClose()==2) // Uygunsa siparişi kapat
{ // koşul CrossPositionClose()=2
fiyat=MarketInfo(Symbol(),MODE_ASK);
OrderClose(OrderTicket(),OrderLots(),fiyat,slippage,CLR_NONE);
}
}
}
}
Yeni_Bar=0; // Önce sıfırla
if (Time_0 != Time[0]) // Çubuk başlangıç zamanı zaten farklıysa
{
Yeni_Bar=1; // Ve işte yeni çubuk
Zaman_0 = Zaman[0]; // Yeni bir çubuğun başlangıç zamanını hatırla
}
MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 0); // 1. MA'nın mevcut değeri
MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1); // 1. MA'nın önceki değeri
MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 0); // 2. MA'nın mevcut değeri
MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1); // 2. MA'nın önceki değeri
dönüş;
}
//============================================== ==========================================
int CrossPositionClose()
{
PozKapat=0; // Köpeğin gömülü olduğu yer burası!! :)
if ((MA1_1>=MA2_0 && MA1_0<MA2_0) || (MA1_1>MA2_0 && MA1_0<=MA2_0)) // Yukarıdan Aşağı Geçiş {
{
PozKapat=1;
}
if ((MA1_1<=MA2_0 && MA1_0>MA2_0) || (MA1_1<MA2_0 && MA1_0>=MA2_0)) // Aşağıdan Yukarıya Geçiş
{
PozKapat=2;
}
dönüş(PosClose); // Çapraz yönü döndür.
}
//============================================== ==========================================
//============================================== ==========================================
int MAYöntemi(int MA_Yöntemi)
{
geçiş(MA_Yöntem)
{
durum 0: dönüş (0); // MODE_SMA=0 döndürür
durum 1: dönüş(1); // MODE_EMA=1 döndürür
durum 2: dönüş(2); // MODE_SMMA=2 döndürür
durum 3: dönüş(3); // MODE_LWMA=3 döndürür
}
}
//============================================== ==========================================
int MAPrice(int MA_Fiyat)
{
geçiş(MA_Fiyat)
{
durum 0: dönüş(PRICE_CLOSE); // PRICE_CLOSE=0 döndürür
durum 1: iade(PRICE_OPEN); // PRICE_OPEN=1 döndürür
durum 2: iade(PRICE_HIGH); // PRICE_HIGH=2 döndürür
durum 3: iade(PRICE_LOW); // PRICE_LOW=3 döndürür
durum 4: dönüş(PRICE_MEDIAN); // PRICE_MEDIAN=4 döndürür
durum 5: iade(PRICE_TYPICAL); // PRICE_TYPICAL=5 döndürür
durum 6: dönüş(PRICE_WEIGHTED); // PRICE_WEIGHTED=6 döndürür
}
}
//============================================== ==========================================
Sepulca, zaten denedim, derleyici yemin ediyor.
Olmaz, hemen deneyeceğim....
Sepulca, teşekkürler, kodunuz çalışıyor. Sadece ben vardiyaları içindeki yerlerine geri verdim.
Daha uzun zaman dilimlerinde kontrol edeceğim, bu kodun çalıştığından emin olmak için birkaç gün acı çekeceğim.