[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 308

 
mt4'ü yeniden başlatmadan yalnızca bu düzenlenmiş komut dosyası nasıl çalıştırılır?
 
Denedim ama bir şeyler olmuyor.Kodda çok fazla hata çıkıyor ((.
 
Bir şey paylaşacak mısın? )
 

Faydalı olabilir. İşte böyle çalışır!

Meta düzenleyicide F5 tuşu derlemektir.

Önemli! Meta düzenleyici, terminal ile aynı klasörden başlatılmalıdır.

 

Alex benimle misin? mql4'te yeniyim.Bu kodu anlamaya çalışıyorum



#özellik göstergesi_chart_window
#özellik göstergesi_tamponları 2
extern int TimeFrame=0;//If=0, o zaman geçerli
extern int Uzaklık=0;//fraktaldan nokta olarak çizgi mesafesi
extern string FrApNam="Ap";//Yukarı Fraktal'e karşılık gelen satır adı
extern string FrDnNam="Dn";//Aşağı fraktala karşılık gelen satır adı
dış renk ClAp=Mavi;//Fractal yukarıya karşılık gelen çizgi rengi
dış renk ClDn=Kırmızı;//Aşağı fraktala karşılık gelen çizgi rengi
extern bool comment=true;//Yorum yapma izni
//------------------------------------------------ ------------------------------+
çift FrPrise,znach1,znach2;
çift FrApPrise=0,FrDnPrise=0;
çift ind_buffer1[];
çift ind_buffer2[];
//+------------------------------------------- ------------------------------+
geçersiz başlangıç()
{if(TimeFrame==0){TimeFrame=Period();}
SetIndexBuffer(0,ind_buffer1);//BOX

SetIndexBuffer(1,ind_buffer2);
dönüş;}
geçersiz tanım(){

dönüş;}


//+------------------------------------------- ------------------------------+
int başlangıç()
{
int counted_bars=IndicatorCounted();
int limiti;
çift tmp;
int i,j,k;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=bars-counted_bars;
//------------------------------------------------ ------------------------------+
lineap();
LineDn();
double FAP=NormalizeDouble((FrApPrise-Distanse*Puan),5);//VALUE
double FDP=NormalizeÇift((FrDnPrise+Mesafe*Nokta),5);
int diap=MathRound((FrApPrise-FrDnPrise)/Nokta);
ind_buffer1[0]=FAP;
ind_buffer2[1]=FDP;
Comment("Zaman Çerçevesi="+Zaman Çerçevesi+
"\nApPrise=",FAP,
"\nDnPrise=",FDP,
"\nFraktal Kanal ="
,diap+"Nokta");



dönüş(0);
}
//------------------------------------------------ ------------------------------+
// Fiyat değiştiyse yeniden çizerek yatay bir çizgi arar |
//------------------------------------------------ ------------------------------+
geçersiz LineDn(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise-Distanse*Point,MarketInfo(Symbol(),MODE_DIGITS));
//Yorum(FrPrise);
if(ObjectFind(FrDnNam)==0){
if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrDnPrise=FrPrise;
ObjectDelete(FrDnName);
SetHLine(ClDn,FrDnNam,FrDnPrise,0,1);
WindowRedraw();
dönüş;}
//------------------------------------------------ ------------------------------+
// Fiyat değiştiyse yeniden çizerek yatay bir çizgi arar |
//------------------------------------------------ ------------------------------+
geçersiz LineAp(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_UPPER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise+Mesafe*Nokta,MarketInfo(Symbol(),MODE_DIGITS));
if(ObjectFind(FrApNam)==0){
if(ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrApPrise=FrPrise;
ObjectDelete(FrApName);
SetHLine(ClAp,FrApNam,FrApPrise,0,1);
WindowRedraw();
dönüş;}
//------------------------------------------------ ------------------------------+
//| Açıklama : En yakın fraktal arayın. Fiyat düzeyini döndürür. |
//+------------------------------------------- ------------------------------+
//| Seçenekler: |
//| sy - alet adı ("" veya NULL - geçerli sembol) |
//| tf - zaman çerçevesi ( 0 - mevcut TF) |
//| mod - fraktal tip (MODE_LOWER|MODE_UPPER) |
//+------------------------------------------- ------------------------------+
double FindNearFractal(string sy="0", int tf=0, int modu=MODE_LOWER) {
if (sy=="" || sy=="0") sy=Symbol();
çift f=0;
int d=MarketInfo(sy, MODE_DIGITS), s;
if (d==0) if (StringFind(sy, "JPY")<0) d=4; başka d=2;

for (s=2; s<100; s++) {
f=iFractals(sy, tf, mod, s);
if (f!=0) return(NormalizeDouble(f,d));
}
Print("FindNearFractal(): Fraktal bulunamadı");
dönüş(0);
}

//+------------------------------------------- ------------------------------+
//| Açıklama : Nesne OBJ_HLINE yatay çizgiyi ayarla |
//+------------------------------------------- ------------------------------+
//| Seçenekler: |
//| cl - çizgi rengi |
//| nm - isim ("" - mevcut çubuğun açılma zamanı) |
//| p1 - fiyat seviyesi (0 - Teklif) |
//| st - çizgi stili (0 - basit çizgi) |
//| wd - çizgi genişliği (0 - varsayılan) |
//+------------------------------------------- ------------------------------+
void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) {
if (nm=="") nm=DoubleToStr(Zaman[0], 0);
if (p1<=0) p1=Teklif;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0);
ObjectSet(nm, OBJPROP_PRICE1, p1);
ObjectSet(nm, OBJPROP_COLOR, cl);
ObjectSet(nm, OBJPROP_STYLE , st);
ObjectSet(nm, OBJPROP_WIDTH, wd);
}

Bu gösterge için danışman yazılması gerekmektedir.M1 ve M5 zaman dilimlerinde üst ve alt fiyatları iletir.

 
palomnik :

Alex benimle misin? mql4'te yeniyim.Bu kodu anlamaya çalışıyorum

 #property indicator_chart_window
#property indicator_buffers 2 
extern int TimeFrame= 0 ; //Если=0, то текуший
extern int Distanse= 0 ; //Дистанция линии от фрактала в пунктах
extern string FrApNam= "Ap" ; //Имя линии соотв.Фракталу вверх
extern string FrDnNam= "Dn" ; //Имя линии соотв.Фракталу вниз
extern color ClAp=Blue; //Цвет линии соотв.Фракталу вверх
extern color ClDn=Red; //Цвет линии соотв.Фракталу вниз
extern bool comment= true ; //Разрещение на комментарий
//-----------------------------------------------------------------------------+
double FrPrise,znach1,znach2;
double FrApPrise= 0 ,FrDnPrise= 0 ;
double ind_buffer1[];
double ind_buffer2[];
//+----------------------------------------------------------------------------+
void init()
{ if (TimeFrame== 0 ){TimeFrame= Period ();}
SetIndexBuffer ( 0 ,ind_buffer1); //КОРОБКА

SetIndexBuffer ( 1 ,ind_buffer2);
return ;}
void deinit(){

return ;}


//+----------------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int limit;
double tmp;
int i, j,k;
if (counted_bars< 0 ) return (- 1 );
if (counted_bars> 0 ) counted_bars--;
limit= Bars -counted_bars;
//-----------------------------------------------------------------------------+
LineAp();
LineDn();
double FAP= NormalizeDouble ((FrApPrise-Distanse* Point ), 5 ); //ЗНАЧЕНИЕ
double FDP= NormalizeDouble ((FrDnPrise+Distanse* Point ), 5 );
int diap= MathRound ((FrApPrise-FrDnPrise)/ Point );
ind_buffer1[ 0 ]=FAP;
ind_buffer2[ 1 ]=FDP;
Comment ( "TimeFrame=" +TimeFrame+
"\nApPrise =" ,FAP,
"\nDnPrise =" ,FDP,
"\nFractal Channel ="
,diap+ "Point" );



return ( 0 );
}
//-----------------------------------------------------------------------------+
// Ищет горизонтальную линию по имени перерисовывает если изменилась цена | 
//-----------------------------------------------------------------------------+
void LineDn(){
FrPrise= NormalizeDouble (FindNearFractal( 0 ,TimeFrame,MODE_LOWER),MarketInfo( Symbol (),MODE_DIGITS));
FrPrise= NormalizeDouble (FrPrise-Distanse* Point ,MarketInfo( Symbol (),MODE_DIGITS));
//Comment(FrPrise);
if ( ObjectFind (FrDnNam)== 0 ){
if (ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){ return ;}}
FrDnPrise=FrPrise; 
ObjectDelete (FrDnNam);
SetHLine(ClDn,FrDnNam,FrDnPrise, 0 , 1 );
WindowRedraw();
return ;} 
//-----------------------------------------------------------------------------+
// Ищет горизонтальную линию по имени перерисовывает если изменилась цена | 
//-----------------------------------------------------------------------------+
void LineAp(){
FrPrise= NormalizeDouble (FindNearFractal( 0 ,TimeFrame,MODE_UPPER),MarketInfo( Symbol (),MODE_DIGITS));
FrPrise= NormalizeDouble (FrPrise+Distanse* Point ,MarketInfo( Symbol (),MODE_DIGITS));
if ( ObjectFind (FrApNam)== 0 ){
if (ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){ return ;}}
FrApPrise=FrPrise; 
ObjectDelete (FrApNam); 
SetHLine(ClAp,FrApNam,FrApPrise, 0 , 1 );
WindowRedraw();
return ;}
//-----------------------------------------------------------------------------+ 
//| Описание : Поиск ближайшего фрактала. Возвращает ценовой уровень. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" или NULL - текущий символ) |
//| tf - таймфрейм ( 0 - текущий ТФ) |
//| mode - тип фрактала (MODE_LOWER|MODE_UPPER) |
//+----------------------------------------------------------------------------+
double FindNearFractal( string sy= "0" , int tf= 0 , int mode=MODE_LOWER) {
if (sy== "" || sy== "0" ) sy= Symbol ();
double f= 0 ;
int d=MarketInfo(sy, MODE_DIGITS), s;
if (d== 0 ) if ( StringFind (sy, "JPY" )< 0 ) d= 4 ; else d= 2 ;

for (s= 2 ; s< 100 ; s++) {
f= iFractals (sy, tf, mode, s);
if (f!= 0 ) return ( NormalizeDouble (f, d));
}
Print ( "FindNearFractal(): Фрактал не найден" );
return ( 0 );
}

//+----------------------------------------------------------------------------+
//| Описание : Установка объекта OBJ_HLINE горизонтальная линия |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| cl - цвет линии |
//| nm - наименование ("" - время открытия текущего бара) |
//| p1 - ценовой уровень (0 - Bid) |
//| st - стиль линии (0 - простая линия) |
//| wd - ширина линии (0 - по умолчанию) |
//+----------------------------------------------------------------------------+
void SetHLine( color cl, string nm= "" , double p1= 0 , int st= 0 , int wd= 1 ) {
if (nm== "" ) nm=DoubleToStr(Time[ 0 ], 0 );
if (p1<= 0 ) p1=Bid;
if ( ObjectFind (nm)< 0 ) ObjectCreate (nm, OBJ_HLINE , 0 , 0 , 0 );
ObjectSet(nm, OBJPROP_PRICE1, p1);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_STYLE , st);
ObjectSet(nm, OBJPROP_WIDTH , wd);
}



Надо к данному индикатору написать советник.Передающий верхнюю и нижнюю цены.по М 1 и М 5 таймфреймам. 

SRC'nin ne için olduğunu bilmiyor musunuz? Ayak bezini sil!
 
Bir Expert Advisor'da böyle bir işlev nasıl uygulanır? Bay emirlerinden herhangi birinde TP veya SL tetiklendiğinde, tüm Bay emirleri kapatılmalıdır.
 
David sadece bir fonksiyon değil, bu küçük bir Uzman Danışman.Kısaca kaç sipariş var, kaç tane oldu ve seçimle daha az kapananların bir karşılaştırması olduğunu söyleyin.En kısa zamanda daha detaylı yardımcı olacağım. İndikatörden Expert Advisor'a nasıl veri transfer edeceğimi çözerim.Teknik özellikler yukarıda verilmiş zaten
 
Beyler, değerlerin bir göstergeden danışmana nasıl aktarılacağını anlayan var mı? Lütfen yardım edin kendimi anlamıyorum bir dakika o kadar aslında sorunu anlattım ama biraz sessizlik ((. https://forum.mql4.com/ru/52892/page308)
 
palomnik :
Beyler, değerlerin bir göstergeden danışmana nasıl aktarılacağını anlayan var mı? Lütfen yardım edin kendimi anlamıyorum bir dakika o kadar aslında sorunu anlattım ama biraz sessizlik ((. https://forum.mql4.com/ru/52892/page308)
Birçok farklı yol vardır:

1. Genel bir değişken aracılığıyla .

2. Bir dosya aracılığıyla .

3. iCustom() aracılığıyla .

4. Küresel grafik değişkenleri aracılığıyla.

5. Haritalama . Verileri bir terminalden başka bir terminale aktarmak mümkündür. Veya bir terminalde, MT4 global değişkenlerinin kısıtlamaları olmadan verileri bir pencereden başka bir pencereye aktarın.