Wie programmiert man? - Seite 210

 

Vielen Dank!!! cockeyedcowboy, das war wirklich super!!!

Jetzt ist die Fehlermeldung weg!!

Aber der 2. Indikator wird nicht gezeichnet und ich weiß nicht warum

Puffer_Ma=iMAOnArray(Puffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);

 

Sie haben ein Problem mit dem zweiten Puffer, weil er keine Daten für Berechnungen enthält.

Versuchen Sie, ALLE Elemente in Buffer_Mom zu berechnen, dann Buffer_Ma.

Beispiel:

void start()

{

int counted_bars=IndicatorCounted();

int limit=Bars-counted_bars;

if(counted_bars>0) limit++;

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

{

Buffer_Mom=iMomentum(NULL,Timeframe_Momentum,Periode_Momentum,PRICE_CLOSE,i);

}

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

{

Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);

}

return(0);

}

Viel Glück.

 

Ermitteln des OHLC eines bestimmten Balkens

Kann mir jemand sagen, wie ich den Schlusskurs eines bestimmten Balkens mit MQL-Code herausfinden kann? Kann ich einen Balken über seine Zeit referenzieren?

z.B.: closing_price_of_bar = Close("04:59:00 AM") ... wenn es nur so einfach wäre!

Vielen Dank!

 

Hallo Leute!

ok ich habe ein weiteres großes Problem...

wie kodiere ich diese Bedingung:

Nur beim ersten Mal Long oder Short eingeben

(also wenn ich viele folgende long signal ea geben nur beim ersten mal)

ich würde mich freuen, wenn mir jemand dabei helfen könnte

Dies ist mein einfacher Code für die Kaufbedingung:

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Sadly:
Kann mir jemand sagen, wie ich den Schlusskurs eines bestimmten Balkens mit MQL-Code herausfinden kann? Kann ich einen Balken über seine Zeit referenzieren?

d.h.: closing_price_of_bar = Close("04:59:00 AM") ... wenn es nur so einfach wäre!

Ich danke Ihnen

Versuchen Sie dies:

closing_price_of_bar = iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59"));

 

Kaufen oder Verkaufen

Hallo zusammen,

Ich habe den Buy EA und Sell EA, die immer mehr als eine Position offen sind. Ich würde gerne Hilfe bekommen, wie ich den Code ändern oder modifizieren kann, so dass nur 1(eine) Kaufposition und 1(eine) Verkaufsposition und in 1(einem) Konto möglich ist.

SL und TP werden mit Price Target arbeiten, d.h. wenn der Kaufkurs das Price Target erreicht hat, wird die Position geschlossen. Dasselbe gilt für den Verkaufskurs.

Ich bin dankbar für die Hilfe der Code-Experten in diesem Forum.

Ich danke Ihnen.

=s21=

Dateien:
opensell.mq4  2 kb
 

Kaufen und Verkaufen

Oooops...

Hier ist der Buy EA.

Dateien:
openbuy.mq4  2 kb
 

Hallo, wenn Sie nur eine Bestellung geöffnet haben möchten, können Sie einfach die nächste Bedingung hinzufügen: If (OrdersTotal()==0).

So werden Sie Regeln für BUY Aufträge etwas wie das sein:

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

[/CODE]

So you will not get second-third-... orders opened until you current order open.

dr.house7:
hy folks !

ok i have another big problem...

how to code this condition :

enter long or short only first time

(so if i have many following long signal ea enter only at first time)

i'll pay everyone could help me on this

this is my simple code for buy condition:

[CODE]

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Roger09:
Versuchen Sie dies: closing_price_of_bar = iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59"));

Toll! Ich musste 1 zusätzliche schließende Klammer hinzufügen, um zu verhindern, dass der Interpreter einen Fehler meldet, aber es hat wunderbar funktioniert.

Vielen Dank, Roger09

 
Avalanche2k:
Hallo, wenn Sie nur einen Auftrag geöffnet haben wollen, können Sie einfach die nächste Bedingung hinzufügen: If (OrdersTotal()==0).

Die Regeln für KAUFEN-Bestellungen werden also in etwa so lauten:

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

So erhalten Sie keine zweite-dritte-... Aufträge geöffnet, bis Sie aktuelle Bestellung offen.

Danke Avalanche,

aber das ist keine Lösung für mich, denn ich habe einen TP, ich warte nicht bis zur entgegengesetzten Bedingung

Andere Idee? PM mich, ich werde Sie bezahlen