Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
merhaba mladen,
Sanırım deliriyorum, işte PeriodConverter'dan değiştirilen kodum.
//+------------------------------------------------------------------+
//| PeriodConverter.mq4 |
//| Copyright 2006-2014, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "2006-2014, MetaQuotes Software Corp."
#property link "http://www.mql4.com"
#property description "Period Converter to updated format of history base"
#property strict
#property show_inputs
#include
input int StartHour = 9;
input int StartMinute = 0;
input int CloseHour = 17;
input int CloseMinute = 30;
int ExtHandle=-1;
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
datetime time0;
ulong last_fpos=0;
long last_volume=0;
int i,start_pos;
int hwnd=0,cnt=0;
//---- History header
int file_version=401;
string c_copyright;
string c_symbol=Symbol();
int i_period=Period();
int i_digits=Digits;
int i_unused[13];
MqlRates rate;
//---
ExtHandle=FileOpenHistory("TT_"+c_symbol+(string)i_period+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI);
if(ExtHandle<0)
return;
c_copyright="(C)opyright 2003, MetaQuotes Software Corp.";
ArrayInitialize(i_unused,0);
//--- write history file header
FileWriteInteger(ExtHandle,file_version,LONG_VALUE);
FileWriteString(ExtHandle,c_copyright,64);
FileWriteString(ExtHandle,c_symbol,12);
FileWriteInteger(ExtHandle,i_period,LONG_VALUE);
FileWriteInteger(ExtHandle,i_digits,LONG_VALUE);
FileWriteInteger(ExtHandle,0,LONG_VALUE);
FileWriteInteger(ExtHandle,0,LONG_VALUE);
FileWriteArray(ExtHandle,i_unused,0,13);
//--- write history file
start_pos=Bars-1;
rate.open=Open[start_pos];
rate.low=Low[start_pos];
rate.high=High[start_pos];
rate.tick_volume=(long)Volume[start_pos];
rate.spread=0;
rate.real_volume=0;
//--- normalize open time
rate.time=Time[start_pos];
for(i=start_pos-1; i>=0; i--)
{
if(IsStopped())
break;
time0=Time;
//--- history may be updated
if(i==0)
{
//--- modify index if history was updated
if(RefreshRates())
i=iBarShift(NULL,0,time0);
}
//---
if((time0>=rate.time || i==0) && MainTime(time0)==true)
{
if(i==0)
{
rate.tick_volume+=(long)Volume[0];
if(rate.low>Low[0])
rate.low=Low[0];
if(rate.high<High[0])
rate.high=High[0];
rate.close=Close[0];
}
last_fpos=FileTell(ExtHandle);
last_volume=(long)Volume;
FileWriteStruct(ExtHandle,rate);
cnt++;
if(time0>=rate.time)
{
rate.time=time0;
rate.open=Open;
rate.low=Low;
rate.high=High;
rate.close=Close;
rate.tick_volume=last_volume;
}
}
else if(MainTime(time0)==true)
{
rate.tick_volume+=(long)Volume;
if(rate.low>Low)
rate.low=Low;
if(rate.high<High)
rate.high=High;
rate.close=Close;
}
}
FileFlush(ExtHandle);
Print(cnt," record(s) written");
//--- collect incoming ticks
datetime last_time=LocalTime()-5;
while(!IsStopped())
{
datetime cur_time=LocalTime();
//--- check for new rates
if(RefreshRates())
{
time0=Time[0];
FileSeek(ExtHandle,last_fpos,SEEK_SET);
//--- is there current bar?
if(time0<rate.time && MainTime(time0)==true)
{
rate.tick_volume+=(long)Volume[0]-last_volume;
last_volume=(long)Volume[0];
if(rate.low>Low[0])
rate.low=Low[0];
if(rate.high<High[0])
rate.high=High[0];
rate.close=Close[0];
}
else if(MainTime(time0)==true)
{
//--- no, there is new bar
rate.tick_volume+=(long)Volume[1]-last_volume;
if(rate.low>Low[1])
rate.low=Low[1];
if(rate.high<High[1])
rate.high=High[1];
//--- write previous bar remains
FileWriteStruct(ExtHandle,rate);
last_fpos=FileTell(ExtHandle);
//----
rate.time=time0;
rate.open=Open[0];
rate.low=Low[0];
rate.high=High[0];
rate.close=Close[0];
rate.tick_volume=(long)Volume[0];
last_volume=rate.tick_volume;
}
//----
FileWriteStruct(ExtHandle,rate);
FileFlush(ExtHandle);
//---
if(hwnd==0)
{
hwnd=WindowHandle(Symbol(),i_period);
if(hwnd!=0)
Print("Chart window detected");
}
//--- refresh window not frequently than 1 time in 2 seconds
if(hwnd!=0 && cur_time-last_time>=2)
{
PostMessageA(hwnd,WM_COMMAND,33324,0);
last_time=cur_time;
}
}
Sleep(50);
}
//---
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
if(ExtHandle>=0)
{
FileClose(ExtHandle);
ExtHandle=-1;
}
//---
}
//+------------------------------------------------------------------+
bool MainTime(datetime time0)
{
datetime temp = time0 - 1 * 60 *60;
if(((TimeHour(temp) == StartHour && TimeMinute(temp) >= StartMinute) ||
TimeHour(temp) > StartHour) &&
(TimeHour(temp)< CloseHour ||
(TimeHour(temp) == CloseHour && TimeMinute(temp) < CloseMinute)))
{
Print(".......return (true) - Time0 = "+TimeToString(time0) + " tempTime = "+TimeToString(temp));
return(true);
}
else
{
Print("+++++++false - Time0 = "+TimeToString(time0) + " tempTime = "+TimeToString(temp));
return(false);
}
}
Yeni çevrimdışı grafiğimde göstermek istediğim çubukları seçmek için MainTime işlevini ekledim.
(Ayrıca zamanı bir saat kaydırdım ama bu önemli değil).
Şimdi bunu 0:00 (Başlangıç Zamanı) - 12:00 (Kapanış Zamanı) arasında 15046 çubuklu (M5) bir grafikte test ettiğimde
Doğru baskı mesajları alıyorum ve sonunda 7596 bar yazıldığı bilgisi.
Yani orijinal tablonun yaklaşık yarısı kadar ve bence her şey yolunda gitti!
Ancak ilgili çevrimdışı grafiği açtığımda, tam olarak tüm çubuklarla birlikte orijinal grafik gibi görünüyor.
Bu davranışı gerçekten anlayamıyorum?!?!
merhaba mladen,
Sanırım deliriyorum, işte PeriodConverter'dan değiştirilen kodum.
//+------------------------------------------------------------------+
//| PeriodConverter.mq4 |
//| Copyright 2006-2014, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "2006-2014, MetaQuotes Software Corp."
#property link "http://www.mql4.com"
#property description "Period Converter to updated format of history base"
#property strict
#property show_inputs
#include
input int StartHour = 9;
input int StartMinute = 0;
input int CloseHour = 17;
input int CloseMinute = 30;
int ExtHandle=-1;
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
datetime time0;
ulong last_fpos=0;
long last_volume=0;
int i,start_pos;
int hwnd=0,cnt=0;
//---- History header
int file_version=401;
string c_copyright;
string c_symbol=Symbol();
int i_period=Period();
int i_digits=Digits;
int i_unused[13];
MqlRates rate;
//---
ExtHandle=FileOpenHistory("TT_"+c_symbol+(string)i_period+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI);
if(ExtHandle<0)
return;
c_copyright="(C)opyright 2003, MetaQuotes Software Corp.";
ArrayInitialize(i_unused,0);
//--- write history file header
FileWriteInteger(ExtHandle,file_version,LONG_VALUE);
FileWriteString(ExtHandle,c_copyright,64);
FileWriteString(ExtHandle,c_symbol,12);
FileWriteInteger(ExtHandle,i_period,LONG_VALUE);
FileWriteInteger(ExtHandle,i_digits,LONG_VALUE);
FileWriteInteger(ExtHandle,0,LONG_VALUE);
FileWriteInteger(ExtHandle,0,LONG_VALUE);
FileWriteArray(ExtHandle,i_unused,0,13);
//--- write history file
start_pos=Bars-1;
rate.open=Open[start_pos];
rate.low=Low[start_pos];
rate.high=High[start_pos];
rate.tick_volume=(long)Volume[start_pos];
rate.spread=0;
rate.real_volume=0;
//--- normalize open time
rate.time=Time[start_pos];
for(i=start_pos-1; i>=0; i--)
{
if(IsStopped())
break;
time0=Time;
//--- history may be updated
if(i==0)
{
//--- modify index if history was updated
if(RefreshRates())
i=iBarShift(NULL,0,time0);
}
//---
if((time0>=rate.time || i==0) && MainTime(time0)==true)
{
if(i==0)
{
rate.tick_volume+=(long)Volume[0];
if(rate.low>Low[0])
rate.low=Low[0];
if(rate.high<High[0])
rate.high=High[0];
rate.close=Close[0];
}
last_fpos=FileTell(ExtHandle);
last_volume=(long)Volume;
FileWriteStruct(ExtHandle,rate);
cnt++;
if(time0>=rate.time)
{
rate.time=time0;
rate.open=Open;
rate.low=Low;
rate.high=High;
rate.close=Close;
rate.tick_volume=last_volume;
}
}
else if(MainTime(time0)==true)
{
rate.tick_volume+=(long)Volume;
if(rate.low>Low)
rate.low=Low;
if(rate.high<High)
rate.high=High;
rate.close=Close;
}
}
FileFlush(ExtHandle);
Print(cnt," record(s) written");
//--- collect incoming ticks
datetime last_time=LocalTime()-5;
while(!IsStopped())
{
datetime cur_time=LocalTime();
//--- check for new rates
if(RefreshRates())
{
time0=Time[0];
FileSeek(ExtHandle,last_fpos,SEEK_SET);
//--- is there current bar?
if(time0<rate.time && MainTime(time0)==true)
{
rate.tick_volume+=(long)Volume[0]-last_volume;
last_volume=(long)Volume[0];
if(rate.low>Low[0])
rate.low=Low[0];
if(rate.high<High[0])
rate.high=High[0];
rate.close=Close[0];
}
else if(MainTime(time0)==true)
{
//--- no, there is new bar
rate.tick_volume+=(long)Volume[1]-last_volume;
if(rate.low>Low[1])
rate.low=Low[1];
if(rate.high<High[1])
rate.high=High[1];
//--- write previous bar remains
FileWriteStruct(ExtHandle,rate);
last_fpos=FileTell(ExtHandle);
//----
rate.time=time0;
rate.open=Open[0];
rate.low=Low[0];
rate.high=High[0];
rate.close=Close[0];
rate.tick_volume=(long)Volume[0];
last_volume=rate.tick_volume;
}
//----
FileWriteStruct(ExtHandle,rate);
FileFlush(ExtHandle);
//---
if(hwnd==0)
{
hwnd=WindowHandle(Symbol(),i_period);
if(hwnd!=0)
Print("Chart window detected");
}
//--- refresh window not frequently than 1 time in 2 seconds
if(hwnd!=0 && cur_time-last_time>=2)
{
PostMessageA(hwnd,WM_COMMAND,33324,0);
last_time=cur_time;
}
}
Sleep(50);
}
//---
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
if(ExtHandle>=0)
{
FileClose(ExtHandle);
ExtHandle=-1;
}
//---
}
//+------------------------------------------------------------------+
bool MainTime(datetime time0)
{
datetime temp = time0 - 1 * 60 *60;
if(((TimeHour(temp) == StartHour && TimeMinute(temp) >= StartMinute) ||
TimeHour(temp) > StartHour) &&
(TimeHour(temp)< CloseHour ||
(TimeHour(temp) == CloseHour && TimeMinute(temp) < CloseMinute)))
{
Print(".......return (true) - Time0 = "+TimeToString(time0) + " tempTime = "+TimeToString(temp));
return(true);
}
else
{
Print("+++++++false - Time0 = "+TimeToString(time0) + " tempTime = "+TimeToString(temp));
return(false);
}
}
Yeni çevrimdışı grafiğimde göstermek istediğim çubukları seçmek için MainTime işlevini ekledim.
(Ayrıca zamanı bir saat kaydırdım ama bu önemli değil).
Şimdi bunu 0:00 (Başlangıç Zamanı) - 12:00 (Kapanış Zamanı) arasında 15046 çubuklu (M5) bir grafikte test ettiğimde
Doğru baskı mesajları alıyorum ve sonunda 7596 bar yazıldığı bilgisi.
Yani orijinal tablonun yaklaşık yarısı kadar ve bence her şey yolunda gitti!
Ancak ilgili çevrimdışı grafiği açtığımda, tam olarak tüm çubuklarla birlikte orijinal grafik gibi görünüyor.
Bu davranışı gerçekten anlayamıyorum?!?!Bunun nedeni, sembolün orijinal adını ve zaman çerçevesini kullanmanızdır. Sembol adını veya zaman çerçevesini değiştirmeniz gerekir (zaman çerçevesini değiştirmek daha iyidir, bu şekilde tüm kodunuz doğru sembol adını tanıyacaktır)
Zaman dilimini değiştirirseniz, bazı "yasal" zaman dilimlerini (1,5,15,30,60,...) kullanmadığınızdan emin olun.
Merhaba,
Bu adet, diğer bir adet ile birlikte hakkaniyet koruması için kullanılır. Öz sermayenin kar ve zarar limitlerini girebilirsiniz ve limite ulaşıldığında ea tüm emirleri kapatır ve diğer EA'yı kapatır.
Ea öz sermaye korumasıyla ilgili sorun, yalnızca mt4 maksimize edildiğinde çalışmasıdır. Küçültülmüş veya mt4 VPS'de çalışıyorsa , sınıra ulaşıldığında EA, EA'yı en üst düzeye çıkarana veya VPS'de oturum açana kadar siparişleri kapatmaya başlamaz. Giriş yaptığım veya maksimuma çıkardığım an kapanmaya başlar.
Teşekkürler.
Merhaba,
Bu adet, diğer adet ile kombinasyon halinde öz sermaye koruması için kullanılır. Öz sermayenin kar ve zarar limitlerini girebilirsiniz ve limite ulaşıldığında ea tüm emirleri kapatır ve diğer EA'yı kapatır.
Ea öz sermaye korumasıyla ilgili sorun, yalnızca mt4 maksimize edildiğinde çalışmasıdır. Küçültülmüş veya mt4 VPS'de çalışıyorsa, sınıra ulaşıldığında EA, EA'yı en üst düzeye çıkarana veya VPS'de oturum açana kadar siparişleri kapatmaya başlamaz. Giriş yaptığım veya maksimuma çıkardığım an kapanmaya başlar.
Teşekkürler.PC'nizde de aynı şekilde mi davranıyor (VPS'de değil)?
PC'nizde aynı koşullarda sorunsuz çalışıyorsa , VPS'nizde bir sorun var demektir.
Bunun nedeni, sembolün orijinal adını ve zaman çerçevesini kullanmanızdır. Sembol adını veya zaman çerçevesini değiştirmeniz gerekir (zaman çerçevesini değiştirmek daha iyidir, bu şekilde tüm kodunuz doğru sembol adını tanıyacaktır) Zaman çerçevesini değiştirirseniz, bazı "yasal" kullanmadığınızdan emin olun. zaman dilimleri (1,5,15,30,60,...)
Teşekkürler, değiştirdim
ExtHandle=FileOpenHistory("TT_"+c_symbol+(string)3+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI);
and
FileWriteInteger(ExtHandle,3,LONG_VALUE);
Ama çevrimdışı grafiği açarsam ..., M3 sadece "Güncellemeler Bekleniyor" gösteriyor... ve hiçbir şey olmuyor
Teşekkürler, değiştirdim
ExtHandle=FileOpenHistory("TT_"+c_symbol+(string)3+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI);
and
FileWriteInteger(ExtHandle,3,LONG_VALUE);
İlginç
Bunu göstergeniz için bir temel olarak kullanın. Bu işe yarıyor (temel olarak kullandığınız sürümde hatalar var gibi görünüyor)
Bana yardım et! bu adet için
Selamlar
lütfen uzmanlar
EA'da belirlenen kaybetmeyi durdur ve kar al
boşluklar.ex4
boşluklar.mq4
Merhaba,
Ekli göstergeye bir DEMA seçeneği eklemeye yardımcı olabilir misiniz?
Şu anda seçenekler şunlardır:
0= küçük
1=ema
2=smma
3=lwma
Eklemek istiyorum:
4= DEMA Bu mümkün mü? Çok teşekkürler!
Merhaba,
Ekli göstergeye bir DEMA seçeneği eklemeye yardımcı olabilir misiniz?
Şu anda seçenekler şunlardır:
0= küçük
1=ema
2=smma
3=lwma
Eklemek istiyorum:
4= DEMA Bu mümkün mü? Çok teşekkürler!BayWigglesworth
Tip 4 olarak dema eklenmiş bir sürüm: ma__dema_crossover_with_arrow_and_email.mq4
Selamlar
lütfen uzmanlar
EA'da belirlenen kaybetmeyi durdur ve kar al
boşluklar.ex4
boşluklar.mq4amirreza132
Bu EA, boşlukları yakalamak için tasarlanmıştır ve boşluk olduğunda zaten kâr elde etmiştir.