[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 308

 
Wie kann ich das neu bearbeitete Skript ausführen, ohne mt4 neu zu starten?
 
Ich versuche es, aber es funktioniert nicht. Ich bekomme eine Menge Fehler im Code((.
 
Möchten Sie etwas mitteilen? )
 

Könnte nützlich sein. Das funktioniert gut!

Drücken Sie im Meta-Editor F5 zum Kompilieren.

Wichtig: Der Meta-Editor muss aus demselben Ordner wie das Terminal gestartet werden.

 

Alex, bist du meinetwegen hier? Ich bin neu bei mql4 und versuche, diesen Code zu verstehen.



#property indicator_chart_window
#Eigenschaft indicator_buffers 2
extern int TimeFrame=0;//Wenn=0, dann der aktuelle
extern int Distanse=0;//Abstand der Linie vom Fraktal in Punkten
extern string FrApNam="Ap";//Name der Linie, die dem Fraktal nach oben entspricht.
extern string FrDnNam="Dn";//Name der Linie entsprechend dem Fraktal nach unten.
extern color ClAp=Blue;//color line entspricht dem Fraktal nach oben.
extern color ClDn=Red;//Farbe der Linie gemäß Fractal Down.
extern bool comment=true;//Erlaubnis zum Kommentieren
//-----------------------------------------------------------------------------+
double FrPrise,znach1,znach2;
double FrApPrise=0,FrDnPrise=0;
double ind_buffer1[];
double ind_buffer2[];
//+----------------------------------------------------------------------------+
void init()
{if(TimeFrame==0){TimeFrame=Period();}
SetIndexPuffer(0,ind_buffer1);//Puffer

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

return;}


//+----------------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int-Grenze;
double tmp;
int i, j,k;
if(counted_bars<0) return(-1);
if(gezählte_Balken>0) gezählte_Balken--;
limit=Balken-gezählt_Balken;
//-----------------------------------------------------------------------------+
LineAp();
LineDn();
double FAP=NormalizeDouble((FrApPrise-Distanse*Point),5);//Normalize
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+"Punkt");



zurück(0);
}
//-----------------------------------------------------------------------------+
// sucht nach einer horizontalen Linie nach Namen, zeichnet neu, wenn sich der Preis ändert |
//-----------------------------------------------------------------------------+
void LineDn(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise-Distance*Point,MarketInfo(Symbol(),MODE_DIGITS));
//Kommentar(FrPrise);
if(ObjectFind(FrDnNam)==0){
if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrDnPrise=FrPrise;
ObjectDelete(FrDnNam);
SetHLine(ClDn,FrDnNam,FrDnPrise,0,1);
WindowRedraw();
return;}
//-----------------------------------------------------------------------------+
// sucht eine horizontale Linie nach Namen, zeichnet sie neu, wenn sich der Preis geändert hat |
//-----------------------------------------------------------------------------+
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;}
//-----------------------------------------------------------------------------+
//| Beschreibung : Suche nach dem nächstgelegenen Fraktal. Gibt ein Preisniveau zurück. |
//+----------------------------------------------------------------------------+
Parameter: //|
//| sy - Instrumentenname ("" oder NULL - aktuelles Symbol) |
//| tf - Zeitrahmen ( 0 - aktueller TF) |
//| Modus - fraktaler Typ (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; sonst d=2;

for (s=2; s<100; s++) {
f=iFractals(sy, tf, mode, s);
if (f!=0) return(NormalizeDouble(f, d))
}
Print("FindNearFractal(): Fraktal nicht gefunden");
zurück(0);
}

//+----------------------------------------------------------------------------+
//| Beschreibung : Objekt OBJ_HLINE horizontale Linie setzen |
//+----------------------------------------------------------------------------+
Parameter: //|
//| cl - Linienfarbe |
//| nm - Name ("" - Eröffnungszeit des aktuellen Balkens) |
//| p1 - Preisniveau (0 - Gebot) |
//| st - Linienart (0 - einfache Linie) |
//| wd - Linienbreite (0 - Standard) |
//+----------------------------------------------------------------------------+
void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) {
if (nm=="") nm=DoubleToStr(Zeit[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);
}

Es ist notwendig, einen Expert Advisor für diesen Indikator zu schreiben, der den oberen und unteren Preis auf den Zeitrahmen М1 und М5 passieren würde.

 
palomnik:

Alex, bist du meinetwegen hier? Ich bin neu bei mql4 und versuche, diesen Code zu verstehen.

#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 таймфреймам. 

Sie wissen nicht, wofür src ist? Löschen Sie Ihr Gekritzel!
 
Wie kann ich diese Funktion in meinem EA implementieren? Wenn TP oder SL bei einer Bay Order ausgelöst wird, sollten alle Bay Orders geschlossen werden.
 
David es ist nicht eine Funktion ist es eine kleine Expert Advisor, in einer Nussschale ist es zu vergleichen, wie viele Aufträge waren und wie viele Aufträge in der Probe geschlossen sind, werde ich in den Details helfen, sobald ich mit Datenübertragung von Indikator zu Expert Advisor befassen, habe ich bereits oben ToR gegeben
 
Ich habe noch nie davon gehört, ich weiß nicht, wie man es benutzt. Ich habe das Problem geschildert, aber ich erhielt nur eine Art Schweigen ((. https://forum.mql4.com/ru/52892/page308 palomnik 23.04.2013 09:56
 
palomnik:
Mister, ist jemand verstehen, wie man Werte von einem Indikator zu einem EA übergeben? Ich brauche Hilfe, ich verstehe es selbst nicht, nur einen Moment und dann ist es vorbei. https://forum.mql4.com/ru/52892/page308 palomnik 23.04.2013 09:56
Es gibt viele verschiedene Möglichkeiten, dies zu tun:

1. Über eine globale Variable.

2. Über Datei.

3. über iCustom().

4. Über die globalen Grafikvariablen.

5. Kartierung. Sie können Daten von einem Terminal zu einem anderen Terminal übertragen. Oder in einem Terminal, um Daten von einem Fenster zu einem anderen Fenster zu übertragen, ohne die globalen Variablen von MT4 zu begrenzen.

Grund der Beschwerde: