Kodlama yardımı - sayfa 143

 
arroganzmaschine:
Hey mladen, bir soru daha:

Karları -20'den düşükse tüm açık siparişleri nasıl kontrol edebilirim ve sonra kapatabilirim?

Bunun gibi bir şey mi?

//int currentTicket;

for(int i0=SiparişlerToplam()-1; i0>=0; i0--) {

//currentTicket = OrderSelect(i0, SELECT_BY_POS, MODE_TRADES);

if(OrderProfit() <= -20) {

OrderClose(OrderTicket(),OrderLots(),0,0, CLR_NONE);

}

}

kibirli makine

Evet, bunu yapmalı.

Sadece karı kontrol ettiğiniz satırı şu şekilde değiştirebilirsiniz:

if ((OrderProfit()+OrderSwap()+OrderCommission()) <= -20)

kontrol ettiğinizin "saf" bir kâr olduğundan emin olmak için

 

OrderClose'da bir Teklif belirlemeli miyim veya Sormalı mıyım? Yoksa çizgi doğru mu?

 

Hm, yanlış bir şey var. Geriye dönük test , eksi kârda olan emirleri kapatmaz. Test sonunda -230 kârlı açık emirler vardır.

 

int başlangıç()

{

for(int i0=SiparişlerToplam()-1; i0>=0; i0--) {

if((OrderProfit()+OrderSwap()+OrderCommission()) <= -20) {

OrderClose(OrderTicket(),OrderLots(),0,0, CLR_NONE );

}

}

}

Bu işe yaramaz.

 
arroganzmaschine:
int başlangıç()

{

for(int i0=SiparişlerToplam()-1; i0>=0; i0--) {

if((OrderProfit()+OrderSwap()+OrderCommission()) <= -20) {

OrderClose(OrderTicket(),OrderLots(),0,0, CLR_NONE);

}

}

}

Bu işe yaramaz.

OrderSelect()'i unuttunuz (bununla herhangi bir şey yapmadan önce her zaman siparişi seçmeniz gerekir). Ayrıca ne tür bir sipariş kapatmaya çalıştığınızı kontrol eden kısmı eklemek iyi bir fikir olacaktır.

Bunun gibi bir şey:

for(int i0=OrdersTotal()-1; i0>=0; i0--) {

if (OrderSelect(u0,SELECT_BY_POS,MODE_TRADES))

if((OrderProfit()+OrderSwap()+OrderCommission()) <= -20)

{

if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);

if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,0,CLR_NONE);

}

 

Biri bana TrendHistogram göstergesinde histogramı çubuklara dönüştürmede yardımcı olabilir mi? Ekli TrendFilter göstergesindekilerle aynı çubukları almak istiyorum

TrendHistogram'ın doğru çalışması için EMA_Adaptive göstergesine ihtiyacı var

 
freakout:
Biri bana TrendHistogram göstergesinde histogramı çubuklara dönüştürmede yardımcı olabilir mi? Ekli TrendFilter göstergesindekilerle aynı çubukları almak istiyorum TrendHistogram'ın doğru çalışması için EMA_Adaptive göstergesine ihtiyacı var

çılgın

Hadi bakalım

DrawAsBars'ı true olarak ayarlayın, tanımladığınız şekilde çizecektir. Bu parametreyi false olarak bırakırsanız, orijinal olarak çalışacaktır.

Dosyalar:
 

Merhaba,

Herhangi biri bu kodu düzenlememe yardımcı olabilir mi ?

//+------------------------------------------- -------------------+

//| Hans123Trader v1 |

//+------------------------------------------- -------------------+

#Dahil etmek

# mülkiyet telif hakkı "hans123"

#özellik bağlantısı ""

// fukinagashi tarafından programlandı

extern int BeginSession1=6; (backtest sırasında tüm oturumlar için 0'ı düzenleyip ayarladım, böylece nihai sonuçlar aldım)

harici int EndSession1=10;

harici int BeginSession2=10;

harici int EndSession2=14;

harici çift TrailingStop = 0;

harici çift TakeProfit = 452;

harici çift InitialStopLoss=40;

çift Lot = 0.1;

tarihsaat bar zamanı = 0;

çift Kayma=3;

//+------------------------------------------- -------------------+

//| |

//+------------------------------------------- -------------------+

int başlangıç()

{

int cnt, bilet, hata, i, j, cmd;

int MagicNumber;

double ts, tp, En Düşük Fiyat, En Yüksek Fiyat, Fiyat;

bool Sıra[5];

dizi kurulumu;

tarihsaat Geçerlilik=0;

if(IsTesting() && Çubuklar<100) return(0);

MagicNumber = 50000 + func_Symbol2Val(Symbol())*100;

setup="H123_" + Sembol();

if (bartime == Zaman[0]) {

dönüş(0);

} başka {

bar zamanı = Zaman[0];

}

///////////////////////////////////////////// ///////////////////////////////////////////// ////////////////

///////////////// AÇIK SİPARİŞLERDE DEĞİŞİKLİKLER ////////////////////////// //////////////////////////////////

///////////////////////////////////////////// ///////////////////////////////////////////// ////////////////

for(cnt=OrdersTotal();cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && (OrderMagicNumber()==MagicNumber+1 || OrderMagicNumber()==MagicNumber+3)) {

if(TimeDay(OrderOpenTime())!=TimeDay(Time[0])) {

Yazdır(".");

OrderClose(OrderTicket(), Lot, Bid, 3, Red);

if (err>1) { Print("Satın alma emri [" + kurulum + "] kapatılırken hata oluştu: (" + hata + ") " + ErrorDescription(err)); }

} else if (OrderStopLoss()==0) {

if (TakeProfit>0) { tp=OrderOpenPrice()+TakeProfit*Puan;

} başka { tp=0; }

if (InitialStopLoss>0) { ts=OrderOpenPrice()-InitialStopLoss*Point;

} başka { ts=0; }

OrderModify(OrderTicket(),OrderOpenPrice(),ts,tp,0,Beyaz);

if (err>1) { Print("Satın alma emrini değiştirirken hata [" + kurulum + "]: (" + err + ") " + ErrorDescription(err)); }

} else if (TrailingStop>0) {

ts = Teklif Noktası*Sondaki Durdurma;

if (OrderStopLoss()0) OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,Beyaz);

}

} else if(OrderType()==OP_SELL && (OrderMagicNumber()==MagicNumber+2 || OrderMagicNumber()==MagicNumber+4)) {

if(TimeDay(OrderOpenTime())!=TimeDay(Time[0])) {

Yazdır(".");

OrderClose(OrderTicket(), Çok, Sor, 3, Kırmızı);

if (err>1) { Print("Satış emri [" + kurulum + "] kapatılırken hata oluştu: (" + err + ") " + ErrorDescription(err)); }

} else if (OrderStopLoss()==0) {

if (TakeProfit>0) { tp=OrderOpenPrice()-TakeProfit*Puan;

} başka { tp=0; }

if (InitialStopLoss>0) { ts=OrderOpenPrice()+InitialStopLoss*Point;

} başka { ts=0; }

OrderModify(OrderTicket(),OrderOpenPrice(),ts,tp,0,Beyaz);

if (err>1) { Print("Satış emrini değiştirirken hata [" + kurulum + "]: (" + err + ") " + ErrorDescription(err)); }

} else if (TrailingStop>0) {

ts = Sor+Point*TrailingStop;

if (OrderStopLoss()>ts && OrderProfit()>0) OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,Beyaz);

}

}

}

///////////////////////////////////////////// ///////////////////////////////////////////// ////////////////

///////////////// SİPARİŞ AYARLAMA //////////////////////////// /////////////////////////////////

///////////////////////////////////////////// ///////////////////////////////////////////// ////////////////

if(AccountFreeMargin()<(1000*Lots)) return(0);

Validity=StrToTime(TimeYear(Time[0]) + "." + TimeMonth(Time[0]) + "." + TimeDay(Time[0]) + " 23:59");

if (TimeHour(Time[0])==EndSession1 && TimeMinute(Time[0])==0) {

En DüşükFiyat=Düşük[En Düşük(BOŞ, PERIOD_M5, MODE_LOW, 80, 0)];

En YüksekFiyat=Yüksek;

//// Alış/Satış'a çok yakın bir AL/SAT/DURDUR Fiyatından kaçınmak için aşağıdakiler gereklidir,

//// bu durumda 130 geçersiz durak alırız.

//// Uygun OP_BUY ve OP_SELL olarak değiştirmeyi denedim, ancak sonuçlar tatmin edici değil

//if (En YüksekFiyat+5*Puan<Sor+Spread*Puan) {

// cmd=OP_BUY;

// Fiyat=Sor;

//} başka {

cmd=OP_BUYSTOP;

Fiyat=En YüksekFiyat+5*Puan;

//}

bilet=OrderSendExtended(Symbol(),cmd,Lots,Price,Slippage,0,0,setup,MagicNumber+1,Validity,Green);

hata = GetLastError();

if (err>1) { Print("Satış emrini değiştirirken hata [" + kurulum + "]: (" + err + ") " + ErrorDescription(err)); }

//if (En DüşükFiyat-5*Puan>Teklif Yayılımı*Puan) {

// cmd=OP_SEL;

// Fiyat=Teklif;

//} başka {

cmd=OP_SELLSTOP;

Fiyat=En DüşükFiyat-5*Puan;

//}

bilet=OrderSendExtended(Symbol(),OP_SELLSTOP,Lots,Fiyat,Slippage,0,0,setup,MagicNumber+2,Geçerlilik,Yeşil);

hata = GetLastError();

if (err>1) { Print("Satış emrini değiştirirken hata [" + kurulum + "]: (" + err + ") " + ErrorDescription(err)); }

}

if (TimeHour(Time[0])==EndSession2 && TimeMinute(Time[0])==0) {

En DüşükFiyat=Düşük[En Düşük(BOŞ, PERIOD_M5, MODE_LOW, 80, 0)];

En YüksekFiyat=Yüksek;

//if (En YüksekFiyat+5*Puan<Sor+Spread*Puan) {

// cmd=OP_BUY;

// Fiyat=Sor;

//} başka {

cmd=OP_BUYSTOP;

Fiyat=En YüksekFiyat+5*Puan;

//}

bilet=OrderSendExtended(Symbol(),cmd,Lots,Price,Slippage,0,0,setup,MagicNumber+3,Geçerlilik,Yeşil);

hata = GetLastError();

if (err>1) { Print("Satış emrini değiştirirken hata [" + kurulum + "]: (" + err + ") " + ErrorDescription(err)); }

//if (En DüşükFiyat-5*Puan>Teklif Yayılımı*Puan) {

// cmd=OP_SEL;

// Fiyat=Teklif;

//} başka {

cmd=OP_SELLSTOP;

Fiyat=En DüşükFiyat-5*Puan;

//}

bilet=OrderSendExtended(Symbol(),cmd,Lots,Price,Slippage,0,0,setup,MagicNumber+4,Validity,Green);

hata = GetLastError();

if (err>1) { Print("Satış emrini değiştirirken hata [" + kurulum + "]: (" + err + ") " + ErrorDescription(err)); }

}

}

///////////////////////////////////////////// ///////////////////////////////////////////// ////////////////

///////////////// ÇEŞİTLİ ALT YÖNTEMLER //////////////////////////// /////////////////////////////////////////

///////////////////////////////////////////// ///////////////////////////////////////////// ////////////////

int func_Symbol2Val(dize sembolü) {

if(symbol=="AUDUSD") { return(01);

} else if(symbol=="CHFJPY") { return(10);

} else if(symbol=="EURAUD") { dönüş(10);

} else if(symbol=="EURCAD") { dönüş(11);

} else if(symbol=="EURCHF") { dönüş(12);

} else if(symbol=="EURGBP") { return(13);

} else if(symbol=="EURJPY") { return(14);

} else if(symbol=="EURUSDm") { dönüş(15);

} else if(symbol=="GBPCHF") { return(20);

} else if(symbol=="GBPJPY") { return(21);

} else if(symbol=="GBPUSD") { return(22);

} else if(symbol=="USDCAD") { return(40);

} else if(symbol=="USDCHF") { return(41);

} else if(symbol=="USDJPY") { return(42);

} else if(symbol=="ALTIN") { return(90);

} else { Comment("beklenmeyen Sembol"); dönüş(0);

}

}

int OrderSendExtended(dize sembolü, int cmd, çift hacim, çift fiyat, int kayma, çift stoploss, çift kâr alma, dize yorumu, int magic, datetime son kullanma=0, color arrow_color=CLR_NONE) {

tarihsaat OldCurTime;

int zaman aşımı=30;

int bileti;

OldCurTime=CurTime();

while (GlobalVariableCheck("InTrade") && !IsTradeAllowed()) {

if(OldCurTime+timeout<=CurTime()) {

Print("OrderSendExtended()'de Hata: Zamanaşımı ile karşılaşıldı");

dönüş(0);

}

Uyku(1000);

}

GlobalVariableSet("InTrade", CurTime()); // kilit göstergesini ayarla

bilet = OrderSend(sembol, cmd, hacim, fiyat, kayma, stoploss, kâr alma, yorum, büyü, sona erme, ok_renk);

GlobalVariableDel("InTrade"); // kilit göstergesini temizle

bilet iadesi);

}

 
ccd:
Merhaba,

Herhangi biri bu kodu düzenlememe yardımcı olabilir mi? Geriye dönük testler iyidir ancak EA Demo / Gerçek Hesap üzerinde çalışmıyor.

//+------------------------------------------- -------------------+

//| Hans123Trader v1 |

//+------------------------------------------- -------------------+

#Dahil etmek

# mülkiyet telif hakkı "hans123"

#özellik bağlantısı ""

// fukinagashi tarafından programlandı

extern int BeginSession1=6; (backtest sırasında tüm oturumlar için 0'ı düzenleyip ayarladım, böylece nihai sonuçlar aldım)

harici int EndSession1=10;

harici int BeginSession2=10;

harici int EndSession2=14;

harici çift TrailingStop = 0;

harici çift TakeProfit = 452;

harici çift InitialStopLoss=40;

çift Lot = 0.1;

tarihsaat bar zamanı = 0;

çift Kayma=3;

//+------------------------------------------- -------------------+

//| |

//+------------------------------------------- -------------------+

int başlangıç()

{

int cnt, bilet, hata, i, j, cmd;

int MagicNumber;

double ts, tp, En Düşük Fiyat, En Yüksek Fiyat, Fiyat;

bool Sıra[5];

dizi kurulumu;

tarihsaat Geçerlilik=0;

if(IsTesting() && Çubuklar<100) return(0);

MagicNumber = 50000 + func_Symbol2Val(Symbol())*100;

setup="H123_" + Sembol();

if (bartime == Zaman[0]) {

dönüş(0);

} başka {

bar zamanı = Zaman[0];

}

///////////////////////////////////////////// ///////////////////////////////////////////// ////////////////

///////////////// AÇIK SİPARİŞLERDE DEĞİŞİKLİKLER ////////////////////////// //////////////////////////////////

///////////////////////////////////////////// ///////////////////////////////////////////// ////////////////

for(cnt=OrdersTotal();cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && (OrderMagicNumber()==MagicNumber+1 || OrderMagicNumber()==MagicNumber+3)) {

if(TimeDay(OrderOpenTime())!=TimeDay(Time[0])) {

Yazdır(".");

OrderClose(OrderTicket(), Lot, Bid, 3, Red);

if (err>1) { Print("Satın alma emri [" + kurulum + "] kapatılırken hata oluştu: (" + hata + ") " + ErrorDescription(err)); }

} else if (OrderStopLoss()==0) {

if (TakeProfit>0) { tp=OrderOpenPrice()+TakeProfit*Puan;

} başka { tp=0; }

if (InitialStopLoss>0) { ts=OrderOpenPrice()-InitialStopLoss*Point;

} başka { ts=0; }

OrderModify(OrderTicket(),OrderOpenPrice(),ts,tp,0,Beyaz);

if (err>1) { Print("Satın alma emrini değiştirirken hata [" + kurulum + "]: (" + err + ") " + ErrorDescription(err)); }

} else if (TrailingStop>0) {

ts = Teklif Noktası*Sondaki Durdurma;

if (OrderStopLoss()0) OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,Beyaz);

}

} else if(OrderType()==OP_SELL && (OrderMagicNumber()==MagicNumber+2 || OrderMagicNumber()==MagicNumber+4)) {

if(TimeDay(OrderOpenTime())!=TimeDay(Time[0])) {

Yazdır(".");

OrderClose(OrderTicket(), Çok, Sor, 3, Kırmızı);

if (err>1) { Print("Satış emri [" + kurulum + "] kapatılırken hata oluştu: (" + err + ") " + ErrorDescription(err)); }

} else if (OrderStopLoss()==0) {

if (TakeProfit>0) { tp=OrderOpenPrice()-TakeProfit*Puan;

} başka { tp=0; }

if (InitialStopLoss>0) { ts=OrderOpenPrice()+InitialStopLoss*Point;

} başka { ts=0; }

OrderModify(OrderTicket(),OrderOpenPrice(),ts,tp,0,Beyaz);

if (err>1) { Print("Satış emrini değiştirirken hata [" + kurulum + "]: (" + err + ") " + ErrorDescription(err)); }

} else if (TrailingStop>0) {

ts = Sor+Point*TrailingStop;

if (OrderStopLoss()>ts && OrderProfit()>0) OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,Beyaz);

}

}

}

///////////////////////////////////////////// ///////////////////////////////////////////// ////////////////

///////////////// SİPARİŞ AYARLAMA //////////////////////////// /////////////////////////////////

///////////////////////////////////////////// ///////////////////////////////////////////// ////////////////

if(AccountFreeMargin()<(1000*Lots)) return(0);

Validity=StrToTime(TimeYear(Time[0]) + "." + TimeMonth(Time[0]) + "." + TimeDay(Time[0]) + " 23:59");

if (TimeHour(Time[0])==EndSession1 && TimeMinute(Time[0])==0) {

En DüşükFiyat=Düşük[En Düşük(BOŞ, PERIOD_M5, MODE_LOW, 80, 0)];

En YüksekFiyat=Yüksek;

//// Alış/Satış'a çok yakın bir AL/SAT/DURDUR Fiyatından kaçınmak için aşağıdakiler gereklidir,

//// bu durumda 130 geçersiz durak alırız.

//// Uygun OP_BUY ve OP_SELL olarak değiştirmeyi denedim, ancak sonuçlar tatmin edici değil

//if (En YüksekFiyat+5*Puan<Sor+Spread*Puan) {

// cmd=OP_BUY;

// Fiyat=Sor;

//} başka {

cmd=OP_BUYSTOP;

Fiyat=En YüksekFiyat+5*Puan;

//}

bilet=OrderSendExtended(Symbol(),cmd,Lots,Price,Slippage,0,0,setup,MagicNumber+1,Validity,Green);

hata = GetLastError();

if (err>1) { Print("Satış emrini değiştirirken hata [" + kurulum + "]: (" + err + ") " + ErrorDescription(err)); }

//if (En DüşükFiyat-5*Puan>Teklif Yayılımı*Puan) {

// cmd=OP_SEL;

// Fiyat=Teklif;

//} başka {

cmd=OP_SELLSTOP;

Fiyat=En DüşükFiyat-5*Puan;

//}

bilet=OrderSendExtended(Symbol(),OP_SELLSTOP,Lots,Fiyat,Slippage,0,0,setup,MagicNumber+2,Geçerlilik,Yeşil);

hata = GetLastError();

if (err>1) { Print("Satış emrini değiştirirken hata [" + kurulum + "]: (" + err + ") " + ErrorDescription(err)); }

}

if (TimeHour(Time[0])==EndSession2 && TimeMinute(Time[0])==0) {

En DüşükFiyat=Düşük[En Düşük(BOŞ, PERIOD_M5, MODE_LOW, 80, 0)];

En YüksekFiyat=Yüksek;

//if (En YüksekFiyat+5*Puan<Sor+Spread*Puan) {

// cmd=OP_BUY;

// Fiyat=Sor;

//} başka {

cmd=OP_BUYSTOP;

Fiyat=En YüksekFiyat+5*Puan;

//}

bilet=OrderSendExtended(Symbol(),cmd,Lots,Price,Slippage,0,0,setup,MagicNumber+3,Geçerlilik,Yeşil);

hata = GetLastError();

if (err>1) { Print("Satış emrini değiştirirken hata [" + kurulum + "]: (" + err + ") " + ErrorDescription(err)); }

//if (En DüşükFiyat-5*Puan>Teklif Yayılımı*Puan) {

// cmd=OP_SEL;

// Fiyat=Teklif;

//} başka {

cmd=OP_SELLSTOP;

Fiyat=En DüşükFiyat-5*Puan;

//}

bilet=OrderSendExtended(Symbol(),cmd,Lots,Price,Slippage,0,0,setup,MagicNumber+4,Validity,Green);

hata = GetLastError();

if (err>1) { Print("Satış emrini değiştirirken hata [" + kurulum + "]: (" + err + ") " + ErrorDescription(err)); }

}

}

///////////////////////////////////////////// ///////////////////////////////////////////// ////////////////

///////////////// ÇEŞİTLİ ALT YÖNTEMLER //////////////////////////// /////////////////////////////////////////

///////////////////////////////////////////// ///////////////////////////////////////////// ////////////////

int func_Symbol2Val(dize sembolü) {

if(symbol=="AUDUSD") { return(01);

} else if(symbol=="CHFJPY") { return(10);

} else if(symbol=="EURAUD") { dönüş(10);

} else if(symbol=="EURCAD") { dönüş(11);

} else if(symbol=="EURCHF") { dönüş(12);

} else if(symbol=="EURGBP") { return(13);

} else if(symbol=="EURJPY") { return(14);

} else if(symbol=="EURUSDm") { dönüş(15);

} else if(symbol=="GBPCHF") { return(20);

} else if(symbol=="GBPJPY") { return(21);

} else if(symbol=="GBPUSD") { return(22);

} else if(symbol=="USDCAD") { return(40);

} else if(symbol=="USDCHF") { return(41);

} else if(symbol=="USDJPY") { return(42);

} else if(symbol=="ALTIN") { return(90);

} else { Comment("beklenmeyen Sembol"); dönüş(0);

}

}

int OrderSendExtended(dize sembolü, int cmd, çift hacim, çift fiyat, int kayma, çift stoploss, çift kâr alma, dize yorumu, int magic, datetime son kullanma=0, color arrow_color=CLR_NONE) {

tarihsaat OldCurTime;

int zaman aşımı=30;

int bileti;

OldCurTime=CurTime();

while (GlobalVariableCheck("InTrade") && !IsTradeAllowed()) {

if(OldCurTime+timeout<=CurTime()) {

Print("OrderSendExtended()'de Hata: Zamanaşımı ile karşılaşıldı");

dönüş(0);

}

Uyku(1000);

}

GlobalVariableSet("InTrade", CurTime()); // kilit göstergesini ayarla

bilet = OrderSend(sembol, cmd, hacim, fiyat, kayma, stoploss, kâr alma, yorum, büyü, sona erme, ok_renk);

GlobalVariableDel("Ticaret İçi"); // kilit göstergesini temizle

bilet iadesi);

}

Canlı bir hesapta InitialStopLoss'u 10 ile çarpmayı deneyin. Bu EA, 4 haneli brokerler için yazılmıştır.

______________________

Not : Tutarlı olması ve pip olması için TakeProfit'i 10 ile de çarpmalısınız, ancak bu sayılarla test ettiyseniz, geriye dönük testle aynı sonuçları alamazsınız (çünkü geriye doğru test, değerleri kullanmanıza izin verir). ne demo hesabın ne de canlı hesabın size izin vermeyeceği bu ikisi için)

 
mladen:
zigflip Son iki psar "son üst/alt psar çifti" veya "son 2 çubuk"taki gibi mi?

geç cevap verdiğim için özür dilerim mladen, e-posta aboneliğim olduğunu sanıyordum ama...

Son psars çiftini kastediyorum!

Ben esas olarak son psarı izlemek istiyorum ama üst/alt değişiklik meydana geldiğinde son iki seviyeye ihtiyaç duyacak, hmm belki x çubuklar geri olmalı… bu, ilk yeni yön psar'ın gelişinde son değişime kadar kırpılır!

Bu konuda yardım için teşekkür ederiz,

Neden: