Kodlama yardımı - sayfa 507

 
tristantsh:
Teşekkürler mntiwana ve malden. ama neden tekrar satın almam gerekiyor? Bu göstergeleri mesaj olarak gönderebilir misiniz?

Bu göstergeyi satın aldığınızda aldığınız bağlantıyla birlikte orijinal e-postayı support@forex-tsd.com adresine gönderin ve her şey doğruysa, güncellenmiş bir sürüm alacaksınız.

 

Pekala. ancak nmc'den önceki gösterge, nmc'den sonrakinden daha ilginç görünüyor. Sadece benim hislerim mi?

 
tristantsh:
Pekala. ancak nmc'den önceki gösterge, nmc'den sonrakinden daha ilginç görünüyor. Sadece hislerim mi?

"nmc" sürümünün sonuçları, "nmc öncesi" sürüme kıyasla hiç değişmez. "nmc", "yeni metatrader uyumlu" anlamına gelir

Herşey gönlünce olsun

 

Niye ya ?

Mladen,

Lütfen bana bu ea'nın neden çalışmadığını söyleyebilir misiniz?

//----------------------- EA PARAMETRE

dış dize

Expert_Name = "---------- Bekleyen Sipariş EA v1",

Expert_Name2 = "---------- Mevcut fiyat seti için EntryLevel = 0";

dış çift

Giriş Seviyesi = 1.8600,

Mesafe = 100,

StopLoss = 50,

Kâr Al = 50,

İzleyenDurdur = 50;

dış dize

Order_Setting = "---------- Sipariş Ayarı";

dış int

Deneme Sayısı = 5,

kayma = 5,

SihirliSayı = 1234;

dış dize

MM_Parameters = "---------- Para Yönetimi";

dış çift

lot =0.01;

dış bool

MM = false, //Para Yönetimini kullan veya kullanma

AccountIsMicro = true; //Mikro Hesap kullan veya kullanma

dış int

Risk = 0; //10%

dış dize

Testing_Parameters= "---------- Geri Test Parametresi";

dış bool

Show_Settings = doğru;

//----------------------- KÜRESEL DEĞİŞKEN

statik int

Zaman Çerçevesi = 0;

sicim

TicketComment = "PendingOrderEA v2",

SonTicaret;

bool

TradeAllow = doğru,

EntryAllow = doğru;

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

//| uzman başlatma işlevi |

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

int init()

{

//----------------------- SİHİRLİ NUMARA VE BİLET YORUMU OLUŞTUR

//----------------------- KAYNAK: PENGIE

MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period());

TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period());

//-------------------------- EA AYARI ŞEKİLDE GÖSTERİN

//----------------------- KAYNAK : CODERSGURU

if(Show_Settings) subPrintDetails();

başka Yorum("");

dönüş(0);

}

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

//| uzman sıfırlama işlevi |

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

int tanım()

{

//----------------------- KULLANICI ZAMAN ÇERÇEVESİNİ DEĞİŞTİRİRKEN YENİDEN SAYIM YAPILMASINI ÖNLEYİN

//----------------------- KAYNAK : CODERSGURU

TimeFrame=Periyot();

dönüş(0);

}

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

//| |

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

int başlangıç()

{

çift

//Seviye satın al,

Satış Seviyesi;

int

cnt,

bilet,

Toplam;

//----------------------- AL ve SATIŞ FİYATINI BELİRLE

if(EntryLevel==0) EntryLevel = Teklif;

// BuyLevel = GirişSeviyesi + Mesafe*Noktası;

SellLevel = GirişSeviyesi - Mesafe*Noktası;

// if((BuyLevel-Ask)<10*Puan || (Bid-SellLevel)<10*Puan)

// {

// Comment("Geçersiz Giriş Fiyatı veya Mesafe");

// dönüş(0);

// }

//----------------------- PARA YÖNETİMİNİ KULLANIYORSANIZ ÇOK AYARLAYIN

if(MM) Parti = subLotSize();

//----------------------- GİRİŞ

//----------------------- SİHİRLİ SAYI VE SEMBOL ÜZERİNE TOPLAM SİPARİŞ TABAN

toplam = altToplamTicaret();

//-------------------------- SADECE 1 KEZ SİPARİŞ VER

if(Ticaret İzni)

{

//----------------------- TİCARET YOKSA

if(toplam<1 && EntryAllow)

{

bilet = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red);

// bilet = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Puan,BuyLevel+TakeProfit*Puan,TicketComment,MagicNumber,0,Green);

EntryAllow = yanlış;

dönüş(0);

}

if(toplam==1)

{

subDeleteOrder();

TradeAllow = yanlış;

}

}

//----------------------- İZLEME DUR BÖLÜMÜ

if(TrailingStop>0 && subTotalTrade()>0)

{

toplam = SiparişlerToplam();

for(cnt=0;cnt<toplam;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SAT &&

OrderSymbol()==Symbol() &&

OrderMagicNumber()==MagicNumber)

{

subTrailingStop(OrderType());

dönüş(0);

}

}

}

dönüş(0);

}

//----------------------- PROGRAMI SONLANDIR

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

//| FONKSİYON TANIMLARI

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

//----------------------- PARA YÖNETİM FONKSİYONU

//----------------------- KAYNAK : CODERSGURU

çift altLotSize()

{

çift lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100;

if(AccountIsMicro==false) //normal hesap

{

if(lotMM < 0.1) lotMM = Lot;

if((lotMM > 0,5) && (lotMM < 1)) lotMM = 0,5;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

if(lotMM > 100) lotMM = 100;

}

başka //mikro hesap

{

if(lotMM < 0.01) lotMM = Lot;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

if(lotMM > 100) lotMM = 100;

}

dönüş (lotMM);

}

//----------------------- SEMBOL VE SİHİRLİ SAYI İŞLEVİNE GÖRE SİPARİŞ SAYISI

int altToplamTicaret()

{

int

cnt,

toplam = 0;

for(cnt=0;cnt<SiparişlerToplam();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderType()<=OP_SAT &&

OrderSymbol()==Symbol() &&

OrderMagicNumber()==MagicNumber) toplam++;

}

dönüş(toplam);

}

//----------------------- SİPARİŞ İŞLEVİNİ SİL

geçersiz subDeleteOrder()

{

int

cnt,

toplam = 0;

toplam = SiparişlerToplam();

for(cnt=toplam-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol()==Symbol() &&

OrderMagicNumber()==MagicNumber)

{

geçiş(SiparişTürü())

{

// durum OP_BUYLIMIT :

// OP_BUYSTOP durumu:

durum OP_SELLLIMIT:

durum OP_SELLSTOP :

OrderDelete(OrderTicket());

}

}

}

}

//----------------------- İZLEME DURDURMA FONKSİYONU

//----------------------- KAYNAK : CODERSGURU

//----------------------- DEĞİŞTİRİLDİ: YANGIN

void subTrailingStop(int Type)

{

if(Type==OP_BUY) // satın alma pozisyonu açıldı

{

if(Bid-OrderOpenPrice()>Point*TrailingStop &&

OrderStopLoss()<Teklif Noktası*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

dönüş(0);

}

}

if(Type==OP_SELL) // satış pozisyonu açıldı

{

if(OrderOpenPrice()-Ask>Point*TrailingStop)

{

if(OrderStopLoss()>Ask+Point*TrailingStop || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

dönüş(0);

}

}

}

}

//----------------------- SEMBOL VE ZAMAN ÇERÇEVESİ FONKSİYONUNA GÖRE SİHİRLİ SAYI TABANI OLUŞTURMA

//----------------------- KAYNAK: PENGIE

//----------------------- DEĞİŞTİRİLDİ: YANGIN

int subGenerateMagicNumber(int MagicNumber, dize sembolü, int timeFrame)

{

int sembol = 0;

if (sembol == "EURUSD") isimbol = 1;

else if (sembol == "GBPUSD") isymbol = 2;

else if (sembol == "USDJPY") isymbol = 3;

else if (sembol == "AUDCAD") isymbol = 4;

else if (sembol == "AUDUSD") isymbol = 5;

else if (sembol == "USDCAD") isimbol = 6;

else if (sembol == "EURGBP") isymbol = 7;

else if (sembol == "EURJPY") isymbol = 8;

else if (sembol == "EURCHF") isymbol = 9;

else if (sembol == "EURAUD") isymbol = 10;

else if (sembol == "EURCAD") isymbol = 11;

else if (sembol == "GBPUSD") isymbol = 12;

else if (sembol == "GBPJPY") isymbol = 13;

else if (sembol == "GBPCHF") isymbol = 14;

else if (sembol == "GBPAUD") isymbol = 15;

else if (sembol == "GBPCAD") isymbol = 16;

başka simge = 17;

if(isymbol<10) MagicNumber = MagicNumber * 10;

dönüş (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame)));

}

//----------------------- YORUM YAZDIR FONKSİYONU

//----------------------- KAYNAK : CODERSGURU

geçersiz subPrintDetails()

{

string sYorum = "";

string sp = "-------------------------------------------\n";

string NL = "\n";

sYorum = sp;

sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";

sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | ";

sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL;

sYorum = sYorum + sp;

sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ";

sComment = sComment + "MM=" + subBoolToStr(MM) + " | ";

sComment = sComment + "Risk=" + DoubleToStr(Risk,0) + "%" + NL;

sYorum = sYorum + sp;

Yorum(larYorum);

}

//----------------------- BOOLEN DEĞİŞKENİ DİZE FONKSİYONU

//----------------------- KAYNAK : CODERSGURU

dize subBoolToStr ( bool değeri)

{

if(değer) döndürme ("Doğru");

başka bir dönüş ("Yanlış");

}

//-------------------------- SON İŞLEV

Şimdiden teşekkürler.

Jo

 

mladen,

umarım iyisindir. aşağıdaki derlemede iki hata var. nazikçe yardımcı

Dosyalar:
 
candyman752:
mladen, umarım iyisindir. aşağıdaki derlemede iki hata var. nazikçe yardımcı

şeker adam752

Şimdi deneyin: rstochalert-4tf_1.mq4

Dosyalar:
 

Sevgili MLADEN,

(sorularım her zaman yardım kodlamaktan çok yardımı onarmakla ilgilidir)

anlamak için bir ricam var.....eklediğim 2 resimde bakın 1 hata ile 70 ve 72. satıra ait 2 uyarı var.... uyarı kaldırıldı......sorum şu ki...bu şekilde yapmak doğru mu....ve 80. satırın gerisinde kalan 2. uyarı ile ilgili ikinci soru...olduğu gibi bırakılırsa sorun olmaz çalışır durumda mı?

Saygılarımızla

mtivana

 
mntiwana:
Sevgili MLADEN,

(sorularım her zaman yardım kodlamaktan çok yardımı onarmakla ilgilidir)

anlamak için bir ricam var.....eklediğim 2 resimde bakın 1 hata ile 70 ve 72. satıra ait 2 uyarı var.... uyarı kaldırıldı......sorum şu ki...bu şekilde yapmak doğru mu....ve 80. satırın gerisinde kalan 2. uyarı ile ilgili ikinci soru...olduğu gibi bırakılırsa sorun olmaz çalışır durumda mı?

Saygılarımızla

mtivana

mtivana

bu şekilde her şey yolunda. değişiklikleri yaptın tamam

 
mladen:
mntiwana bu şekilde her şey yolunda. değişiklikleri yaptın tamam

Meraklı bir öğrenciyi cesaretlendirdiğiniz için çok teşekkürler büyük patron.

en iyi dileklerimle

 
Jovager:
Mladen,

Lütfen bana bu ea'nın neden çalışmadığını söyleyebilir misiniz?

//----------------------- EA PARAMETRE

dış dize

Expert_Name = "---------- Bekleyen Sipariş EA v1",

Expert_Name2 = "---------- Mevcut fiyat seti için EntryLevel = 0";

dış çift

Giriş Seviyesi = 1.8600,

Mesafe = 100,

StopLoss = 50,

Kâr Al = 50,

İzleyenDurdur = 50;

dış dize

Order_Setting = "---------- Sipariş Ayarı";

dış int

Deneme Sayısı = 5,

kayma = 5,

SihirliSayı = 1234;

dış dize

MM_Parameters = "---------- Para Yönetimi";

dış çift

lot =0.01;

dış bool

MM = false, //Para Yönetimini kullan veya kullanma

AccountIsMicro = true; //Mikro Hesap kullan veya kullanma

dış int

Risk = 0; //10%

dış dize

Testing_Parameters= "---------- Geri Test Parametresi";

dış bool

Show_Settings = doğru;

//----------------------- KÜRESEL DEĞİŞKEN

statik int

Zaman Çerçevesi = 0;

sicim

TicketComment = "PendingOrderEA v2",

SonTicaret;

bool

TradeAllow = doğru,

EntryAllow = doğru;

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

//| uzman başlatma işlevi |

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

int init()

{

//----------------------- SİHİRLİ NUMARA VE BİLET YORUMU OLUŞTUR

//----------------------- KAYNAK: PENGIE

MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period());

TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period());

//-------------------------- EA AYARI ŞEKİLDE GÖSTERİN

//----------------------- KAYNAK : CODERSGURU

if(Show_Settings) subPrintDetails();

başka Yorum("");

dönüş(0);

}

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

//| uzman sıfırlama işlevi |

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

int tanım()

{

//----------------------- KULLANICI ZAMAN ÇERÇEVESİNİ DEĞİŞTİRİRKEN YENİDEN SAYIM YAPILMASINI ÖNLEYİN

//----------------------- KAYNAK : CODERSGURU

TimeFrame=Periyot();

dönüş(0);

}

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

//| |

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

int başlangıç()

{

çift

//Seviye satın al,

Satış Seviyesi;

int

cnt,

bilet,

Toplam;

//----------------------- AL ve SATIŞ FİYATINI BELİRLE

if(EntryLevel==0) EntryLevel = Teklif;

// BuyLevel = GirişSeviyesi + Mesafe*Noktası;

SellLevel = GirişSeviyesi - Mesafe*Noktası;

// if((BuyLevel-Ask)<10*Puan || (Bid-SellLevel)<10*Puan)

// {

// Comment("Geçersiz Giriş Fiyatı veya Mesafe");

// dönüş(0);

// }

//----------------------- PARA YÖNETİMİNİ KULLANIYORSANIZ ÇOK AYARLAYIN

if(MM) Parti = subLotSize();

//----------------------- GİRİŞ

//----------------------- SİHİRLİ SAYI VE SEMBOL ÜZERİNE TOPLAM SİPARİŞ TABAN

toplam = altToplamTicaret();

//-------------------------- SADECE 1 KEZ SİPARİŞ VER

if(Ticaret İzni)

{

//----------------------- TİCARET YOKSA

if(toplam<1 && EntryAllow)

{

bilet = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red);

// bilet = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Puan,BuyLevel+TakeProfit*Puan,TicketComment,MagicNumber,0,Green);

EntryAllow = yanlış;

dönüş(0);

}

if(toplam==1)

{

subDeleteOrder();

TradeAllow = yanlış;

}

}

//----------------------- İZLEME DUR BÖLÜMÜ

if(TrailingStop>0 && subTotalTrade()>0)

{

toplam = SiparişlerToplam();

for(cnt=0;cnt<toplam;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SAT &&

OrderSymbol()==Symbol() &&

OrderMagicNumber()==MagicNumber)

{

subTrailingStop(OrderType());

dönüş(0);

}

}

}

dönüş(0);

}

//----------------------- PROGRAMI SONLANDIR

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

//| FONKSİYON TANIMLARI

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

//----------------------- PARA YÖNETİM FONKSİYONU

//----------------------- KAYNAK : CODERSGURU

çift altLotSize()

{

çift lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100;

if(AccountIsMicro==false) //normal hesap

{

if(lotMM < 0.1) lotMM = Lot;

if((lotMM > 0,5) && (lotMM < 1)) lotMM = 0,5;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

if(lotMM > 100) lotMM = 100;

}

başka //mikro hesap

{

if(lotMM < 0.01) lotMM = Lot;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

if(lotMM > 100) lotMM = 100;

}

dönüş (lotMM);

}

//----------------------- SEMBOL VE SİHİRLİ SAYI İŞLEVİNE GÖRE SİPARİŞ SAYISI

int altToplamTicaret()

{

int

cnt,

toplam = 0;

for(cnt=0;cnt<SiparişlerToplam();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderType()<=OP_SAT &&

OrderSymbol()==Symbol() &&

OrderMagicNumber()==MagicNumber) toplam++;

}

dönüş(toplam);

}

//----------------------- SİPARİŞ İŞLEVİNİ SİL

geçersiz subDeleteOrder()

{

int

cnt,

toplam = 0;

toplam = SiparişlerToplam();

for(cnt=toplam-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol()==Symbol() &&

OrderMagicNumber()==MagicNumber)

{

geçiş(SiparişTürü())

{

// durum OP_BUYLIMIT :

// OP_BUYSTOP durumu:

durum OP_SELLLIMIT:

durum OP_SELLSTOP :

OrderDelete(OrderTicket());

}

}

}

}

//----------------------- İZLEME DURDURMA FONKSİYONU

//----------------------- KAYNAK : CODERSGURU

//----------------------- DEĞİŞTİRİLDİ: YANGIN

void subTrailingStop(int Type)

{

if(Type==OP_BUY) // satın alma pozisyonu açıldı

{

if(Bid-OrderOpenPrice()>Point*TrailingStop &&

OrderStopLoss()<Teklif Noktası*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

dönüş(0);

}

}

if(Type==OP_SELL) // satış pozisyonu açıldı

{

if(OrderOpenPrice()-Ask>Point*TrailingStop)

{

if(OrderStopLoss()>Ask+Point*TrailingStop || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

dönüş(0);

}

}

}

}

//----------------------- SEMBOL VE ZAMAN ÇERÇEVESİ FONKSİYONUNA GÖRE SİHİRLİ SAYI TABANI OLUŞTURMA

//----------------------- KAYNAK: PENGIE

//----------------------- DEĞİŞTİRİLDİ: YANGIN

int subGenerateMagicNumber(int MagicNumber, dize sembolü, int timeFrame)

{

int sembol = 0;

if (sembol == "EURUSD") isimbol = 1;

else if (sembol == "GBPUSD") isymbol = 2;

else if (sembol == "USDJPY") isymbol = 3;

else if (sembol == "AUDCAD") isymbol = 4;

else if (sembol == "AUDUSD") isymbol = 5;

else if (sembol == "USDCAD") isimbol = 6;

else if (sembol == "EURGBP") isymbol = 7;

else if (sembol == "EURJPY") isymbol = 8;

else if (sembol == "EURCHF") isymbol = 9;

else if (sembol == "EURAUD") isymbol = 10;

else if (sembol == "EURCAD") isymbol = 11;

else if (sembol == "GBPUSD") isymbol = 12;

else if (sembol == "GBPJPY") isymbol = 13;

else if (sembol == "GBPCHF") isymbol = 14;

else if (sembol == "GBPAUD") isymbol = 15;

else if (sembol == "GBPCAD") isymbol = 16;

başka simge = 17;

if(isymbol<10) MagicNumber = MagicNumber * 10;

dönüş (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame)));

}

//----------------------- YORUM YAZDIR FONKSİYONU

//----------------------- KAYNAK : CODERSGURU

geçersiz subPrintDetails()

{

string sYorum = "";

string sp = "-------------------------------------------\n";

string NL = "\n";

sYorum = sp;

sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";

sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | ";

sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL;

sYorum = sYorum + sp;

sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ";

sComment = sComment + "MM=" + subBoolToStr(MM) + " | ";

sComment = sComment + "Risk=" + DoubleToStr(Risk,0) + "%" + NL;

sYorum = sYorum + sp;

Yorum(larYorum);

}

//----------------------- BOOLEN DEĞİŞKENİ DİZE FONKSİYONU

//----------------------- KAYNAK : CODERSGURU

dize subBoolToStr ( bool değeri)

{

if(değer) döndürme ("Doğru");

başka bir dönüş ("Yanlış");

}

//-------------------------- SON İŞLEV

Şimdiden teşekkürler.

Jo

Jo,

Lütfen mq4 dosyasını ekler misiniz? bu şekilde test etmek çok zor

Neden: