[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 456

 
sergeev писал(а) >>

onu bir komut dosyası değil, bir uzman yapın ve komut dosyası işlev kodunun yürütme süresini uzmanda kontrol edin. Zaman geldi - komut dosyası kodunu çalıştırıyoruz.

bu cümle ile terminallerinizin kapalı olduğunu anladım. Size cevap veriyorum - komut dosyası terminalin kendisini başlatamaz.

Nasıl yazarsan öyle anlarsın. Demek istediğin bu değilse, kendini daha açık bir şekilde açıkla.

Bir fikrin değeri nedir? Eğer çok gerekli olsaydı, proger gerçekten bu şeyi uzun süre karalamaz mıydı ... bu sizin için kişisel olarak gerekli.

1. Komut dosyasının içeriğini kopyalayın

2. MetaEditor aracılığıyla yeni bir Uzman Danışman oluşturun

3. Komut dosyası kodunu yapıştırın

4. Zaman fonksiyonu nasıl eklenir ve nereye eklenir (programcı değilim)

9-00'dan 9-01'e kadar çalışma saatlerine ihtiyaç var

editleyeceğimiz script kodu: (Yardım eden herkese şimdiden teşekkürler)

#özellik telif hakkı "Kim Igor V. aka KimIV"
#özellik bağlantısı " https://www.mql5.com/go?link=http://www.kimiv.ru/ "
#özellik show_inputs

#import "kernel32.dll"
int GetUserDefaultLCID();
int GetLocaleInfoA(
int Yerel ayar, // yerel ayar tanımlayıcısı
int LCType, // bilgi türü
string lpLCData, // bilgi için arabellek adresi
int cchData // arabellek boyutu
);
#içe aktarmak

//+------ Komut dosyasının harici parametreleri ------------------------------------ -- -----+
extern bool bCommission = False; // Komisyonları yükle
extern bool bSwap = Doğru; // Takasları kaldır
extern bool bYorum = Doğru; // Yorum yükle
extern bool bMagic = Doğru; // MagicNumber'ı Kaldır

// LCTYPE Sabitleri
#define LOCALE_SDECIMAL 0x000E // Ondalık ayırıcı için kullanılan karakterler.

//+------------------------------------------- ------------------------------+
//| komut dosyası programı başlatma işlevi |
//+------------------------------------------- ------------------------------+
geçersiz başlangıç() {
int dg, i, k=OrdersHistoryTotal();
string DosyaAdı=DoubleToStr(HesapNumarası(), 0)+".csv", st;

FileDelete(DosyaAdı);
st="Ticket;Açık Zaman;Tür;Lotlar;Öğe;Fiyat;SL;TP;Kapanış Zamanı;Fiyat";
if (bKomisyon) st=st+";Komisyon";
if (bSwap) st=st+";Takas";
st=st+";Kar";
if (bMagic) st=st+";Büyü";
if (bYorum) st=st+";Yorum";
WritingLineInFile(DosyaAdı, st);
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (SiparişTürü()<2) {
dg= MarketInfo(OrderSymbol(), MODE_DIGITS);
st= DoubleToStr(OrderTicket(), 0)+";";
st=st+TimeToStr(OrderOpenTime(), TIME_DATE|TIME_MINUTES)+";";
st=st+GetNameOP(OrderType())+";";
st=st+DoubleToStrLocale(OrderLots(), 2)+";";
st=st+OrderSymbol()+";";
st=st+DoubleToStrLocale(OrderOpenPrice(), dg)+";";
st=st+DoubleToStrLocale(OrderStopLoss(), dg)+";";
st=st+DoubleToStrLocale(OrderTakeProfit(), dg)+";";
st=st+TimeToStr(OrderCloseTime(), TIME_DATE|TIME_MINUTES)+";";
st=st+DoubleToStrLocale(OrderClosePrice(), dg)+";";
if (bCommission) st=st+DoubleToStrLocale(OrderCommission(), 2)+";";
if (bSwap) st=st+DoubleToStrLocale(OrderSwap(), 2)+";";
st=st+DoubleToStrLocale(OrderProfit(), 2)+";";
if (bMagic) st=st+DoubleToStr(OrderMagicNumber(), 0)+";";
if (bComment) st=st+OrderComment()+";";
WritingLineInFile(DosyaAdı, st);
}
Comment("Oku: ",i+1,", ",k'den fırsatlar);
}
}
Comment("Dosya yazıldı: ",DosyaAdı);
}

//+------------------------------------------- ------------------------------+
//| Sistem |
//| ondalık ayırıcı. |
//| Seçenekler: |
//| v - tip çift sayısı |
//| d - ondalık basamak sayısı |
//+------------------------------------------- ------------------------------+
string DoubleToStrLocale(çift v, int d) {
(d<0) d=0 ise;
(d>8) ise d=8;

string se=GetUserLocale(LOCALE_SDECIMAL), st=DoubleToStr(v, d);
if (se!=".") st=StrTran(st, ".", se);

dönüş(st);
}

//+------------------------------------------- ------------------------------+
//| Bir ticaret işleminin adını döndürür |
//| Seçenekler: |
//| op - ticari işlem tanımlayıcısı |
//+------------------------------------------- ------------------------------+
string GetNameOP(int op) {
geçiş (op) {
case OP_BUY : iade("Satın Al");
case OP_SELL : dönüş("Sat");
case OP_BUYLIMIT : return("Satın Alma Limiti");
case OP_SELLLIMIT: return("Satış Limiti");
case OP_BUYSTOP : return("Satın Al Durdur");
case OP_SELLSTOP : return("Satış Durdur");
default : return("Bilinmeyen İşlem");
}
}

//+------------------------------------------- ------------------------------+
//| Kullanıcı bölgesel ayarlarının dönüşü. |
//| Parametreler: |
//| LCType - bölgesel ayar türü (LCTYPE Sabit) |
//+------------------------------------------- ------------------------------+
string GetUserLocale(int LCType) {
int loc=GetUserDefaultLCID();
stringstr="";

GetLocaleInfoA(loc, LCType, str, 64);

dönüş(str);
}

//+------------------------------------------- ------------------------------+
//| Alt dize değiştirme |
//| Seçenekler: |
//| str - değiştirilecek metin dizisi |
//| strfrom - değiştirilecek alt dize |
//| strto - yedek alt dizi |
//+------------------------------------------- ------------------------------+
string StrTran(string str, string strfrom, string strto) {
intn;
string outstr="", tempstr;

for (n=0; n<StringLen(str); n++) {
tempstr=StringSubstr(str, n, StringLen(strfrom));
if (tempstr==strfrom) {
outstr=outstr+strto;
n=n+StringLen(strfrom)-1;
} başka outstr=outstr+StringSubstr(str, n, 1);
}
dönüş (çıktı);
}

//+------------------------------------------- ------------------------------+
//| Dosyaya satır yazma |
//| Seçenekler: |
//| DosyaAdı - dosya adı |
//| metin - dize |
//+------------------------------------------- ------------------------------+
void WritingLineInFile(dize DosyaAdı, dize metni) {
int file_handle=DosyaOpen(DosyaAdı, FILE_READ|FILE_WRITE, " ");

if (file_handle>0) {
FileSeek(file_handle, 0, SEEK_END);
FileWrite(file_handle, metin);
FileClose(file_handle);
}
}
//+------------------------------------------- ------------------------------+

 
Tünaydın! Söyle bana, yazı tiplerini MT4'te hangi klasöre yapıştıracağım?
 
%windir%\fontlar
 

Baltık için


 string NeedTime = "9:00" ;
datetime time0 = 0 ;

//----------------------------------------------------------------------------
void start ( ) 
{

 if ( time0 > = StrToTime ( NeedTime ) ) return ; // если сегодня уже выполняли код
 if ( TimeCurrent ( ) < = StrToTime ( NeedTime ) ) return ; // если требуемое время ещё не наступио
 time0 = TimeCurrent ( ) ; // иначе запоминаем время

// и делаем то что надо

// бла бла бла остальной код

Genel olarak, bu konu sizin için yazma istekleriyle değil, programlamayı öğrenenler içindir.

 
sergeev >> :
%windir% \ fonts

bir şekilde daha basit olabilir, hiçbir şey anlamadım ... bu ne tür bir klasör? ya da tam olarak nedir?

 
chepikds >> :

bir şekilde daha basit olabilir, hiçbir şey anlamadım ... bu ne tür bir klasör? ya da tam olarak nedir?


genel olarak, "MT4'te yazı tiplerinin hangi klasöre ekleneceği" sorusu da çok net değil. Rusça açıklayın. :)

terminalde hiçbir yazı tipi saklanmaz. Yazı tipleri işletim sistemi tarafından işlenir.

 
sergeev >> :

genel olarak, "MT4'te yazı tiplerinin hangi klasöre ekleneceği" sorusu da çok net değil.

terminalde hiçbir yazı tipi saklanmaz. Yazı tipleri işletim sistemi tarafından işlenir.

tamam, işletim sistemine eklemeye çalışacağım ...

 
Teşekkürler sergeev , her şey çalıştı.
 
sergeev писал(а) >>

Baltık için

Genel olarak, bu konu sizin için yazma istekleriyle değil, programlamayı öğrenenler içindir.

teşekkürler

Çalışacağım :)

 

merhaba. Ders kitabındaki örnekleri takip ederek basit bir danışman yazdım. EA, fiyat, iki MA'dan oluşan aralığın dışına çıktığında bir sinyal vermelidir. onlar. bar bir aralıkta açılıp büyümeye başladıysa ve mevcut fiyatı bunun dışındaysa, bir bip sesi duyulur. aşağı aynı şekilde. ama sorun şu ki, bunu yaparsam çözemem:

if (Teklif > MA1 || Teklif < MA2) // Aralığın geçip geçmediği kontrol ediliyor
{
Alert("Fiyat aralığın dışındadır.");// Mesaj
}

o zaman fiyat danışmanın üzerindeyse ve sonra bip sesi çıkarır. ve eğer bunu beğenirsem:

if (Teklif > MA1 && Fact_Up==true) // Check Up Pass
{
Fact_Dn=doğru; // MA1 üzerindeki fiyatı bildir
Fact_Up=yanlış; // MA1'in altında fiyat bildirme
Alert("Fiyat aralığın üzerindedir.");// Mesaj
}
//------------------------------------------------ --------------------
if (Teklif < MA2 && Fact_Dn==true) // Aşağı Geçiş Kontrolü
{
Fact_Up=doğru; // MA2'nin altındaki fiyatı bildir
Fact_Dn=yanlış; // MA2'nin üzerindeki fiyatı bildirme
Alert("Fiyat aralığın altında.");// Mesaj
}

ne zaman sinyal verdiği hiç belli değil - sonra veriyor, sonra vermiyor.

"Fact_Up==true" ifadesinin ne olduğunu ve neden gerekli olduğunu anlayamıyorum. lütfen bana kimin bildiğini söyle.

Neden: