Hilfe bei der Codierung - Seite 351

 
mladen:
stevenpun Dafür wäre es am einfachsten, dem Indikator einen Puffer für die Neigungsrichtung hinzuzufügen oder einen anderen MACD zu verwenden, der diese Neigung bereits in einem Puffer gelöst hat

Wie wäre es mit diesem https://www.mql5.com/en/forum/178018/page67

Aber das Problem, was sollte ich brauchen, um in den Code zu setzen, habe ich google viele ea aber nicht Erfolg, um einige Beispiel zu finden.

Bitte zeigen Sie mir ein Beispiel , danke für die Hilfe .

 
stevenpun:
Wie wäre es mit dieser https://www.mql5.com/en/forum/178018/page67

Aber das Problem, was sollte ich brauchen, um in den Code zu setzen, habe ich google viele ea aber nicht Erfolg, einige Beispiel zu finden.

Bitte zeigen Sie mir ein Beispiel, danke für Ihre Hilfe.

stevenpun

Das wäre ein gutes Beispiel zu verwenden.

Lesen Sie die "Farben" Puffer und wenn der Wert in ihm ändert sich von -1 bis 1 ist es ein Signal zu kaufen, und wenn der Wert ändert sich von 1 bis -1 ist es ein Signal für den Verkauf (die "von" ist der vorherige Wert der Farben Puffer und "bis" ist der aktuelle Wert, oder wenn Sie wollen, arbeiten mit geschlossenen Bars nur, "von" ist 2 Bars vor und "bis" ist 1 bar vor)

 

Hallo,

ich bin neu hier. Ich möchte ein Rechteck-Objekt zu aktualisieren, aber nicht wissen, wie. Der Code unten ich verwendet, um Objekt Rechtecke zu erstellen, wenn EMAs gekreuzt. Diese Rechtecke müssen beendet werden, wenn der Preis zurück und berühren Sie es. Wie kann man das machen?

Vielen Dank im Voraus.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 clrLime

#property indicator_width1 2

#property indicator_color2 clrMagenta

#property indicator_width2 2

extern int EMA1 = 3;

extern int EMA2 = 21;

extern int EMA3 = 63;

extern double arrowDistance = 0.0003;

extern color upRectColor = clrYellow;

extern color dnRectColor = clrDodgerBlue;

extern color touchRectColor = clrDarkGray;

//---

extern double rectHigh = 0.0001;

extern int rectDays = 3;

extern int bars_limit = 2000;

extern bool showRectangle = true;

double upArrow[];

double dnArrow[];

double prev2EMA1, prev2EMA2, prev2EMA3;

double prevEMA1, prevEMA2, prevEMA3;

double curEMA1, curEMA2, curEMA3;

double prevOpenPrc, prevClosePrc, prevLowPrc, prevHighPrc;

string objRectName;

string rectArray[];

string indiName = "Emac";

int rectValidity = 0;

int arrayMaxAmounts = 99999;

int arrayCurAmount = 0;

int arrayLastAmount = 0;

//+------------------------------------------------------------------+

//| INIT() |

//+------------------------------------------------------------------+

int init() {

if (Period() != PERIOD_H1) {

Alert("Use only @ TF: H1");

return(0);

}

ArrayResize(rectArray,arrayMaxAmounts,arrayMaxAmounts);

IndicatorBuffers(2);

SetIndexBuffer(0,upArrow);

SetIndexBuffer(1,dnArrow);

SetIndexStyle(0,DRAW_ARROW);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(0,233);

SetIndexArrow(1,234);

SetIndexEmptyValue(0,0.0);

SetIndexEmptyValue(1,0.0);

SetIndexLabel(0,"Up");

SetIndexLabel(1,"Dn");

return(0);

}

//+------------------------------------------------------------------+

//| DEINIT() |

//+------------------------------------------------------------------+

int deinit() {

int k=0;

while (k<ObjectsTotal()) {

string objname = ObjectName(k);

if (StringSubstr(objname,0,StringLen("Emac")) == "Emac")

ObjectDelete(objname);

else

k++;

}

return(0);

}

//+------------------------------------------------------------------+

//| START() |

//+------------------------------------------------------------------+

int start() {

if (Period() != PERIOD_H1) {

Alert("Use only @ TF: H1");

return(0);

}

int limit,i,k;

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---

if (limit>bars_limit-1 && bars_limit!=0) limit=bars_limit-1;

if (Bars<EMA1 || Bars<EMA2 || Bars0 && bars_limit0 && bars_limit0 && bars_limit<EMA3)) {

Alert("Adjust limit settings or put more bars on your chart!");

return(0);

}

//---

for (i=0; i<limit; i++) {

prev2EMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i+2);

prev2EMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i+2);

prev2EMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i+2);

prevEMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i+1);

prevEMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i+1);

prevEMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i+1);

curEMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i);

curEMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i);

curEMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i);

prevOpenPrc = iOpen(NULL,0,i+1);

prevClosePrc = iClose(NULL,0,i+1);

prevLowPrc = iLow(NULL,0,i+1);

prevHighPrc = iHigh(NULL,0,i+1);

rectValidity = rectDays*86400;

if ( (prev2EMA1=prevEMA2)&&(curEMA1>curEMA2)&&(prevEMA2>=prevEMA3)&&(curEMA2>curEMA3) ) { // up

upArrow = prevLowPrc - arrowDistance;

if (showRectangle == true) {

//----------------------- Draw Rectangle ----------------------

objRectName = StringConcatenate(indiName,"_",FuncPeriodToStr(Period()),"_",DoubleToStr(Time,0));

if (ObjectFind(objRectName) == -1) { // not exists

ObjectCreate(objRectName, OBJ_RECTANGLE, 0,Time,prevLowPrc,Time+rectValidity,prevLowPrc+rectHigh);

ObjectSet(objRectName, OBJPROP_COLOR, upRectColor);

ObjectSet(objRectName, OBJPROP_WIDTH, 0);

ObjectSet(objRectName, OBJPROP_STYLE, STYLE_SOLID);

//--- put information to Array ---

arrayCurAmount = ArraySize(rectArray);

rectArray[arrayCurAmount] = StringConcatenate(objRectName,"$up$",Time,"$",prevClosePrc,"$0"); // 0=new, not yet touched

} // if

} // if

} // if

if ( (prev2EMA1>prev2EMA2)&&(prevEMA1<=prevEMA2)&&(curEMA1<curEMA2)&&(prevEMA2<=prevEMA3)&&(curEMA2<curEMA3) ) { // down

dnArrow = prevHighPrc + arrowDistance;

if (showRectangle == true) {

//----------------------- Draw Rectangle ----------------------

objRectName = StringConcatenate(indiName,"_",FuncPeriodToStr(Period()),"_",DoubleToStr(Time,0));

if (ObjectFind(objRectName) == -1) { // not exists

ObjectCreate(objRectName, OBJ_RECTANGLE, 0, Time,prevHighPrc,Time+rectValidity,prevHighPrc-rectHigh);

ObjectSet(objRectName, OBJPROP_COLOR, dnRectColor);

ObjectSet(objRectName, OBJPROP_WIDTH, 0);

ObjectSet(objRectName, OBJPROP_STYLE, STYLE_SOLID);

//--- put information to Array ---

arrayCurAmount = ArraySize(rectArray);

rectArray[arrayCurAmount] = StringConcatenate(objRectName,"$dn$",Time,"$",prevClosePrc,"$0"); // 0=new, not yet touched

} // if

} // if

} // if

} // for

//----------------------- Edit Rectangle, change time2 & color, if price touched ----------------------

return(0);

} // start

//+------------------------------------------------------------------+

void DelObjects(string id) {

int ot1=ObjectsTotal();

while(ot1>=0) {

if (StringFind(ObjectName(ot1),id,0)>-1) {

ObjectDelete(ObjectName(ot1));

}

ot1--;

}

return;

}

//+------------------------------------------------------------------+

string FuncPeriodToStr(int thePeriod) {

switch(thePeriod) {

case 1: return("M1");

case 5: return("M5");

case 15: return("M15");

case 30: return("M30");

case 60: return("H1");

case 240: return("H4");

case 1440: return("D1");

case 10080: return("W1");

case 43200: return("MN1");

default: return("MN1");

}

}

//+------------------------------------------------------------------+

 

Wie kommuniziert man zwischen zwei oder mehreren EAs?

 

Der newBie's versucht dies auf MT4 build 670 zu entwickeln. Help ~

Laden Sie die 'Three Moving Averages' Trading Robot (Expert Advisor) für MetaTrader 5 in MetaTrader Market?

Ich mag das, weil ich K.I.S.S. mag (keep it simple stupid)

Ich bin ein Neuling und ich möchte dies zu entwickeln.

(1. Version_01)

Wenn es läuft, platziert es die Position sofort, sobald EA eingeschaltet ist.

Es ist wie Reverse Engineering von .ex5 zu erstellen .mq4.

(2. version_02)

Visualisieren Sie auf demselben Chart die wöchentlichen R & S, die von Zig-Zag gefunden werden.

(3. version_03)

Logik hinzufügen,

--- nicht über oder unter 20 Pips der Trendlinie einsteigen.

Löschen Sie die Position bei 20 Pips Abstand zum wöchentlichen R & S.

Ihre Hilfe wird dankbar sein ~

Vielen Dank im Voraus ~

 

cosmiclifeform, es ist komisch, dass ich nicht bekommen konnte die Nice TraderEA, um Backtest seit damals, so konnte ich nicht optimiert, ich habe getan, dass auf alpari Demo und ista forex, die gleiche....it halten auf mich leer result.Can u bitte sagen Sie mir Tipps, die Sie verwenden, um Backtest es.

cosmiclifeform:
Hallo Mastercash,

Ich war in der Lage, den NiceTrader EA herunterzuladen und im Strategy Tester ohne Probleme auszuführen.

Ich habe nur die Standardeinstellungen verwendet und nichts geändert... und habe keine Fehlermeldungen erhalten.

Ich habe nicht versucht, es in Echtzeit auf meiner Demo laufen zu lassen...aber dieser EA funktioniert gut mit dem Strategy Tester. Siehe angehängten Chart...

Erhalten Sie irgendwelche Log-Fehlermeldungen oder andere Hinweise, warum der EA bei Ihnen nicht funktioniert...?

Hoffentlich hilft das,

Robert

 
Mastercash:
cosmiclifeform, es ist komisch, dass ich den Nice TraderEA seither nicht mehr zum Backtest bekommen konnte, also konnte ich ihn nicht optimieren, ich habe das auf alpari demo und ista forex gemacht, das gleiche....it gibt mir immer wieder ein leeres Ergebnis.Kannst du mir bitte sagen, welche Tipps du zum Backtest benutzt.

Hallo Mastercash,

Ich habe den EA auf einem FXDD-Demokonto ausgeführt... und nichts Besonderes getan... ich habe den EA einfach im Strategy Tester mit den Standardeinstellungen ausgeführt.

Ich wünschte, ich könnte mehr helfen...aber ohne spezifische Hinweise (Fehlerprotokolle, Screenshots und andere Bedingungen) ist es unmöglich herauszufinden, warum Sie leere Ergebnisse erhalten.

Alles, was ich empfehlen kann, ist...

Probieren Sie zunächst einen guten EA im Testprogramm aus, von dem Sie wissen, dass er gut funktioniert.

Damit stellen Sie sicher, dass sowohl Ihre Demokonten als auch Ihre Verfahren in Ordnung sind.

Vergewissern Sie sich zunächst, dass alles so funktioniert, wie es soll.

Dann probieren Sie Ihren Nice TraderEA aus...und schreiben Sie genau auf, was passiert. Selbst ein leerer Bildschirm sollte Protokolle zum Überprüfen enthalten.

Versuchen Sie, überall PRINT- und COMMENT-Anweisungen hinzuzufügen... und überprüfen Sie dann Ihre Protokolle erneut... sowohl auf der Registerkarte EA als auch auf der Registerkarte Journal...

Auch Ihre COMMENT-Anweisungen werden auf dem Bildschirm angezeigt... Sie sollten also tatsächlich sehen, ob Ihr EA funktioniert oder nicht.

Die Quintessenz, um gute Hilfe bei der Codierung zu bekommen...

Ist es, die meisten Hinweise zu geben, die Sie finden können, was mit Ihrem EA passiert...

Versuchen Sie weiterhin alles Mögliche... und lassen Sie uns die Ergebnisse wissen.

Passen Sie auf sich auf,

Robert

 
apprentice coder:
Wie kann man zwischen zwei oder mehr EAs kommunizieren?

Wenn Sie meinen, ob es eine Funktion oder eine Reihe von Funktionen für das gewidmet ist, dann die Antwort ist, gibt es n so etwas.

Ich habe eine ganze Reihe von Versuchen gesehen, und bisher hat keiner dieser Wege in allen Situationen funktioniert. Außer einer. Aber eine davon habe ich erfunden, und da die Idee so einfach ist, dass ich immer noch nicht glauben kann, dass niemand daran gedacht hat (sie ermöglicht sogar die Kommunikation von EAs, die sich nicht am selben Ort befinden, und verwendet dafür keine API), behalte ich diese Lösung für mich (in diesem Fall warte ich darauf, dass jemand auf dieselbe Idee kommt)

Versuchen Sie einfach, über die erwarteten Grenzen hinaus zu denken

 
mladen:
Wenn Sie meinen, ob es eine Funktion oder eine Reihe von Funktionen gibt, die dafür vorgesehen sind, dann ist die Antwort, dass es so etwas nicht gibt.

Ich habe schon einige Versuche gesehen, und bisher hat keiner der Wege, die ich gesehen habe, in allen Situationen funktioniert. Außer einer. Aber eine ist von mir erfunden worden, und da die Idee so einfach ist, dass ich immer noch nicht glauben kann, dass niemand daran gedacht hat (sie ermöglicht sogar die Kommunikation von EAs, die sich nicht am selben Ort befinden, und verwendet dafür keine API), behalte ich diese Lösung für mich (in diesem Fall warte ich darauf, dass jemand auf dieselbe Idee kommt)

Versuchen Sie einfach, über die erwarteten Grenzen hinaus zu denken.

Ich weiß, was Sie meinen: Ideen sind manchmal viel mehr wert als die Art und Weise, wie sie danach umgesetzt werden. Danke

 

hallo,

liebe mladen, ich habe eine kleine Bitte an Dich - könntest Du die ganzen Infos, die der unten angehängte Indikator in der linken oberen Ecke anzeigt, abschalten?

vielen Dank im Voraus ;-)

Dateien: