MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 300

 
buyanov :

ama hiçbir şey değişmedi.

Hem hata hem de uyarı kalır.

BÜTÜN kodunu veriyorsunuz, bir parça değil. Ne, herkes tahmin etmek zorunda mı? O zaman buradan sor - buradaki herkes her şeyi bir anda biliyor .

 

TÜM kodu veriyorum.

Automated Trading and Strategy Testing
Automated Trading and Strategy Testing
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 
buyanov :

TÜM kodu veriyorum.

Sadece çok büyük...

 

Tüm kod

"

#property telif hakkı "Telif Hakkı 2017, MetaQuotes Software Corp."

#özellik sürümü "Cross20170703 1.00"


//============================================== ========================

harici int Period_FastMA=4;

harici int Period_SlowMA=8;


harici int MaxTickNum=30;

harici int MaxAttempt=10;

harici int k_slippage=1;


dış çift k_SL=10.0;//*Nokta()

dış çift k_TP=30.0;//*Nokta()


harici çift TrailDist=30.0;//*Point()

dış çift k_lots=0.3;

extern bool ExFin=yanlış;



int//******************************************************* ***** *****************************************


res,

saymak,

ben,

SonrakiTick=0,

zaman,

son zaman,

BegMlSecTime,

EndMlSecTime,

Delta zamanı,

Teşebbüs,

kayma=5,

TikNum=0,

konum,

bilet,

maksimumAralık1000,

ÇaprazSayı=0,

komik = 4

dikkat

teşebbüs,



hata;



çift //******************************************************* ***** ************************************


Toplam,

çok,

yayılmış,


oruç,

yavaşMA,


delta,


son delta,

ÖncekiDelta,


Komik = 0.00004,

açık fiyat,

yakın fiyat,

SL,

TP,


kâr,

KÂR;


bool//************************************************************ **********************************************************


FirstCross=yanlış,

SonrakiÇapraz=yanlış,

CurType,

başarı=doğru

etkinleştir=doğru,


BegUp,

BegDn,

BuyOpened=yanlış,

SellOpened=yanlış;


sicim//*********************************************** ******************************************************* *


kayıt

sokak,

kayıt,

BegTimeMevcut,

BitişZamanıMevcut,

KörZaman,

StrCur,

dize beg,

StringEnd;

//******************************************************* ********************************************************** ******** ******


//============================================== ================================================== =============================

//============================================== ================================================== ==============================

//============================================== ================================================== ==============================




//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>>>>>>>>>

//------------------------------------------------ -------------------------------------------------- --------------------------


//============================================== ================================================== ==========================


int OnDeinit(const int res)

{

Alert("OnDeinit()'e yalvarın");

err=StringToInteger((string)err);

dönüş(ler);

Alert("OnDeinit()'i sonlandır");

}

//OnDeinit();-----------

//------------------------------------------------ -------------------------------------------------- --------------------------




//============================================== ================================================== ===========================

geçersiz ExpertStop()

{

Alert("Uzman Durdurma");

if((ExFin==true)&&(TickNum==MaxTickNum))

{

ExpertRemove();

OnDeinit(res);

}

} // ExpertStop'u sonlandır


//------------------------------------------------ -------------------------------------------------- ---------------------------



//============================================== ================================================== =======================

int Hata Açıklaması()

{

Alert("ErrorDescription beg");

geçiş(hata)

{ case 0: err="Hata yok"; kırmak;

durum 1: err="Hata yok, ancak sonuç bilinmiyor"; kırmak;

durum 2: err="Genel hata"; kırmak;

durum 3: err="Geçersiz parametreler"; kırmak;

durum 4: err="Ticaret sunucusu meşgul"; kırmak;

durum 5: err="İstemci terminalinin eski sürümü"; kırmak;

durum 6: err="Ticaret sunucusuna bağlantı yok"; kırmak;

durum 7: err="Yetersiz haklar"; kırmak;

case 8: err="Talepler çok sık"; kırmak;

durum 9: err="Sunucuyu bozan yasadışı işlem"; kırmak;

durum 64: err="Hesap bloke edildi"; kırmak;

durum 65: err="Yanlış hesap numarası"; kırmak;

case 128: err="Anlaşma zaman aşımı süresi doldu"; kırmak;

durum 129: err="Yanlış fiyat"; kırmak;

durum 130: err="Yanlış duraklar"; kırmak;

durum 131: err="Yanlış birim"; kırmak;

durum 132: err="Piyasa Kapandı"; kırmak;

case 133: err="Ticaret yasak"; kırmak;

case 134: err="İşlemi tamamlamak için yeterli para yok"; kırmak;

case 135: err="Fiyat değişti"; kırmak;

case 136: err="Fiyat yok"; kırmak;

durum 137: err="Aracı meşgul"; kırmak;

case 138: err="Yeni fiyatlar"; kırmak;

case 139: err="Sipariş bloke edildi ve halihazırda işleniyor"; kırmak;

case 140: err="Yalnızca satın almaya izin verilir"; kırmak;

case 141: err="Çok fazla istek"; kırmak;

case 145: err="Sipariş piyasaya çok yakın olduğu için değişikliğe izin verilmiyor"; kırmak;

case 146: err="Ticaret alt sistemi meşgul"; kırmak;

case 147: err="Sipariş bitiş tarihinin kullanılması komisyoncu tarafından yasaklanmıştır"; kırmak;

case 148: err="Açık ve bekleyen emirlerin sayısı komisyoncu tarafından belirlenen limite ulaştı.";break;

//

case 4000: err="Hata yok"; kırmak;

case 4001: err="Geçersiz işlev işaretçisi"; kırmak;

case 4002: err="Dizi dizini aralık dışında"; kırmak;

case 4003: err="İşlev yığını için bellek yok"; kırmak;

case 4004: err="Yinelemeli çağrıdan sonra yığın taşması"; kırmak;

case 4005: err="Yığın üzerinde parametreleri iletmek için bellek yok"; kırmak;

case 4006: err="Dize parametresi için bellek yetersiz"; kırmak;

case 4007: err="Geçici dize için bellek yetersiz"; kırmak;

case 4008: err="Başlatılmamış dize"; kırmak;

case 4009: err="Dizide başlatılmamış dize"; kırmak;

case 4010: err="Dize dizisi için bellek yetersiz"; kırmak;

case 4011: err="Dize çok uzun"; kırmak;

case 4012: err="Sıfır kalan"; kırmak;

case 4013: err="Sıfıra bölme"; kırmak;

durum 4014: err="Bilinmeyen komut"; kırmak;

case 4015: err="Yanlış geçiş"; kırmak;

case 4016: err="Başlatılmamış dizi"; kırmak;

case 4017: err="DLL çağrılarına izin verilmez"; kırmak;

case 4018: err="Kitaplık yüklenemedi"; kırmak;

case 4019: err="İşlev çağrılamadı"; kırmak;

case 4020: err="Harici kitaplık işlevlerine yapılan çağrılara izin verilmez"; kırmak;

case 4021: err="İşlevden döndürülen dize için yeterli bellek yok"; kırmak;

case 4022: err="Sistem meşgul"; kırmak;

case 4050: err="Geçersiz sayıda fonksiyon parametresi"; kırmak;

case 4051: err="Geçersiz fonksiyon parametre değeri"; kırmak;

case 4052: err="Dize işlevi dahili hatası"; kırmak;

durum 4053: err="Dizi hatası"; kırmak;

case 4054: err="Zaman serisi dizisinin yanlış kullanımı"; kırmak;

case 4055: err=" Özel gösterge hatası"; kırmak;

case 4056: err="Diziler uyumsuz"; kırmak;

case 4057: err="Genel değişkenler işlenirken hata oluştu"; kırmak;

case 4058: err="Global değişken bulunamadı"; kırmak;

case 4059: err="Test modunda işleve izin verilmiyor"; kırmak;

case 4060: err="İşleve izin verilmiyor"; kırmak;

case 4061: err="Posta gönderme hatası"; kırmak;

case 4062: err="Dize parametresi bekleniyor"; kırmak;

case 4063: err="Bir tamsayı parametresi bekleniyor"; kırmak;

case 4064: err="çift bekleniyor"; kırmak;

case 4065: err="Parametre olarak bir dizi bekleniyor"; kırmak;

case 4066: err="Güncelleme durumunda istenen geçmiş veriler"; kırmak;

case 4067: err="Ticaret işlemi yürütülürken hata oluştu"; kırmak;

case 4099: err="Dosyanın sonu"; kırmak;

case 4100: err="Dosya ile çalışırken hata"; kırmak;

case 4101: err="Geçersiz dosya adı"; kırmak;

case 4102: err="Çok fazla açık dosya"; kırmak;

case 4103: err="Dosya açılamıyor"; kırmak;

case 4104: err="Uyumsuz dosya erişim modu"; kırmak;

case 4105: err="Hiç sipariş seçilmedi"; kırmak;

case 4106: err="Bilinmeyen karakter"; kırmak;

case 4107: err="Ticaret fonksiyonu için yanlış fiyat parametresi"; kırmak;

case 4108: err="Geçersiz bilet numarası"; kırmak;

case 4109: err="Ticaret yapılmasına izin verilmiyor. EA mülklerinde EA'nın ticaret yapmasına izin ver seçeneğini etkinleştirmelisiniz."; kırmak;

case 4110: err="Uzun pozisyonlara izin verilmez. EA özelliklerini kontrol etmeniz gerekir."; kırmak;

case 4111: err="Kısa pozisyonlara izin verilmez. EA özelliklerini kontrol etmeniz gerekir."; kırmak;

case 4200: err="Nesne zaten var"; kırmak;

case 4201: err="Bilinmeyen bir nesne özelliği istendi"; kırmak;

case 4202: err="Nesne mevcut değil"; kırmak;

case 4203: err="Bilinmeyen nesne türü"; kırmak;

case 4204: err="Nesne adı yok"; kırmak;

case 4205: err="Nesne koordinatları hatası"; kırmak;

case 4206: err="Belirtilen alt pencere bulunamadı"; kırmak;

default: err="Nesneyle çalışırken hata";

}

Alert("ErrorDescription'ı sonlandır");

dönüş(hata);

}//End ErrorDescription()

//------------------------------------------------ -------------------------------------------------- ---------------------------


//============================================== ================================================== =======================

int GetNext(NextTick)

//>>>>>>>>>>>>>>>>>>>>>

{

Alert("GetNext(NextTick)'e yalvar");

Uyarı(SonrakiTick);

while(RefreshRates()==yanlış)Count++;

Alert("Count=",Count,"NextTick=",NextTick);

Uyarmak(" ");

Alert(RefreshRates(),Count,NextTick);

dönüş(SonrakiTick);

Uyarı(SonrakiTick);

//----------------------

Alert("GetNext'i sonlandır(NextTick)");

}

// GetNext'i sonlandır(NextTick)

//============================================== ================================================== =======================


//------------------------------------------------ -------------------------------------------------- ---------------------------

geçersiz OnTick()

{

//****************************************

Alert("OnTick'e yalvarın");

//****************************************

FastMA=NormalizeDouble(iMA(NULL,0,Period_FastMA,0,MODE_SMA,PRICE_CLOSE,1),Digits());//Period_FastMA=4

SlowMA=NormalizeDouble(iMA(NULL,0,Period_SlowMA,0,MODE_SMA,PRICE_CLOSE,1),Digits());//Period_SlowMA=8

GetNext(SonrakiTick);

Alert("NextTick=",NextTick);

Delta=NormalizeÇift(HızlıMA-YavaşMA,Rakamlar()); Alert("OnTick'e yalvarın");

Uyarı(Delta,Rakamlar());

Alert("HızlıMA=",DoubleToStr(FastMA ,Digits()),"SlowMA=",DoubleToStr(SlowMA,Digits()), "Delta=",DoubleToStr(Delta,Digits()));

Alert("OnTick'i sonlandır");

//------------------------------------------------ -------------------------------------------------- --------------------------

}// bitiş (OnTick'i sonlandır)

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<

//------------------------------------------------ -------------------------------------------------- ----------------------------



//============================================== ================================================== ==========================



geçersiz Başlangıç()

{

Uyarmak(" ");

Alert("Init()'e başla");

Uyarmak(" ");



StringBeg=StringConcatenate("TimeToStr(TIME_DATE,TIME_SECONDS)=",TimeToStr(TIME_DATE,TIME_SECONDS));

uyarı(stringbeg);


record=StringConcatenate("MaxTickNum=",MaxTickNum);

uyarı(kayıt);


record=StringConcatenate("k_SL=",DoubleToStr(k_SL,Digits()));

uyarı(kayıt);


record=StringConcatenate("k_TP=",DoubleToStr(k_TP,Digits()));

uyarı(kayıt);


record=StringConcatenate("k_lots=",DoubleToStr(k_lots,Digits()));

uyarı(kayıt);


Alert("Init()'i sonlandır");


}//başlatmayı bitir()

//------------------------------------------------ -------------------------------------------------- ---------------------------




//============================================== ================================================== ====================

int GetTick(NextTick)


{


Alert("GetTick'e yalvarın");


while (RefreshRates()==yanlış)

SonrakiTick++;

Alert("NextTick=",NextTick);


OrderSelect(NextTick,SELECT_BY_TICKET);


Kar=SiparişKar();


Alert(DoubleToStr(Kar, Rakamlar));


GetNext(SonrakiTick);


Alert("GetTick'i sonlandır");

}

//------------------------------------------------ -------------------------------------------------- -------------------------------------------------- ----


//============================================== ================================================== =========================


int SonrakiTip()

//>>>>>>>>>>>>>>>>>>>>

{

Alert("NextType'a Başlayın");


if(OrderSelect(NextTick,SELECT_BY_TICKET )==true)

{

OpenPrice=SiparişOpenPrice();

KapatFiyat=SiparişKapatFiyat();

}


if(ClosePrice>OpenPrice)CurType=OP_BUY;


başka CurType=OP_SELL;




dönüş(curType);

Alert("CurType()'ı sonlandır");

//>>>>>>>>>>>>>>>>>>>>>>>>

}//"CurType()'ı sonlandır";


//------------------------------------------------ -------------------------------------------------- ----------------------------



//============================================== ================================================== ===========================


bool FastMACrossUp()

{


if(!(Delta==SonDelta))Alert("Delta=",DoubleToStr(Delta,5),"LastDelta=",DoubleToStr(SonDelta,5));


Alert("SonDelta=",DoubleToStr(LastDelta,5));

Alert("!(Delta==SonDelta)=",!(Delta==SonDelta));

if(((Delta!=SonDelta) && (Delta>=0) && (SonDelta<=0)))Alert("( Delta!=SonDelta)&&(Delta>=0)&&(SonDelta<=0)= " ,

(Delta!=SonDelta) && (Delta>=0) && (SonDelta<=0));

Alert("(Delta>=0)=",(Delta>=0),"(SonDelta<=0)=",(SonDelta<=0));

if(Delta!=SonDelta)Alert("Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(SonDelta,5));

Alert("(Delta>=0)=",(Delta>=0)," ( LastDelta<=0)=",(LastDelta<=0)," TickNum=",TickNum);

Alert("(Delta>=0)=",(Delta>=0));

Alert("SonDelta<=",(SonDelta<=0));

Alert("!(Delta==SonDelta)&&((Delta>=0)&&(SonDelta<=0))=",!(Delta==SonDelta)&&(((Delta>=0)&&(SonDelta<=0) )));

Alert(((Delta!=SonDelta)&&((Delta>=0)&&(SonDelta<=0))));

Alert(" (Delta!=SonDelta)= ",(Delta!=SonDelta)," (Delta>=0)= ",(Delta>=0)," (SonDelta<=0)= ",(SonDelta<= 0));

return((Delta!=SonDelta)&&(Delta>=0)&&(SonDelta<=0));

} // FastMACrossUp()'ı sonlandır

//------------------------------------------------ -------------------------------------------------- --------------------



//============================================== ================================================== ===================

bool FastMACrossDn()

{

if(!(Delta==SonDelta)&&(Delta<=0)&&(LastDelta>=0))Alert("Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5)) ;


Alert("SonDelta=",DoubleToStr(LastDelta,5));

Alert("!(Delta==SonDelta)=",!(Delta==SonDelta));

Alert("(Delta<=0)=",(Delta<=0));

Alert("SonDelta>=0",(SonDelta>=0));

if((Delta!=SonDelta) && (Delta<=0) && (SonDelta>=0))

Alert("(Delta<=0)=",(Delta<=0),"(SonDelta>=0)=",(SonDelta>=0));

Alert(" (Delta!=SonDelta)&&((Delta<=0)&&(SonDelta>=0))= ",(Delta!=SonDelta) && (Delta<=0) && (SonDelta>=0));

if(Delta!=SonDelta)Alert(" Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5));

Alert("(Delta<=0)=",(Delta<=0)," (LastDelta>=0)=",(LastDelta>=0)," TickNum=",TickNum);

Alert(" (Delta!=SonDelta)&&(( Delta<=0)&&(SonDelta>=0))= ",(Delta!=SonDelta)&&(((Delta<=0)&&(SonDelta>=0)) );

return((Delta!=SonDelta)&&(Delta<=0)&&(SonDelta>=0));

}//bitiş FastMACrossDn()

//------------------------------------------------ -------------------------------------------------- --------------------------------------



//============================================== ================================================== ==================================

bool FastMAIsAbove()

{

Alert("FastMAIsAbove()'a yalvarın");

Alert(" (Delta>=0)=",(Delta>=0)," (SonDelta>=0)=",(SonDelta>=0));

if(((Delta>=0)&&(SonDelta>=0)))

Alert(" FastMA= ",DoubleToStr(HızlıMA,5)," SlowMA= ",DoubleToStr(SlowMA,5));

Alert(" Delta= ",DoubleToStr(Delta,5)," LastDelta= ",DoubleToStr(SonDelta,5));

Alert("FastMAIsAbove()'u sonlandır");

Alert("(Delta==SonDelta)&&(Delta>=0)&&(SonDelta>=0)=",(Delta==SonDelta)&&(Delta>=0)&&(SonDelta>=0));

Alert("FastMAIsAbove()'u sonlandır");

return((Delta==SonDelta)&&(Delta>=0)&&(SonDelta>=0));

}//FastMAIsAbove() bitiş

//============================================== ================================================== ================


//------------------------------------------------ -------------------------------------------------- ------------------

bool FastMAIsBelow()

{


return((Delta==SonDelta)&&(Delta<=0)&&(SonDelta<=0));

}//FastMAIsBelow'u sonlandır()*/

"

//------------------------------------------------ -------------------------------------------------- ------------------

//******************************************************* *****************************************************

"


 
Dmitriy Voevodkin :

Init hiçbir şekilde başlatılamaz, tıpkı DeInit gibi gösterge/EA başlatıldığında bir kez otomatik olarak başlatılır.

Alternatif olarak, statik bir boole değişkeni yapabilir ve bunu IsConnected() ile birlikte kullanabilirsiniz. Ve yeni bir onay işaretinin gelmesiyle bağlantı yeniden kurulduğunda, önce bir tür kendi başlatma işlevini çalıştırın. True , IsConnected()'in OnCalculate()'de değil, OnTimer()'da kullanılması gerekir , ancak başlatma fonksiyonunun OnCalculate()'in en başında kullanılması gerekir.


Teşekkürler, düşüneceğim, sadece zaten standart çözümler olduğunu düşündüm ......

 
buyanov :

Tüm kod

Vay, uyarılar harika.
 
Mihail Marchukajtes :

Teşekkürler, düşüneceğim, sadece zaten standart çözümler olduğunu düşündüm ......

Bu kişinin sözlerinin çürütülmesini zaten yazdım. OnItit() normal bir işlevdir. Gerektiğinde çalıştırın.

 
buyanov :

Tüm kod


Eh, zaten söyledim - kodu SRC düğmesini kullanarak ekleyin. Affedersiniz, tamamen öğretilemez misiniz?

Söyle bana, kim bu ayak örtüsüne bakmak ister?

 
Artyom Trishkin :

Bu kişinin sözlerinin çürütülmesini zaten yazdım. OnItit() normal bir işlevdir. Gerektiğinde çalıştırın.


Bu arada evet, bağlanırken neden aramayalım diye düşündüm. Görünüşe göre yapabilirsin :-)

 
buyanov :

Tüm kod


Değişken türlerini izleyin.

Tüm gereksiz Uyarıları atın

Dosyalar:
test.mq4  42 kb