Wie programmiert man? - Seite 92

 
delvinja:
Hallo Leute, ich habe versucht, für die letzten drei Tage, um diese Expert Advisor zu bekommen, um lange Trades in mt4 ohne Erfolg auszuführen. es führt nur kurze Trades, obwohl das signal_buy ist da. bitte könnte jemand einen Blick auf diesen Code und beheben Sie es für mich oder sagen Sie mir, was zu tun ist. ich bin neu in der Programmierung und baute es von einem Online-Strategie-Builder. danke im Voraus! Der Code ist beigefügt.
double ... = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);[/PHP]

I am not sure about the -3 shift parameter : it shift the curve to the left, so the current bar is undefinited. Try to replace all -3 by 0 to see if the buy orders are triggered.

I would replace

double Var1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Var2 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Var3 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

double Var4 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current + 0);

double Buy1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Buy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

double Sell1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Sell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current + 0);

double CloseBuy1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double CloseBuy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

double CloseSell1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double CloseSell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

by

[PHP]double Buy1_1 = iMA(NULL, 0, 3, 0, MODE_SMA, PRICE_CLOSE, Current);

double Buy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);

double Sell1_1 = Buy1_1;

double Sell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current);

double CloseBuy1_1 = Buy1_1;

double CloseBuy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);

double CloseSell1_1 = Buy1_1;

double CloseSell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);

Bemerkung :

- Var1,2,3,4 werden nicht verwendet.

- CloseBuy1_2 und CloseSell1_2 sind beide gleich: einer ist wahrscheinlich falsch (MODE_LOWER)

 

Brauche Hilfe bei Code

Michel, vielen Dank für deine Hilfe, das hat das Problem perfekt gelöst! Ihr seid die Besten, jetzt kann ich mich endlich etwas ausruhen. Ich werde Sie wissen lassen, wie meine Tests ausfielen.

Ach ja, r u sagen, dass -3 wird nie in der Lage sein, in diesem Expertenberater zu arbeiten? danke nochmals.

 
delvinja:
... oh durch die Art und Weise, r u sagen, dass -3 wird nie in der Lage sein, in diesem Expertenberater zu arbeiten? danke nochmals.

Um die Wahrheit zu sagen, habe ich nie wirklich den Nutzen dieser Verschiebung verstanden: wenn Sie den Wert eines Indikators 3 Bars vor dem aktuellen Bar wissen wollen, verwenden Sie einfach 3 als Verschiebung, aber die letzte; die erste verschiebt nur die Zeichnung der Kurve, und wenn Sie einen negativen Wert verwenden, ist es wie die Vergangenheit die Zukunft kennt...

Wie auch immer, ich würde mich freuen, wenn mir jemand erklären könnte, wie man es benutzt!

Aber um Ihre Frage zu beantworten, versuchen Sie, die genaue Strategie zu kennen, der Sie folgen wollen, woher kommt diese -3 ?

 

hallo

bei diesem Experten würde ich gerne alle sl in letzte Aufträge sl wie tp ändern, aber ich kann es nicht

bitte helfen Sie mir

Dateien:
javadea.mq4  9 kb
 

Was habe ich getan?

Ich brauche Hilfe bei der Kodierung in MT4

Ich habe einige Code unten:

StopLoss=EMAtrend-iClose(NULL,0,1);

TakeProfit=StopLoss

If(EMAshort>EMAlong && EMAshort_prev<EMAlong_prev)

{

OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Ask+StopLoss*Point,Bid+TakeProfit*Point, "Buy at close price",10000,0,Green);

}

If(EMAshortEMAlong_prev)

{

OrderSend(Symbol(),OP_SELL,Lots,Bid,0,StopLoss,Bid+TakeProfit*Point, "Sell at close price",11000,0,Red);

}

Die Idee war:

1. Auftrag zum Schlusskurs eröffnen, wenn die Kriterien erfüllt sind;

2. Ich möchte den EMAtrend zum Stoploss-Level machen;

3. Der Abstand zwischen dem EMAtrend und dem Schlusskurs ist der Abstand für die Gewinnmitnahme vom eröffneten Kurs.

Ich versuche den obigen Code, aber es passiert nichts und es gibt einen Fehler 130.

Bitte helfen Sie mir.

 

Brauche Hilfe bei Code

Hallo zusammen

Ich versuche, eine ea zu kompilieren, aber es kommt mit dem folgenden Fehler:

'TradeSymbol' - expression on global scope not allowed I:\Program Files\MetaTrader - Alpari\experts\TTL.mq4 (65, 34)[/CODE]

Now the part of the ea causing this is right at the start of the code :

string TradeSymbol; TradeSymbol=Symbol();

If I block this out it comes up with errors for the following bit of code :

[CODE] if(TotalTradesThisSymbol(TradeSymbol)==0) { int BS=0,SS=0,BL=0,SL=0; }

if(TotalTradesThisSymbol(TradeSymbol)>0) {

for(cnt=0;cnt<total;cnt++) {

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()== Symbol) {

if(OrderMagicNumber()==11) { BS=OrderTicket(); }

if(OrderMagicNumber()==22) { SS=OrderTicket(); }

if(OrderMagicNumber()==33) { BL=OrderTicket(); }

if(OrderMagicNumber()==44) { SL=OrderTicket(); }

}//end if(OrderSymbol

}//end for

}//end if */

Was ich wissen möchte, ist, ob es einen einfachen Weg gibt, dies zu beheben.

Ich bin nicht gut im Kodieren, nur Kopieren und Einfügen.

Vielen Dank im Voraus

Basza

 
basza:
Hallo zusammen

Ich versuche, eine ea zu kompilieren, aber es kommt mit dem folgenden Fehler:

'TradeSymbol' - expression on global scope not allowed I:\Program Files\MetaTrader - Alpari\experts\TTL.mq4 (65, 34)[/CODE]

Now the part of the ea causing this is right at the start of the code :

string TradeSymbol; TradeSymbol=Symbol();

If I block this out it comes up with errors for the following bit of code :

[CODE] if(TotalTradesThisSymbol(TradeSymbol)==0) { int BS=0,SS=0,BL=0,SL=0; }

if(TotalTradesThisSymbol(TradeSymbol)>0) {

for(cnt=0;cnt<total;cnt++) {

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()== Symbol) {

if(OrderMagicNumber()==11) { BS=OrderTicket(); }

if(OrderMagicNumber()==22) { SS=OrderTicket(); }

if(OrderMagicNumber()==33) { BL=OrderTicket(); }

if(OrderMagicNumber()==44) { SL=OrderTicket(); }

}//end if(OrderSymbol

}//end for

}//end if */

Was ich wissen möchte, ist, ob es einen einfachen Weg gibt, dies zu beheben.

Ich bin nicht gut im Programmieren, nur im Kopieren und Einfügen.

Vielen Dank im Voraus

Basza

Sie können TradeSymbol als String auf global scoop definieren, aber dort können Sie die Funktion Symbol() nicht auswerten. Ersetzen Sie also alle "TradeSymbol" durch "Symbol()", oder weisen Sie den Wert in der init() oder start() Funktion wie folgt zu:

void Init(){TradeSymbol=Symbol();}
 

Hilfe bei der Programmierung

Hallo, ich habe versucht, einen Ea zu programmieren, und ich habe Ihren Kurs verfolgt (sehr interessant!)

Ich weiß ziemlich gut, wie man in Java und etwas C++ programmiert

Ich habe versucht, ein Ea mit Brain-Trend-Indikatoren zu programmieren, die Idee dahinter ist

wenn brainTrend2stop und braintrend1stop DOTs vorhanden sind kaufen (und umgekehrt)

aber wenn ich die icustom Funktion wie folgt aufrufe

BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1) ;

ich erhalte nur den Wert des Indikators im aktuellen Bar

gibt es eine möglichkeit, dies boolesch zu machen? ich würde gerne eine funktion schreiben wie

buy=true

BuyCondition = (IndikatorName1=true && IndikatorName2=true);

Kann mir jemand helfen, bitte, bitte, bitte?

 

Kontrolle, ob eine Entry Order ausgeführt wird...

Ich habe eine EA, die öffnen und verwalten die Position, aber manchmal geben die indikator das gleiche Signal mehrere und die EA öffnen jedes Mal dieses Signal kommt eine neue Position - aber ich will nicht eine zweite oder dritte und so weiter und auf Position, ich will nur die erste - ist es möglich, dass die EA prüft die offene Position auf der Grundlage der magischen Zahl und Paar zu vermeiden, wie mehrere Einträge?

 
payback:
Hallo, ich habe versucht, ein Ea zu programmieren, und ich habe Ihren Kurs verfolgt (sehr interessant!)

Ich weiß ziemlich gut, wie man in Java und etwas C++ programmiert

Ich habe versucht, ein ea mit brain trend Indikatoren zu programmieren, die Idee dahinter ist

wenn brainTrend2stop und braintrend1stop DOTs vorhanden sind kaufen (und umgekehrt)

aber wenn ich die icustom Funktion wie folgt aufrufe

BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1) ;

ich erhalte nur den Wert des Indikators im aktuellen Bar

gibt es eine möglichkeit, dies boolesch zu machen? ich würde gerne eine funktion schreiben wie

buy=true

BuyCondition = (IndikatorName1=true && IndikatorName2=true);

Kann mir jemand helfen, bitte, bitte, bitte?
BuyCondition = BuyValueCurrent1 != EMPTY_VALUE && BuyValueCurrent2 != EMPTY_VALUE;
Grund der Beschwerde: